From e377c91601503772340c5b6e23ca7d0ed65c9401 Mon Sep 17 00:00:00 2001 From: Hawk Date: Sun, 29 Dec 2024 21:01:18 +0100 Subject: [PATCH] Part 4 --- resources/[sna]/sna-alpr/client/client.js | 51 + resources/[sna]/sna-alpr/documentation.url | 2 + resources/[sna]/sna-alpr/fxmanifest.lua | 9 + resources/[sna]/sna-alpr/server/server.js | 15880 ++++++++++ resources/[sna]/sna-call911/client/client.js | 53 + resources/[sna]/sna-call911/documentation.url | 2 + resources/[sna]/sna-call911/fxmanifest.lua | 9 + resources/[sna]/sna-call911/server/server.js | 24355 +++++++++++++++ resources/[sna]/sna-live-map/client/client.js | 305 + resources/[sna]/sna-live-map/fxmanifest.lua | 9 + resources/[sna]/sna-live-map/server/server.js | 21939 ++++++++++++++ resources/[sna]/sna-sync/client/client.js | 145 + resources/[sna]/sna-sync/documentation.url | 2 + resources/[sna]/sna-sync/fxmanifest.lua | 15 + .../[sna]/sna-sync/nui/alert-38484668.js | 1 + .../nui/authentication-screen-743d522a.js | 1 + .../nui/call-911-attach-screen-3c912936.js | 6 + .../sna-sync/nui/fetch.client-5aab1c76.js | 1 + .../[sna]/sna-sync/nui/index-093e64e9.css | 1 + .../[sna]/sna-sync/nui/index-f45b8810.js | 61 + resources/[sna]/sna-sync/nui/index.html | 1 + .../[sna]/sna-sync/nui/label-979d47e9.js | 1 + .../nui/set-status-screen-6a6b1703.js | 1 + resources/[sna]/sna-sync/server/server.js | 24852 ++++++++++++++++ resources/[ss]/ss-garage/.gitattributes | 2 + resources/[ss]/ss-garage/README.md | 80 + .../[ss]/ss-garage/client/cl_functions.lua | 313 + resources/[ss]/ss-garage/client/cl_main.lua | 65 + resources/[ss]/ss-garage/config.lua | 610 + resources/[ss]/ss-garage/fxmanifest.lua | 35 + .../[ss]/ss-garage/html/img/caears24.png | Bin 0 -> 338342 bytes resources/[ss]/ss-garage/html/img/default.png | Bin 0 -> 605972 bytes .../[ss]/ss-garage/html/img/motelgarage.png | Bin 0 -> 375715 bytes .../[ss]/ss-garage/html/img/pillboxgarage.png | Bin 0 -> 371101 bytes .../[ss]/ss-garage/html/img/sapcounsel.png | Bin 0 -> 333978 bytes resources/[ss]/ss-garage/html/index.html | 54 + resources/[ss]/ss-garage/html/script.js | 144 + resources/[ss]/ss-garage/html/style.css | 64 + resources/[ss]/ss-garage/locales/ar.lua | 39 + resources/[ss]/ss-garage/locales/da.lua | 39 + resources/[ss]/ss-garage/locales/de.lua | 39 + resources/[ss]/ss-garage/locales/en.lua | 36 + resources/[ss]/ss-garage/locales/es.lua | 39 + resources/[ss]/ss-garage/locales/et.lua | 39 + resources/[ss]/ss-garage/locales/fa.lua | 39 + resources/[ss]/ss-garage/locales/fi.lua | 39 + resources/[ss]/ss-garage/locales/fr.lua | 39 + resources/[ss]/ss-garage/locales/ge.lua | 39 + resources/[ss]/ss-garage/locales/it.lua | 39 + resources/[ss]/ss-garage/locales/nl.lua | 39 + resources/[ss]/ss-garage/locales/pt-br.lua | 39 + resources/[ss]/ss-garage/locales/pt.lua | 39 + resources/[ss]/ss-garage/locales/ro.lua | 39 + resources/[ss]/ss-garage/locales/sk.lua | 39 + resources/[ss]/ss-garage/locales/sv.lua | 39 + resources/[ss]/ss-garage/locales/tr.lua | 39 + .../[ss]/ss-garage/server/sv_functions.lua | 53 + resources/[ss]/ss-garage/server/sv_main.lua | 144 + resources/[ss]/ss-jobcenter/README.md | 3 + .../[ss]/ss-jobcenter/client/cl_main.lua | 95 + resources/[ss]/ss-jobcenter/config.lua | 139 + resources/[ss]/ss-jobcenter/fxmanifest.lua | 29 + .../[ss]/ss-jobcenter/html/img/garbage.jpg | Bin 0 -> 164733 bytes .../[ss]/ss-jobcenter/html/img/garderner.png | Bin 0 -> 3127189 bytes resources/[ss]/ss-jobcenter/html/img/taxi.jpg | Bin 0 -> 103845 bytes .../[ss]/ss-jobcenter/html/img/trucking.png | Bin 0 -> 2255414 bytes resources/[ss]/ss-jobcenter/html/index.html | 35 + resources/[ss]/ss-jobcenter/html/script.js | 84 + resources/[ss]/ss-jobcenter/html/style.css | 18 + .../[ss]/ss-jobcenter/server/sv_main.lua | 35 + 70 files changed, 90403 insertions(+) create mode 100644 resources/[sna]/sna-alpr/client/client.js create mode 100644 resources/[sna]/sna-alpr/documentation.url create mode 100644 resources/[sna]/sna-alpr/fxmanifest.lua create mode 100644 resources/[sna]/sna-alpr/server/server.js create mode 100644 resources/[sna]/sna-call911/client/client.js create mode 100644 resources/[sna]/sna-call911/documentation.url create mode 100644 resources/[sna]/sna-call911/fxmanifest.lua create mode 100644 resources/[sna]/sna-call911/server/server.js create mode 100644 resources/[sna]/sna-live-map/client/client.js create mode 100644 resources/[sna]/sna-live-map/fxmanifest.lua create mode 100644 resources/[sna]/sna-live-map/server/server.js create mode 100644 resources/[sna]/sna-sync/client/client.js create mode 100644 resources/[sna]/sna-sync/documentation.url create mode 100644 resources/[sna]/sna-sync/fxmanifest.lua create mode 100644 resources/[sna]/sna-sync/nui/alert-38484668.js create mode 100644 resources/[sna]/sna-sync/nui/authentication-screen-743d522a.js create mode 100644 resources/[sna]/sna-sync/nui/call-911-attach-screen-3c912936.js create mode 100644 resources/[sna]/sna-sync/nui/fetch.client-5aab1c76.js create mode 100644 resources/[sna]/sna-sync/nui/index-093e64e9.css create mode 100644 resources/[sna]/sna-sync/nui/index-f45b8810.js create mode 100644 resources/[sna]/sna-sync/nui/index.html create mode 100644 resources/[sna]/sna-sync/nui/label-979d47e9.js create mode 100644 resources/[sna]/sna-sync/nui/set-status-screen-6a6b1703.js create mode 100644 resources/[sna]/sna-sync/server/server.js create mode 100644 resources/[ss]/ss-garage/.gitattributes create mode 100644 resources/[ss]/ss-garage/README.md create mode 100644 resources/[ss]/ss-garage/client/cl_functions.lua create mode 100644 resources/[ss]/ss-garage/client/cl_main.lua create mode 100644 resources/[ss]/ss-garage/config.lua create mode 100644 resources/[ss]/ss-garage/fxmanifest.lua create mode 100644 resources/[ss]/ss-garage/html/img/caears24.png create mode 100644 resources/[ss]/ss-garage/html/img/default.png create mode 100644 resources/[ss]/ss-garage/html/img/motelgarage.png create mode 100644 resources/[ss]/ss-garage/html/img/pillboxgarage.png create mode 100644 resources/[ss]/ss-garage/html/img/sapcounsel.png create mode 100644 resources/[ss]/ss-garage/html/index.html create mode 100644 resources/[ss]/ss-garage/html/script.js create mode 100644 resources/[ss]/ss-garage/html/style.css create mode 100644 resources/[ss]/ss-garage/locales/ar.lua create mode 100644 resources/[ss]/ss-garage/locales/da.lua create mode 100644 resources/[ss]/ss-garage/locales/de.lua create mode 100644 resources/[ss]/ss-garage/locales/en.lua create mode 100644 resources/[ss]/ss-garage/locales/es.lua create mode 100644 resources/[ss]/ss-garage/locales/et.lua create mode 100644 resources/[ss]/ss-garage/locales/fa.lua create mode 100644 resources/[ss]/ss-garage/locales/fi.lua create mode 100644 resources/[ss]/ss-garage/locales/fr.lua create mode 100644 resources/[ss]/ss-garage/locales/ge.lua create mode 100644 resources/[ss]/ss-garage/locales/it.lua create mode 100644 resources/[ss]/ss-garage/locales/nl.lua create mode 100644 resources/[ss]/ss-garage/locales/pt-br.lua create mode 100644 resources/[ss]/ss-garage/locales/pt.lua create mode 100644 resources/[ss]/ss-garage/locales/ro.lua create mode 100644 resources/[ss]/ss-garage/locales/sk.lua create mode 100644 resources/[ss]/ss-garage/locales/sv.lua create mode 100644 resources/[ss]/ss-garage/locales/tr.lua create mode 100644 resources/[ss]/ss-garage/server/sv_functions.lua create mode 100644 resources/[ss]/ss-garage/server/sv_main.lua create mode 100644 resources/[ss]/ss-jobcenter/README.md create mode 100644 resources/[ss]/ss-jobcenter/client/cl_main.lua create mode 100644 resources/[ss]/ss-jobcenter/config.lua create mode 100644 resources/[ss]/ss-jobcenter/fxmanifest.lua create mode 100644 resources/[ss]/ss-jobcenter/html/img/garbage.jpg create mode 100644 resources/[ss]/ss-jobcenter/html/img/garderner.png create mode 100644 resources/[ss]/ss-jobcenter/html/img/taxi.jpg create mode 100644 resources/[ss]/ss-jobcenter/html/img/trucking.png create mode 100644 resources/[ss]/ss-jobcenter/html/index.html create mode 100644 resources/[ss]/ss-jobcenter/html/script.js create mode 100644 resources/[ss]/ss-jobcenter/html/style.css create mode 100644 resources/[ss]/ss-jobcenter/server/sv_main.lua diff --git a/resources/[sna]/sna-alpr/client/client.js b/resources/[sna]/sna-alpr/client/client.js new file mode 100644 index 0000000..6f98582 --- /dev/null +++ b/resources/[sna]/sna-alpr/client/client.js @@ -0,0 +1,51 @@ +"use strict"; + +// integrations/alpr/client/client.ts +onNet("sn:cadBoloResults" /* ALPRCadBoloResults */, (plate, body) => { + if (!body || body === "failed") + return; + if (body.bolos.length > 0) { + emit("sna-sync:create-notification" /* CreateNotification */, { + title: "Active Bolo Notice", + message: `${plate} has an active BOLO. Open SnailyCAD for more details.` + }); + } +}); +onNet("sn:cadPlateResults" /* ALPRCadPlateResults */, (plate, body) => { + var _a, _b, _c, _d; + if (!body || body === "failed") { + return emit("sna-sync:create-notification" /* CreateNotification */, { + message: "Unable to fetch plate search results: failed to fetch.", + title: "Plate Search Results" + }); + } + const [vehicle] = body; + if (!vehicle) { + return emit("sna-sync:create-notification" /* CreateNotification */, { + message: `Plate is not registered: ${plate}`, + title: "Plate Search Results" + }); + } + const owner = vehicle.citizen ? `${vehicle.citizen.name} ${vehicle.citizen.surname}` : "Unknown"; + const message = [ + `
  • Plate: ${plate}
  • `, + `
  • Model: ${vehicle.model.value.value}
  • `, + `
  • Color: ${vehicle.color}
  • `, + `
  • VIN Number: ${vehicle.vinNumber}
  • `, + `
  • Owner: ${owner}
  • ` + ]; + emit("sna-sync:create-notification" /* CreateNotification */, { + message: message.join("\n"), + title: "Plate Search Results", + timeout: 17e3 + }); + const warrants = ((_b = (_a = vehicle.citizen) == null ? void 0 : _a.warrants) == null ? void 0 : _b.filter((v) => v.status === "ACTIVE")) ?? []; + const hasWarrants = warrants.length > 0; + if (hasWarrants) { + const citizenFullName = `${(_c = vehicle.citizen) == null ? void 0 : _c.name} ${(_d = vehicle.citizen) == null ? void 0 : _d.surname}`; + emit("sna-sync:create-notification" /* CreateNotification */, { + title: "Active Warrants Notice", + message: `This vehicle - ${citizenFullName} - owner has active warrants.` + }); + } +}); diff --git a/resources/[sna]/sna-alpr/documentation.url b/resources/[sna]/sna-alpr/documentation.url new file mode 100644 index 0000000..9bfc2b4 --- /dev/null +++ b/resources/[sna]/sna-alpr/documentation.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://docs.snailycad.org/docs/fivem-integrations/scripts/sna-alpr diff --git a/resources/[sna]/sna-alpr/fxmanifest.lua b/resources/[sna]/sna-alpr/fxmanifest.lua new file mode 100644 index 0000000..875f192 --- /dev/null +++ b/resources/[sna]/sna-alpr/fxmanifest.lua @@ -0,0 +1,9 @@ +fx_version "cerulean" +game "gta5" + +author "Casper Iversen" +description "ALPR integration with support for Wraith ARS 2X" +version "0.13.1" + +server_scripts {"server/server.js"} +client_scripts {"client/client.js"} diff --git a/resources/[sna]/sna-alpr/server/server.js b/resources/[sna]/sna-alpr/server/server.js new file mode 100644 index 0000000..2a2e908 --- /dev/null +++ b/resources/[sna]/sna-alpr/server/server.js @@ -0,0 +1,15880 @@ +"use strict"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __accessCheck = (obj, member, msg) => { + if (!member.has(obj)) + throw TypeError("Cannot " + msg); +}; +var __privateGet = (obj, member, getter) => { + __accessCheck(obj, member, "read from private field"); + return getter ? getter.call(obj) : member.get(obj); +}; +var __privateAdd = (obj, member, value) => { + if (member.has(obj)) + throw TypeError("Cannot add the same private member more than once"); + member instanceof WeakSet ? member.add(obj) : member.set(obj, value); +}; +var __privateSet = (obj, member, value, setter) => { + __accessCheck(obj, member, "write to private field"); + setter ? setter.call(obj, value) : member.set(obj, value); + return value; +}; +var __privateMethod = (obj, member, method) => { + __accessCheck(obj, member, "access private method"); + return method; +}; + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/symbols.js +var require_symbols = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/symbols.js"(exports, module2) { + module2.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"), + kHeadersList: Symbol("headers list"), + 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"), + 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"), + 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"), + kHTTP2BuildRequest: Symbol("http2 build request"), + kHTTP1BuildRequest: Symbol("http1 build request"), + kHTTP2CopyHeaders: Symbol("http2 copy headers"), + kHTTPConnVersion: Symbol("http connection version") + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/errors.js +var require_errors = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/errors.js"(exports, module2) { + "use strict"; + var UndiciError = class extends Error { + constructor(message) { + super(message); + this.name = "UndiciError"; + this.code = "UND_ERR"; + } + }; + var ConnectTimeoutError = class _ConnectTimeoutError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _ConnectTimeoutError); + this.name = "ConnectTimeoutError"; + this.message = message || "Connect Timeout Error"; + this.code = "UND_ERR_CONNECT_TIMEOUT"; + } + }; + var HeadersTimeoutError = class _HeadersTimeoutError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _HeadersTimeoutError); + this.name = "HeadersTimeoutError"; + this.message = message || "Headers Timeout Error"; + this.code = "UND_ERR_HEADERS_TIMEOUT"; + } + }; + var HeadersOverflowError = class _HeadersOverflowError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _HeadersOverflowError); + this.name = "HeadersOverflowError"; + this.message = message || "Headers Overflow Error"; + this.code = "UND_ERR_HEADERS_OVERFLOW"; + } + }; + var BodyTimeoutError = class _BodyTimeoutError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _BodyTimeoutError); + this.name = "BodyTimeoutError"; + this.message = message || "Body Timeout Error"; + this.code = "UND_ERR_BODY_TIMEOUT"; + } + }; + var ResponseStatusCodeError = class _ResponseStatusCodeError extends UndiciError { + constructor(message, statusCode, headers, body) { + super(message); + Error.captureStackTrace(this, _ResponseStatusCodeError); + this.name = "ResponseStatusCodeError"; + this.message = message || "Response Status Code Error"; + this.code = "UND_ERR_RESPONSE_STATUS_CODE"; + this.body = body; + this.status = statusCode; + this.statusCode = statusCode; + this.headers = headers; + } + }; + var InvalidArgumentError = class _InvalidArgumentError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _InvalidArgumentError); + this.name = "InvalidArgumentError"; + this.message = message || "Invalid Argument Error"; + this.code = "UND_ERR_INVALID_ARG"; + } + }; + var InvalidReturnValueError = class _InvalidReturnValueError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _InvalidReturnValueError); + this.name = "InvalidReturnValueError"; + this.message = message || "Invalid Return Value Error"; + this.code = "UND_ERR_INVALID_RETURN_VALUE"; + } + }; + var RequestAbortedError = class _RequestAbortedError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _RequestAbortedError); + this.name = "AbortError"; + this.message = message || "Request aborted"; + this.code = "UND_ERR_ABORTED"; + } + }; + var InformationalError = class _InformationalError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _InformationalError); + this.name = "InformationalError"; + this.message = message || "Request information"; + this.code = "UND_ERR_INFO"; + } + }; + var RequestContentLengthMismatchError = class _RequestContentLengthMismatchError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _RequestContentLengthMismatchError); + this.name = "RequestContentLengthMismatchError"; + this.message = message || "Request body length does not match content-length header"; + this.code = "UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"; + } + }; + var ResponseContentLengthMismatchError = class _ResponseContentLengthMismatchError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _ResponseContentLengthMismatchError); + this.name = "ResponseContentLengthMismatchError"; + this.message = message || "Response body length does not match content-length header"; + this.code = "UND_ERR_RES_CONTENT_LENGTH_MISMATCH"; + } + }; + var ClientDestroyedError = class _ClientDestroyedError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _ClientDestroyedError); + this.name = "ClientDestroyedError"; + this.message = message || "The client is destroyed"; + this.code = "UND_ERR_DESTROYED"; + } + }; + var ClientClosedError = class _ClientClosedError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _ClientClosedError); + this.name = "ClientClosedError"; + this.message = message || "The client is closed"; + this.code = "UND_ERR_CLOSED"; + } + }; + var SocketError = class _SocketError extends UndiciError { + constructor(message, socket) { + super(message); + Error.captureStackTrace(this, _SocketError); + this.name = "SocketError"; + this.message = message || "Socket error"; + this.code = "UND_ERR_SOCKET"; + this.socket = socket; + } + }; + var NotSupportedError = class _NotSupportedError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _NotSupportedError); + this.name = "NotSupportedError"; + this.message = message || "Not supported error"; + this.code = "UND_ERR_NOT_SUPPORTED"; + } + }; + var BalancedPoolMissingUpstreamError = class extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, NotSupportedError); + this.name = "MissingUpstreamError"; + this.message = message || "No upstream has been added to the BalancedPool"; + this.code = "UND_ERR_BPL_MISSING_UPSTREAM"; + } + }; + var HTTPParserError = class _HTTPParserError extends Error { + constructor(message, code, data) { + super(message); + Error.captureStackTrace(this, _HTTPParserError); + this.name = "HTTPParserError"; + this.code = code ? `HPE_${code}` : void 0; + this.data = data ? data.toString() : void 0; + } + }; + var ResponseExceededMaxSizeError = class _ResponseExceededMaxSizeError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _ResponseExceededMaxSizeError); + this.name = "ResponseExceededMaxSizeError"; + this.message = message || "Response content exceeded max size"; + this.code = "UND_ERR_RES_EXCEEDED_MAX_SIZE"; + } + }; + module2.exports = { + HTTPParserError, + UndiciError, + HeadersTimeoutError, + HeadersOverflowError, + BodyTimeoutError, + RequestContentLengthMismatchError, + ConnectTimeoutError, + ResponseStatusCodeError, + InvalidArgumentError, + InvalidReturnValueError, + RequestAbortedError, + ClientDestroyedError, + ClientClosedError, + InformationalError, + SocketError, + NotSupportedError, + ResponseContentLengthMismatchError, + BalancedPoolMissingUpstreamError, + ResponseExceededMaxSizeError + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/util.js +var require_util = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/util.js"(exports, module2) { + "use strict"; + var assert = require("assert"); + var { kDestroyed, kBodyUsed } = require_symbols(); + var { IncomingMessage } = require("http"); + var stream = require("stream"); + var net = require("net"); + var { InvalidArgumentError } = require_errors(); + var { Blob: Blob2 } = require("buffer"); + var nodeUtil = require("util"); + var { stringify } = require("querystring"); + var [nodeMajor, nodeMinor] = process.versions.node.split(".").map((v) => Number(v)); + function nop() { + } + function isStream(obj) { + return obj && typeof obj === "object" && typeof obj.pipe === "function" && typeof obj.on === "function"; + } + function isBlobLike(object) { + return Blob2 && object instanceof Blob2 || object && typeof object === "object" && (typeof object.stream === "function" || typeof object.arrayBuffer === "function") && /^(Blob|File)$/.test(object[Symbol.toStringTag]); + } + function buildURL(url, queryParams) { + if (url.includes("?") || url.includes("#")) { + throw new Error('Query params cannot be passed when url already contains "?" or "#".'); + } + const stringified = stringify(queryParams); + if (stringified) { + url += "?" + stringified; + } + return url; + } + function parseURL(url) { + if (typeof url === "string") { + url = new URL(url); + if (!/^https?:/.test(url.origin || url.protocol)) { + throw new InvalidArgumentError("Invalid URL protocol: the URL must start with `http:` or `https:`."); + } + return url; + } + if (!url || typeof url !== "object") { + throw new InvalidArgumentError("Invalid URL: The URL argument must be a non-null object."); + } + if (!/^https?:/.test(url.origin || url.protocol)) { + throw new InvalidArgumentError("Invalid URL protocol: the URL must start with `http:` or `https:`."); + } + if (!(url instanceof URL)) { + if (url.port != null && url.port !== "" && !Number.isFinite(parseInt(url.port))) { + throw new InvalidArgumentError("Invalid URL: port must be a valid integer or a string representation of an integer."); + } + if (url.path != null && typeof url.path !== "string") { + throw new InvalidArgumentError("Invalid URL path: the path must be a string or null/undefined."); + } + if (url.pathname != null && typeof url.pathname !== "string") { + throw new InvalidArgumentError("Invalid URL pathname: the pathname must be a string or null/undefined."); + } + if (url.hostname != null && typeof url.hostname !== "string") { + throw new InvalidArgumentError("Invalid URL hostname: the hostname must be a string or null/undefined."); + } + if (url.origin != null && typeof url.origin !== "string") { + throw new InvalidArgumentError("Invalid URL origin: the origin must be a string or null/undefined."); + } + const port = url.port != null ? url.port : url.protocol === "https:" ? 443 : 80; + let origin = url.origin != null ? url.origin : `${url.protocol}//${url.hostname}:${port}`; + let path = url.path != null ? url.path : `${url.pathname || ""}${url.search || ""}`; + if (origin.endsWith("/")) { + origin = origin.substring(0, origin.length - 1); + } + if (path && !path.startsWith("/")) { + path = `/${path}`; + } + url = new URL(origin + path); + } + return url; + } + function parseOrigin(url) { + url = parseURL(url); + if (url.pathname !== "/" || url.search || url.hash) { + throw new InvalidArgumentError("invalid url"); + } + return url; + } + function getHostname(host) { + if (host[0] === "[") { + const idx2 = host.indexOf("]"); + assert(idx2 !== -1); + return host.substr(1, idx2 - 1); + } + const idx = host.indexOf(":"); + if (idx === -1) + return host; + return host.substr(0, idx); + } + function getServerName(host) { + if (!host) { + return null; + } + assert.strictEqual(typeof host, "string"); + const servername = getHostname(host); + if (net.isIP(servername)) { + return ""; + } + return servername; + } + function deepClone(obj) { + return JSON.parse(JSON.stringify(obj)); + } + function isAsyncIterable(obj) { + return !!(obj != null && typeof obj[Symbol.asyncIterator] === "function"); + } + function isIterable(obj) { + return !!(obj != null && (typeof obj[Symbol.iterator] === "function" || typeof obj[Symbol.asyncIterator] === "function")); + } + function bodyLength(body) { + if (body == null) { + return 0; + } else if (isStream(body)) { + const state = body._readableState; + return state && state.objectMode === false && state.ended === true && Number.isFinite(state.length) ? state.length : null; + } else if (isBlobLike(body)) { + return body.size != null ? body.size : null; + } else if (isBuffer(body)) { + return body.byteLength; + } + return null; + } + function isDestroyed(stream2) { + return !stream2 || !!(stream2.destroyed || stream2[kDestroyed]); + } + function isReadableAborted(stream2) { + const state = stream2 && stream2._readableState; + return isDestroyed(stream2) && state && !state.endEmitted; + } + function destroy(stream2, err) { + if (!isStream(stream2) || isDestroyed(stream2)) { + return; + } + if (typeof stream2.destroy === "function") { + if (Object.getPrototypeOf(stream2).constructor === IncomingMessage) { + stream2.socket = null; + } + stream2.destroy(err); + } else if (err) { + process.nextTick((stream3, err2) => { + stream3.emit("error", err2); + }, stream2, err); + } + if (stream2.destroyed !== true) { + stream2[kDestroyed] = true; + } + } + var KEEPALIVE_TIMEOUT_EXPR = /timeout=(\d+)/; + function parseKeepAliveTimeout(val) { + const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR); + return m ? parseInt(m[1], 10) * 1e3 : null; + } + function parseHeaders(headers, obj = {}) { + if (!Array.isArray(headers)) + return headers; + for (let i = 0; i < headers.length; i += 2) { + const key = headers[i].toString().toLowerCase(); + let val = obj[key]; + if (!val) { + if (Array.isArray(headers[i + 1])) { + obj[key] = headers[i + 1]; + } else { + obj[key] = headers[i + 1].toString("utf8"); + } + } else { + if (!Array.isArray(val)) { + val = [val]; + obj[key] = val; + } + val.push(headers[i + 1].toString("utf8")); + } + } + if ("content-length" in obj && "content-disposition" in obj) { + obj["content-disposition"] = Buffer.from(obj["content-disposition"]).toString("latin1"); + } + return obj; + } + function parseRawHeaders(headers) { + const ret = []; + let hasContentLength = false; + let contentDispositionIdx = -1; + for (let n = 0; n < headers.length; n += 2) { + const key = headers[n + 0].toString(); + const val = headers[n + 1].toString("utf8"); + if (key.length === 14 && (key === "content-length" || key.toLowerCase() === "content-length")) { + ret.push(key, val); + hasContentLength = true; + } else if (key.length === 19 && (key === "content-disposition" || key.toLowerCase() === "content-disposition")) { + contentDispositionIdx = ret.push(key, val) - 1; + } else { + ret.push(key, val); + } + } + if (hasContentLength && contentDispositionIdx !== -1) { + ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString("latin1"); + } + return ret; + } + function isBuffer(buffer) { + return buffer instanceof Uint8Array || Buffer.isBuffer(buffer); + } + function validateHandler(handler, method, upgrade) { + if (!handler || typeof handler !== "object") { + throw new InvalidArgumentError("handler must be an object"); + } + if (typeof handler.onConnect !== "function") { + throw new InvalidArgumentError("invalid onConnect method"); + } + if (typeof handler.onError !== "function") { + throw new InvalidArgumentError("invalid onError method"); + } + if (typeof handler.onBodySent !== "function" && handler.onBodySent !== void 0) { + throw new InvalidArgumentError("invalid onBodySent method"); + } + if (upgrade || method === "CONNECT") { + if (typeof handler.onUpgrade !== "function") { + throw new InvalidArgumentError("invalid onUpgrade method"); + } + } else { + if (typeof handler.onHeaders !== "function") { + throw new InvalidArgumentError("invalid onHeaders method"); + } + if (typeof handler.onData !== "function") { + throw new InvalidArgumentError("invalid onData method"); + } + if (typeof handler.onComplete !== "function") { + throw new InvalidArgumentError("invalid onComplete method"); + } + } + } + function isDisturbed(body) { + return !!(body && (stream.isDisturbed ? stream.isDisturbed(body) || body[kBodyUsed] : body[kBodyUsed] || body.readableDidRead || body._readableState && body._readableState.dataEmitted || isReadableAborted(body))); + } + function isErrored(body) { + return !!(body && (stream.isErrored ? stream.isErrored(body) : /state: 'errored'/.test( + nodeUtil.inspect(body) + ))); + } + function isReadable(body) { + return !!(body && (stream.isReadable ? stream.isReadable(body) : /state: 'readable'/.test( + nodeUtil.inspect(body) + ))); + } + function getSocketInfo(socket) { + return { + localAddress: socket.localAddress, + localPort: socket.localPort, + remoteAddress: socket.remoteAddress, + remotePort: socket.remotePort, + remoteFamily: socket.remoteFamily, + timeout: socket.timeout, + bytesWritten: socket.bytesWritten, + bytesRead: socket.bytesRead + }; + } + async function* convertIterableToBuffer(iterable) { + for await (const chunk of iterable) { + yield Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk); + } + } + var ReadableStream; + function ReadableStreamFrom(iterable) { + if (!ReadableStream) { + ReadableStream = require("stream/web").ReadableStream; + } + if (ReadableStream.from) { + return ReadableStream.from(convertIterableToBuffer(iterable)); + } + let iterator; + return new ReadableStream( + { + async start() { + iterator = iterable[Symbol.asyncIterator](); + }, + async pull(controller) { + const { done, value } = await iterator.next(); + if (done) { + queueMicrotask(() => { + controller.close(); + }); + } else { + const buf = Buffer.isBuffer(value) ? value : Buffer.from(value); + controller.enqueue(new Uint8Array(buf)); + } + return controller.desiredSize > 0; + }, + async cancel(reason) { + await iterator.return(); + } + }, + 0 + ); + } + function isFormDataLike(object) { + return object && typeof object === "object" && typeof object.append === "function" && typeof object.delete === "function" && typeof object.get === "function" && typeof object.getAll === "function" && typeof object.has === "function" && typeof object.set === "function" && object[Symbol.toStringTag] === "FormData"; + } + function throwIfAborted(signal) { + if (!signal) { + return; + } + if (typeof signal.throwIfAborted === "function") { + signal.throwIfAborted(); + } else { + if (signal.aborted) { + const err = new Error("The operation was aborted"); + err.name = "AbortError"; + throw err; + } + } + } + var events; + function addAbortListener(signal, listener) { + if (typeof Symbol.dispose === "symbol") { + if (!events) { + events = require("events"); + } + if (typeof events.addAbortListener === "function" && "aborted" in signal) { + return events.addAbortListener(signal, listener); + } + } + if ("addEventListener" in signal) { + signal.addEventListener("abort", listener, { once: true }); + return () => signal.removeEventListener("abort", listener); + } + signal.addListener("abort", listener); + return () => signal.removeListener("abort", listener); + } + var hasToWellFormed = !!String.prototype.toWellFormed; + function toUSVString(val) { + if (hasToWellFormed) { + return `${val}`.toWellFormed(); + } else if (nodeUtil.toUSVString) { + return nodeUtil.toUSVString(val); + } + return `${val}`; + } + var kEnumerableProperty = /* @__PURE__ */ Object.create(null); + kEnumerableProperty.enumerable = true; + module2.exports = { + kEnumerableProperty, + nop, + isDisturbed, + isErrored, + isReadable, + toUSVString, + isReadableAborted, + isBlobLike, + parseOrigin, + parseURL, + getServerName, + isStream, + isIterable, + isAsyncIterable, + isDestroyed, + parseRawHeaders, + parseHeaders, + parseKeepAliveTimeout, + destroy, + bodyLength, + deepClone, + ReadableStreamFrom, + isBuffer, + validateHandler, + getSocketInfo, + isFormDataLike, + buildURL, + throwIfAborted, + addAbortListener, + nodeMajor, + nodeMinor, + nodeHasAutoSelectFamily: nodeMajor > 18 || nodeMajor === 18 && nodeMinor >= 13 + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/timers.js +var require_timers = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/timers.js"(exports, module2) { + "use strict"; + var fastNow = Date.now(); + var fastNowTimeout; + var fastTimers = []; + function onTimeout() { + fastNow = Date.now(); + let len = fastTimers.length; + let idx = 0; + while (idx < len) { + const timer = fastTimers[idx]; + if (timer.state === 0) { + timer.state = fastNow + timer.delay; + } else if (timer.state > 0 && fastNow >= timer.state) { + timer.state = -1; + timer.callback(timer.opaque); + } + if (timer.state === -1) { + timer.state = -2; + if (idx !== len - 1) { + fastTimers[idx] = fastTimers.pop(); + } else { + fastTimers.pop(); + } + len -= 1; + } else { + idx += 1; + } + } + if (fastTimers.length > 0) { + refreshTimeout(); + } + } + function refreshTimeout() { + if (fastNowTimeout && fastNowTimeout.refresh) { + fastNowTimeout.refresh(); + } else { + clearTimeout(fastNowTimeout); + fastNowTimeout = setTimeout(onTimeout, 1e3); + if (fastNowTimeout.unref) { + fastNowTimeout.unref(); + } + } + } + var Timeout = class { + constructor(callback, delay, opaque) { + this.callback = callback; + this.delay = delay; + this.opaque = opaque; + this.state = -2; + this.refresh(); + } + refresh() { + if (this.state === -2) { + fastTimers.push(this); + if (!fastNowTimeout || fastTimers.length === 1) { + refreshTimeout(); + } + } + this.state = 0; + } + clear() { + this.state = -1; + } + }; + module2.exports = { + setTimeout(callback, delay, opaque) { + return delay < 1e3 ? setTimeout(callback, delay, opaque) : new Timeout(callback, delay, opaque); + }, + clearTimeout(timeout) { + if (timeout instanceof Timeout) { + timeout.clear(); + } else { + clearTimeout(timeout); + } + } + }; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/deps/streamsearch/sbmh.js +var require_sbmh = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/deps/streamsearch/sbmh.js"(exports, module2) { + "use strict"; + var EventEmitter = require("events").EventEmitter; + var inherits = require("util").inherits; + function SBMH(needle) { + if (typeof needle === "string") { + needle = Buffer.from(needle); + } + if (!Buffer.isBuffer(needle)) { + throw new TypeError("The needle has to be a String or a Buffer."); + } + const needleLength = needle.length; + if (needleLength === 0) { + throw new Error("The needle cannot be an empty String/Buffer."); + } + if (needleLength > 256) { + throw new Error("The needle cannot have a length bigger than 256."); + } + this.maxMatches = Infinity; + this.matches = 0; + this._occ = new Array(256).fill(needleLength); + this._lookbehind_size = 0; + this._needle = needle; + this._bufpos = 0; + this._lookbehind = Buffer.alloc(needleLength); + for (var i = 0; i < needleLength - 1; ++i) { + this._occ[needle[i]] = needleLength - 1 - i; + } + } + inherits(SBMH, EventEmitter); + SBMH.prototype.reset = function() { + this._lookbehind_size = 0; + this.matches = 0; + this._bufpos = 0; + }; + SBMH.prototype.push = function(chunk, pos) { + if (!Buffer.isBuffer(chunk)) { + chunk = Buffer.from(chunk, "binary"); + } + const chlen = chunk.length; + this._bufpos = pos || 0; + let r; + while (r !== chlen && this.matches < this.maxMatches) { + r = this._sbmh_feed(chunk); + } + return r; + }; + SBMH.prototype._sbmh_feed = function(data) { + const len = data.length; + const needle = this._needle; + const needleLength = needle.length; + const lastNeedleChar = needle[needleLength - 1]; + let pos = -this._lookbehind_size; + let ch; + if (pos < 0) { + while (pos < 0 && pos <= len - needleLength) { + ch = this._sbmh_lookup_char(data, pos + needleLength - 1); + if (ch === lastNeedleChar && this._sbmh_memcmp(data, pos, needleLength - 1)) { + this._lookbehind_size = 0; + ++this.matches; + this.emit("info", true); + return this._bufpos = pos + needleLength; + } + pos += this._occ[ch]; + } + if (pos < 0) { + while (pos < 0 && !this._sbmh_memcmp(data, pos, len - pos)) { + ++pos; + } + } + if (pos >= 0) { + this.emit("info", false, this._lookbehind, 0, this._lookbehind_size); + this._lookbehind_size = 0; + } else { + const bytesToCutOff = this._lookbehind_size + pos; + if (bytesToCutOff > 0) { + this.emit("info", false, this._lookbehind, 0, bytesToCutOff); + } + this._lookbehind.copy( + this._lookbehind, + 0, + bytesToCutOff, + this._lookbehind_size - bytesToCutOff + ); + this._lookbehind_size -= bytesToCutOff; + data.copy(this._lookbehind, this._lookbehind_size); + this._lookbehind_size += len; + this._bufpos = len; + return len; + } + } + pos += (pos >= 0) * this._bufpos; + if (data.indexOf(needle, pos) !== -1) { + pos = data.indexOf(needle, pos); + ++this.matches; + if (pos > 0) { + this.emit("info", true, data, this._bufpos, pos); + } else { + this.emit("info", true); + } + return this._bufpos = pos + needleLength; + } else { + pos = len - needleLength; + } + while (pos < len && (data[pos] !== needle[0] || Buffer.compare( + data.subarray(pos, pos + len - pos), + needle.subarray(0, len - pos) + ) !== 0)) { + ++pos; + } + if (pos < len) { + data.copy(this._lookbehind, 0, pos, pos + (len - pos)); + this._lookbehind_size = len - pos; + } + if (pos > 0) { + this.emit("info", false, data, this._bufpos, pos < len ? pos : len); + } + this._bufpos = len; + return len; + }; + SBMH.prototype._sbmh_lookup_char = function(data, pos) { + return pos < 0 ? this._lookbehind[this._lookbehind_size + pos] : data[pos]; + }; + SBMH.prototype._sbmh_memcmp = function(data, pos, len) { + for (var i = 0; i < len; ++i) { + if (this._sbmh_lookup_char(data, pos + i) !== this._needle[i]) { + return false; + } + } + return true; + }; + module2.exports = SBMH; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/deps/dicer/lib/PartStream.js +var require_PartStream = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/deps/dicer/lib/PartStream.js"(exports, module2) { + "use strict"; + var inherits = require("util").inherits; + var ReadableStream = require("stream").Readable; + function PartStream(opts) { + ReadableStream.call(this, opts); + } + inherits(PartStream, ReadableStream); + PartStream.prototype._read = function(n) { + }; + module2.exports = PartStream; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/getLimit.js +var require_getLimit = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/getLimit.js"(exports, module2) { + "use strict"; + module2.exports = function getLimit(limits, name, defaultLimit) { + if (!limits || limits[name] === void 0 || limits[name] === null) { + return defaultLimit; + } + if (typeof limits[name] !== "number" || isNaN(limits[name])) { + throw new TypeError("Limit " + name + " is not a valid number"); + } + return limits[name]; + }; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/deps/dicer/lib/HeaderParser.js +var require_HeaderParser = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/deps/dicer/lib/HeaderParser.js"(exports, module2) { + "use strict"; + var EventEmitter = require("events").EventEmitter; + var inherits = require("util").inherits; + var getLimit = require_getLimit(); + var StreamSearch = require_sbmh(); + var B_DCRLF = Buffer.from("\r\n\r\n"); + var RE_CRLF = /\r\n/g; + var RE_HDR = /^([^:]+):[ \t]?([\x00-\xFF]+)?$/; + function HeaderParser(cfg) { + EventEmitter.call(this); + cfg = cfg || {}; + const self = this; + this.nread = 0; + this.maxed = false; + this.npairs = 0; + this.maxHeaderPairs = getLimit(cfg, "maxHeaderPairs", 2e3); + this.maxHeaderSize = getLimit(cfg, "maxHeaderSize", 80 * 1024); + this.buffer = ""; + this.header = {}; + this.finished = false; + this.ss = new StreamSearch(B_DCRLF); + this.ss.on("info", function(isMatch, data, start, end) { + if (data && !self.maxed) { + if (self.nread + end - start >= self.maxHeaderSize) { + end = self.maxHeaderSize - self.nread + start; + self.nread = self.maxHeaderSize; + self.maxed = true; + } else { + self.nread += end - start; + } + self.buffer += data.toString("binary", start, end); + } + if (isMatch) { + self._finish(); + } + }); + } + inherits(HeaderParser, EventEmitter); + HeaderParser.prototype.push = function(data) { + const r = this.ss.push(data); + if (this.finished) { + return r; + } + }; + HeaderParser.prototype.reset = function() { + this.finished = false; + this.buffer = ""; + this.header = {}; + this.ss.reset(); + }; + HeaderParser.prototype._finish = function() { + if (this.buffer) { + this._parseHeader(); + } + this.ss.matches = this.ss.maxMatches; + const header = this.header; + this.header = {}; + this.buffer = ""; + this.finished = true; + this.nread = this.npairs = 0; + this.maxed = false; + this.emit("header", header); + }; + HeaderParser.prototype._parseHeader = function() { + if (this.npairs === this.maxHeaderPairs) { + return; + } + const lines = this.buffer.split(RE_CRLF); + const len = lines.length; + let m, h; + for (var i = 0; i < len; ++i) { + if (lines[i].length === 0) { + continue; + } + if (lines[i][0] === " " || lines[i][0] === " ") { + if (h) { + this.header[h][this.header[h].length - 1] += lines[i]; + continue; + } + } + const posColon = lines[i].indexOf(":"); + if (posColon === -1 || posColon === 0) { + return; + } + m = RE_HDR.exec(lines[i]); + h = m[1].toLowerCase(); + this.header[h] = this.header[h] || []; + this.header[h].push(m[2] || ""); + if (++this.npairs === this.maxHeaderPairs) { + break; + } + } + }; + module2.exports = HeaderParser; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/deps/dicer/lib/Dicer.js +var require_Dicer = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/deps/dicer/lib/Dicer.js"(exports, module2) { + "use strict"; + var WritableStream = require("stream").Writable; + var inherits = require("util").inherits; + var StreamSearch = require_sbmh(); + var PartStream = require_PartStream(); + var HeaderParser = require_HeaderParser(); + var DASH = 45; + var B_ONEDASH = Buffer.from("-"); + var B_CRLF = Buffer.from("\r\n"); + var EMPTY_FN = function() { + }; + function Dicer(cfg) { + if (!(this instanceof Dicer)) { + return new Dicer(cfg); + } + WritableStream.call(this, cfg); + if (!cfg || !cfg.headerFirst && typeof cfg.boundary !== "string") { + throw new TypeError("Boundary required"); + } + if (typeof cfg.boundary === "string") { + this.setBoundary(cfg.boundary); + } else { + this._bparser = void 0; + } + this._headerFirst = cfg.headerFirst; + this._dashes = 0; + this._parts = 0; + this._finished = false; + this._realFinish = false; + this._isPreamble = true; + this._justMatched = false; + this._firstWrite = true; + this._inHeader = true; + this._part = void 0; + this._cb = void 0; + this._ignoreData = false; + this._partOpts = { highWaterMark: cfg.partHwm }; + this._pause = false; + const self = this; + this._hparser = new HeaderParser(cfg); + this._hparser.on("header", function(header) { + self._inHeader = false; + self._part.emit("header", header); + }); + } + inherits(Dicer, WritableStream); + Dicer.prototype.emit = function(ev) { + if (ev === "finish" && !this._realFinish) { + if (!this._finished) { + const self = this; + process.nextTick(function() { + self.emit("error", new Error("Unexpected end of multipart data")); + if (self._part && !self._ignoreData) { + const type = self._isPreamble ? "Preamble" : "Part"; + self._part.emit("error", new Error(type + " terminated early due to unexpected end of multipart data")); + self._part.push(null); + process.nextTick(function() { + self._realFinish = true; + self.emit("finish"); + self._realFinish = false; + }); + return; + } + self._realFinish = true; + self.emit("finish"); + self._realFinish = false; + }); + } + } else { + WritableStream.prototype.emit.apply(this, arguments); + } + }; + Dicer.prototype._write = function(data, encoding, cb) { + if (!this._hparser && !this._bparser) { + return cb(); + } + if (this._headerFirst && this._isPreamble) { + if (!this._part) { + this._part = new PartStream(this._partOpts); + if (this._events.preamble) { + this.emit("preamble", this._part); + } else { + this._ignore(); + } + } + const r = this._hparser.push(data); + if (!this._inHeader && r !== void 0 && r < data.length) { + data = data.slice(r); + } else { + return cb(); + } + } + if (this._firstWrite) { + this._bparser.push(B_CRLF); + this._firstWrite = false; + } + this._bparser.push(data); + if (this._pause) { + this._cb = cb; + } else { + cb(); + } + }; + Dicer.prototype.reset = function() { + this._part = void 0; + this._bparser = void 0; + this._hparser = void 0; + }; + Dicer.prototype.setBoundary = function(boundary) { + const self = this; + this._bparser = new StreamSearch("\r\n--" + boundary); + this._bparser.on("info", function(isMatch, data, start, end) { + self._oninfo(isMatch, data, start, end); + }); + }; + Dicer.prototype._ignore = function() { + if (this._part && !this._ignoreData) { + this._ignoreData = true; + this._part.on("error", EMPTY_FN); + this._part.resume(); + } + }; + Dicer.prototype._oninfo = function(isMatch, data, start, end) { + let buf; + const self = this; + let i = 0; + let r; + let shouldWriteMore = true; + if (!this._part && this._justMatched && data) { + while (this._dashes < 2 && start + i < end) { + if (data[start + i] === DASH) { + ++i; + ++this._dashes; + } else { + if (this._dashes) { + buf = B_ONEDASH; + } + this._dashes = 0; + break; + } + } + if (this._dashes === 2) { + if (start + i < end && this._events.trailer) { + this.emit("trailer", data.slice(start + i, end)); + } + this.reset(); + this._finished = true; + if (self._parts === 0) { + self._realFinish = true; + self.emit("finish"); + self._realFinish = false; + } + } + if (this._dashes) { + return; + } + } + if (this._justMatched) { + this._justMatched = false; + } + if (!this._part) { + this._part = new PartStream(this._partOpts); + this._part._read = function(n) { + self._unpause(); + }; + if (this._isPreamble && this._events.preamble) { + this.emit("preamble", this._part); + } else if (this._isPreamble !== true && this._events.part) { + this.emit("part", this._part); + } else { + this._ignore(); + } + if (!this._isPreamble) { + this._inHeader = true; + } + } + if (data && start < end && !this._ignoreData) { + if (this._isPreamble || !this._inHeader) { + if (buf) { + shouldWriteMore = this._part.push(buf); + } + shouldWriteMore = this._part.push(data.slice(start, end)); + if (!shouldWriteMore) { + this._pause = true; + } + } else if (!this._isPreamble && this._inHeader) { + if (buf) { + this._hparser.push(buf); + } + r = this._hparser.push(data.slice(start, end)); + if (!this._inHeader && r !== void 0 && r < end) { + this._oninfo(false, data, start + r, end); + } + } + } + if (isMatch) { + this._hparser.reset(); + if (this._isPreamble) { + this._isPreamble = false; + } else { + if (start !== end) { + ++this._parts; + this._part.on("end", function() { + if (--self._parts === 0) { + if (self._finished) { + self._realFinish = true; + self.emit("finish"); + self._realFinish = false; + } else { + self._unpause(); + } + } + }); + } + } + this._part.push(null); + this._part = void 0; + this._ignoreData = false; + this._justMatched = true; + this._dashes = 0; + } + }; + Dicer.prototype._unpause = function() { + if (!this._pause) { + return; + } + this._pause = false; + if (this._cb) { + const cb = this._cb; + this._cb = void 0; + cb(); + } + }; + module2.exports = Dicer; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/decodeText.js +var require_decodeText = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/decodeText.js"(exports, module2) { + "use strict"; + var utf8Decoder = new TextDecoder("utf-8"); + var textDecoders = /* @__PURE__ */ new Map([ + ["utf-8", utf8Decoder], + ["utf8", utf8Decoder] + ]); + function decodeText(text, textEncoding, destEncoding) { + if (text) { + if (textDecoders.has(destEncoding)) { + try { + return textDecoders.get(destEncoding).decode(Buffer.from(text, textEncoding)); + } catch (e) { + } + } else { + try { + textDecoders.set(destEncoding, new TextDecoder(destEncoding)); + return textDecoders.get(destEncoding).decode(Buffer.from(text, textEncoding)); + } catch (e) { + } + } + } + return text; + } + module2.exports = decodeText; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/parseParams.js +var require_parseParams = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/parseParams.js"(exports, module2) { + "use strict"; + var decodeText = require_decodeText(); + var RE_ENCODED = /%([a-fA-F0-9]{2})/g; + function encodedReplacer(match, byte) { + return String.fromCharCode(parseInt(byte, 16)); + } + function parseParams(str) { + const res = []; + let state = "key"; + let charset = ""; + let inquote = false; + let escaping = false; + let p = 0; + let tmp = ""; + for (var i = 0, len = str.length; i < len; ++i) { + const char = str[i]; + if (char === "\\" && inquote) { + if (escaping) { + escaping = false; + } else { + escaping = true; + continue; + } + } else if (char === '"') { + if (!escaping) { + if (inquote) { + inquote = false; + state = "key"; + } else { + inquote = true; + } + continue; + } else { + escaping = false; + } + } else { + if (escaping && inquote) { + tmp += "\\"; + } + escaping = false; + if ((state === "charset" || state === "lang") && char === "'") { + if (state === "charset") { + state = "lang"; + charset = tmp.substring(1); + } else { + state = "value"; + } + tmp = ""; + continue; + } else if (state === "key" && (char === "*" || char === "=") && res.length) { + if (char === "*") { + state = "charset"; + } else { + state = "value"; + } + res[p] = [tmp, void 0]; + tmp = ""; + continue; + } else if (!inquote && char === ";") { + state = "key"; + if (charset) { + if (tmp.length) { + tmp = decodeText( + tmp.replace(RE_ENCODED, encodedReplacer), + "binary", + charset + ); + } + charset = ""; + } else if (tmp.length) { + tmp = decodeText(tmp, "binary", "utf8"); + } + if (res[p] === void 0) { + res[p] = tmp; + } else { + res[p][1] = tmp; + } + tmp = ""; + ++p; + continue; + } else if (!inquote && (char === " " || char === " ")) { + continue; + } + } + tmp += char; + } + if (charset && tmp.length) { + tmp = decodeText( + tmp.replace(RE_ENCODED, encodedReplacer), + "binary", + charset + ); + } else if (tmp) { + tmp = decodeText(tmp, "binary", "utf8"); + } + if (res[p] === void 0) { + if (tmp) { + res[p] = tmp; + } + } else { + res[p][1] = tmp; + } + return res; + } + module2.exports = parseParams; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/basename.js +var require_basename = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/basename.js"(exports, module2) { + "use strict"; + module2.exports = function basename(path) { + if (typeof path !== "string") { + return ""; + } + for (var i = path.length - 1; i >= 0; --i) { + switch (path.charCodeAt(i)) { + case 47: + case 92: + path = path.slice(i + 1); + return path === ".." || path === "." ? "" : path; + } + } + return path === ".." || path === "." ? "" : path; + }; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/types/multipart.js +var require_multipart = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/types/multipart.js"(exports, module2) { + "use strict"; + var { Readable } = require("stream"); + var { inherits } = require("util"); + var Dicer = require_Dicer(); + var parseParams = require_parseParams(); + var decodeText = require_decodeText(); + var basename = require_basename(); + var getLimit = require_getLimit(); + var RE_BOUNDARY = /^boundary$/i; + var RE_FIELD = /^form-data$/i; + var RE_CHARSET = /^charset$/i; + var RE_FILENAME = /^filename$/i; + var RE_NAME = /^name$/i; + Multipart.detect = /^multipart\/form-data/i; + function Multipart(boy, cfg) { + let i; + let len; + const self = this; + let boundary; + const limits = cfg.limits; + const isPartAFile = cfg.isPartAFile || ((fieldName, contentType, fileName) => contentType === "application/octet-stream" || fileName !== void 0); + const parsedConType = cfg.parsedConType || []; + const defCharset = cfg.defCharset || "utf8"; + const preservePath = cfg.preservePath; + const fileOpts = { highWaterMark: cfg.fileHwm }; + for (i = 0, len = parsedConType.length; i < len; ++i) { + if (Array.isArray(parsedConType[i]) && RE_BOUNDARY.test(parsedConType[i][0])) { + boundary = parsedConType[i][1]; + break; + } + } + function checkFinished() { + if (nends === 0 && finished && !boy._done) { + finished = false; + self.end(); + } + } + if (typeof boundary !== "string") { + throw new Error("Multipart: Boundary not found"); + } + const fieldSizeLimit = getLimit(limits, "fieldSize", 1 * 1024 * 1024); + const fileSizeLimit = getLimit(limits, "fileSize", Infinity); + const filesLimit = getLimit(limits, "files", Infinity); + const fieldsLimit = getLimit(limits, "fields", Infinity); + const partsLimit = getLimit(limits, "parts", Infinity); + const headerPairsLimit = getLimit(limits, "headerPairs", 2e3); + const headerSizeLimit = getLimit(limits, "headerSize", 80 * 1024); + let nfiles = 0; + let nfields = 0; + let nends = 0; + let curFile; + let curField; + let finished = false; + this._needDrain = false; + this._pause = false; + this._cb = void 0; + this._nparts = 0; + this._boy = boy; + const parserCfg = { + boundary, + maxHeaderPairs: headerPairsLimit, + maxHeaderSize: headerSizeLimit, + partHwm: fileOpts.highWaterMark, + highWaterMark: cfg.highWaterMark + }; + this.parser = new Dicer(parserCfg); + this.parser.on("drain", function() { + self._needDrain = false; + if (self._cb && !self._pause) { + const cb = self._cb; + self._cb = void 0; + cb(); + } + }).on("part", function onPart(part) { + if (++self._nparts > partsLimit) { + self.parser.removeListener("part", onPart); + self.parser.on("part", skipPart); + boy.hitPartsLimit = true; + boy.emit("partsLimit"); + return skipPart(part); + } + if (curField) { + const field = curField; + field.emit("end"); + field.removeAllListeners("end"); + } + part.on("header", function(header) { + let contype; + let fieldname; + let parsed; + let charset; + let encoding; + let filename; + let nsize = 0; + if (header["content-type"]) { + parsed = parseParams(header["content-type"][0]); + if (parsed[0]) { + contype = parsed[0].toLowerCase(); + for (i = 0, len = parsed.length; i < len; ++i) { + if (RE_CHARSET.test(parsed[i][0])) { + charset = parsed[i][1].toLowerCase(); + break; + } + } + } + } + if (contype === void 0) { + contype = "text/plain"; + } + if (charset === void 0) { + charset = defCharset; + } + if (header["content-disposition"]) { + parsed = parseParams(header["content-disposition"][0]); + if (!RE_FIELD.test(parsed[0])) { + return skipPart(part); + } + for (i = 0, len = parsed.length; i < len; ++i) { + if (RE_NAME.test(parsed[i][0])) { + fieldname = parsed[i][1]; + } else if (RE_FILENAME.test(parsed[i][0])) { + filename = parsed[i][1]; + if (!preservePath) { + filename = basename(filename); + } + } + } + } else { + return skipPart(part); + } + if (header["content-transfer-encoding"]) { + encoding = header["content-transfer-encoding"][0].toLowerCase(); + } else { + encoding = "7bit"; + } + let onData, onEnd; + if (isPartAFile(fieldname, contype, filename)) { + if (nfiles === filesLimit) { + if (!boy.hitFilesLimit) { + boy.hitFilesLimit = true; + boy.emit("filesLimit"); + } + return skipPart(part); + } + ++nfiles; + if (!boy._events.file) { + self.parser._ignore(); + return; + } + ++nends; + const file = new FileStream(fileOpts); + curFile = file; + file.on("end", function() { + --nends; + self._pause = false; + checkFinished(); + if (self._cb && !self._needDrain) { + const cb = self._cb; + self._cb = void 0; + cb(); + } + }); + file._read = function(n) { + if (!self._pause) { + return; + } + self._pause = false; + if (self._cb && !self._needDrain) { + const cb = self._cb; + self._cb = void 0; + cb(); + } + }; + boy.emit("file", fieldname, file, filename, encoding, contype); + onData = function(data) { + if ((nsize += data.length) > fileSizeLimit) { + const extralen = fileSizeLimit - nsize + data.length; + if (extralen > 0) { + file.push(data.slice(0, extralen)); + } + file.truncated = true; + file.bytesRead = fileSizeLimit; + part.removeAllListeners("data"); + file.emit("limit"); + return; + } else if (!file.push(data)) { + self._pause = true; + } + file.bytesRead = nsize; + }; + onEnd = function() { + curFile = void 0; + file.push(null); + }; + } else { + if (nfields === fieldsLimit) { + if (!boy.hitFieldsLimit) { + boy.hitFieldsLimit = true; + boy.emit("fieldsLimit"); + } + return skipPart(part); + } + ++nfields; + ++nends; + let buffer = ""; + let truncated = false; + curField = part; + onData = function(data) { + if ((nsize += data.length) > fieldSizeLimit) { + const extralen = fieldSizeLimit - (nsize - data.length); + buffer += data.toString("binary", 0, extralen); + truncated = true; + part.removeAllListeners("data"); + } else { + buffer += data.toString("binary"); + } + }; + onEnd = function() { + curField = void 0; + if (buffer.length) { + buffer = decodeText(buffer, "binary", charset); + } + boy.emit("field", fieldname, buffer, false, truncated, encoding, contype); + --nends; + checkFinished(); + }; + } + part._readableState.sync = false; + part.on("data", onData); + part.on("end", onEnd); + }).on("error", function(err) { + if (curFile) { + curFile.emit("error", err); + } + }); + }).on("error", function(err) { + boy.emit("error", err); + }).on("finish", function() { + finished = true; + checkFinished(); + }); + } + Multipart.prototype.write = function(chunk, cb) { + const r = this.parser.write(chunk); + if (r && !this._pause) { + cb(); + } else { + this._needDrain = !r; + this._cb = cb; + } + }; + Multipart.prototype.end = function() { + const self = this; + if (self.parser.writable) { + self.parser.end(); + } else if (!self._boy._done) { + process.nextTick(function() { + self._boy._done = true; + self._boy.emit("finish"); + }); + } + }; + function skipPart(part) { + part.resume(); + } + function FileStream(opts) { + Readable.call(this, opts); + this.bytesRead = 0; + this.truncated = false; + } + inherits(FileStream, Readable); + FileStream.prototype._read = function(n) { + }; + module2.exports = Multipart; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/Decoder.js +var require_Decoder = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/Decoder.js"(exports, module2) { + "use strict"; + var RE_PLUS = /\+/g; + var HEX = [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ]; + function Decoder() { + this.buffer = void 0; + } + Decoder.prototype.write = function(str) { + str = str.replace(RE_PLUS, " "); + let res = ""; + let i = 0; + let p = 0; + const len = str.length; + for (; i < len; ++i) { + if (this.buffer !== void 0) { + if (!HEX[str.charCodeAt(i)]) { + res += "%" + this.buffer; + this.buffer = void 0; + --i; + } else { + this.buffer += str[i]; + ++p; + if (this.buffer.length === 2) { + res += String.fromCharCode(parseInt(this.buffer, 16)); + this.buffer = void 0; + } + } + } else if (str[i] === "%") { + if (i > p) { + res += str.substring(p, i); + p = i; + } + this.buffer = ""; + ++p; + } + } + if (p < len && this.buffer === void 0) { + res += str.substring(p); + } + return res; + }; + Decoder.prototype.reset = function() { + this.buffer = void 0; + }; + module2.exports = Decoder; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/types/urlencoded.js +var require_urlencoded = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/types/urlencoded.js"(exports, module2) { + "use strict"; + var Decoder = require_Decoder(); + var decodeText = require_decodeText(); + var getLimit = require_getLimit(); + var RE_CHARSET = /^charset$/i; + UrlEncoded.detect = /^application\/x-www-form-urlencoded/i; + function UrlEncoded(boy, cfg) { + const limits = cfg.limits; + const parsedConType = cfg.parsedConType; + this.boy = boy; + this.fieldSizeLimit = getLimit(limits, "fieldSize", 1 * 1024 * 1024); + this.fieldNameSizeLimit = getLimit(limits, "fieldNameSize", 100); + this.fieldsLimit = getLimit(limits, "fields", Infinity); + let charset; + for (var i = 0, len = parsedConType.length; i < len; ++i) { + if (Array.isArray(parsedConType[i]) && RE_CHARSET.test(parsedConType[i][0])) { + charset = parsedConType[i][1].toLowerCase(); + break; + } + } + if (charset === void 0) { + charset = cfg.defCharset || "utf8"; + } + this.decoder = new Decoder(); + this.charset = charset; + this._fields = 0; + this._state = "key"; + this._checkingBytes = true; + this._bytesKey = 0; + this._bytesVal = 0; + this._key = ""; + this._val = ""; + this._keyTrunc = false; + this._valTrunc = false; + this._hitLimit = false; + } + UrlEncoded.prototype.write = function(data, cb) { + if (this._fields === this.fieldsLimit) { + if (!this.boy.hitFieldsLimit) { + this.boy.hitFieldsLimit = true; + this.boy.emit("fieldsLimit"); + } + return cb(); + } + let idxeq; + let idxamp; + let i; + let p = 0; + const len = data.length; + while (p < len) { + if (this._state === "key") { + idxeq = idxamp = void 0; + for (i = p; i < len; ++i) { + if (!this._checkingBytes) { + ++p; + } + if (data[i] === 61) { + idxeq = i; + break; + } else if (data[i] === 38) { + idxamp = i; + break; + } + if (this._checkingBytes && this._bytesKey === this.fieldNameSizeLimit) { + this._hitLimit = true; + break; + } else if (this._checkingBytes) { + ++this._bytesKey; + } + } + if (idxeq !== void 0) { + if (idxeq > p) { + this._key += this.decoder.write(data.toString("binary", p, idxeq)); + } + this._state = "val"; + this._hitLimit = false; + this._checkingBytes = true; + this._val = ""; + this._bytesVal = 0; + this._valTrunc = false; + this.decoder.reset(); + p = idxeq + 1; + } else if (idxamp !== void 0) { + ++this._fields; + let key; + const keyTrunc = this._keyTrunc; + if (idxamp > p) { + key = this._key += this.decoder.write(data.toString("binary", p, idxamp)); + } else { + key = this._key; + } + this._hitLimit = false; + this._checkingBytes = true; + this._key = ""; + this._bytesKey = 0; + this._keyTrunc = false; + this.decoder.reset(); + if (key.length) { + this.boy.emit( + "field", + decodeText(key, "binary", this.charset), + "", + keyTrunc, + false + ); + } + p = idxamp + 1; + if (this._fields === this.fieldsLimit) { + return cb(); + } + } else if (this._hitLimit) { + if (i > p) { + this._key += this.decoder.write(data.toString("binary", p, i)); + } + p = i; + if ((this._bytesKey = this._key.length) === this.fieldNameSizeLimit) { + this._checkingBytes = false; + this._keyTrunc = true; + } + } else { + if (p < len) { + this._key += this.decoder.write(data.toString("binary", p)); + } + p = len; + } + } else { + idxamp = void 0; + for (i = p; i < len; ++i) { + if (!this._checkingBytes) { + ++p; + } + if (data[i] === 38) { + idxamp = i; + break; + } + if (this._checkingBytes && this._bytesVal === this.fieldSizeLimit) { + this._hitLimit = true; + break; + } else if (this._checkingBytes) { + ++this._bytesVal; + } + } + if (idxamp !== void 0) { + ++this._fields; + if (idxamp > p) { + this._val += this.decoder.write(data.toString("binary", p, idxamp)); + } + this.boy.emit( + "field", + decodeText(this._key, "binary", this.charset), + decodeText(this._val, "binary", this.charset), + this._keyTrunc, + this._valTrunc + ); + this._state = "key"; + this._hitLimit = false; + this._checkingBytes = true; + this._key = ""; + this._bytesKey = 0; + this._keyTrunc = false; + this.decoder.reset(); + p = idxamp + 1; + if (this._fields === this.fieldsLimit) { + return cb(); + } + } else if (this._hitLimit) { + if (i > p) { + this._val += this.decoder.write(data.toString("binary", p, i)); + } + p = i; + if (this._val === "" && this.fieldSizeLimit === 0 || (this._bytesVal = this._val.length) === this.fieldSizeLimit) { + this._checkingBytes = false; + this._valTrunc = true; + } + } else { + if (p < len) { + this._val += this.decoder.write(data.toString("binary", p)); + } + p = len; + } + } + } + cb(); + }; + UrlEncoded.prototype.end = function() { + if (this.boy._done) { + return; + } + if (this._state === "key" && this._key.length > 0) { + this.boy.emit( + "field", + decodeText(this._key, "binary", this.charset), + "", + this._keyTrunc, + false + ); + } else if (this._state === "val") { + this.boy.emit( + "field", + decodeText(this._key, "binary", this.charset), + decodeText(this._val, "binary", this.charset), + this._keyTrunc, + this._valTrunc + ); + } + this.boy._done = true; + this.boy.emit("finish"); + }; + module2.exports = UrlEncoded; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/main.js +var require_main = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/main.js"(exports, module2) { + "use strict"; + var WritableStream = require("stream").Writable; + var { inherits } = require("util"); + var Dicer = require_Dicer(); + var MultipartParser = require_multipart(); + var UrlencodedParser = require_urlencoded(); + var parseParams = require_parseParams(); + function Busboy(opts) { + if (!(this instanceof Busboy)) { + return new Busboy(opts); + } + if (typeof opts !== "object") { + throw new TypeError("Busboy expected an options-Object."); + } + if (typeof opts.headers !== "object") { + throw new TypeError("Busboy expected an options-Object with headers-attribute."); + } + if (typeof opts.headers["content-type"] !== "string") { + throw new TypeError("Missing Content-Type-header."); + } + const { + headers, + ...streamOptions + } = opts; + this.opts = { + autoDestroy: false, + ...streamOptions + }; + WritableStream.call(this, this.opts); + this._done = false; + this._parser = this.getParserByHeaders(headers); + this._finished = false; + } + inherits(Busboy, WritableStream); + Busboy.prototype.emit = function(ev) { + var _a; + if (ev === "finish") { + if (!this._done) { + (_a = this._parser) == null ? void 0 : _a.end(); + return; + } else if (this._finished) { + return; + } + this._finished = true; + } + WritableStream.prototype.emit.apply(this, arguments); + }; + Busboy.prototype.getParserByHeaders = function(headers) { + const parsed = parseParams(headers["content-type"]); + const cfg = { + defCharset: this.opts.defCharset, + fileHwm: this.opts.fileHwm, + headers, + highWaterMark: this.opts.highWaterMark, + isPartAFile: this.opts.isPartAFile, + limits: this.opts.limits, + parsedConType: parsed, + preservePath: this.opts.preservePath + }; + if (MultipartParser.detect.test(parsed[0])) { + return new MultipartParser(this, cfg); + } + if (UrlencodedParser.detect.test(parsed[0])) { + return new UrlencodedParser(this, cfg); + } + throw new Error("Unsupported Content-Type."); + }; + Busboy.prototype._write = function(chunk, encoding, cb) { + this._parser.write(chunk, cb); + }; + module2.exports = Busboy; + module2.exports.default = Busboy; + module2.exports.Busboy = Busboy; + module2.exports.Dicer = Dicer; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/constants.js +var require_constants = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/constants.js"(exports, module2) { + "use strict"; + var { MessageChannel, receiveMessageOnPort } = require("worker_threads"); + var corsSafeListedMethods = ["GET", "HEAD", "POST"]; + var corsSafeListedMethodsSet = new Set(corsSafeListedMethods); + var nullBodyStatus = [101, 204, 205, 304]; + var redirectStatus = [301, 302, 303, 307, 308]; + var redirectStatusSet = new Set(redirectStatus); + var badPorts = [ + "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", + "5060", + "5061", + "6000", + "6566", + "6665", + "6666", + "6667", + "6668", + "6669", + "6697", + "10080" + ]; + var badPortsSet = new Set(badPorts); + var referrerPolicy = [ + "", + "no-referrer", + "no-referrer-when-downgrade", + "same-origin", + "origin", + "strict-origin", + "origin-when-cross-origin", + "strict-origin-when-cross-origin", + "unsafe-url" + ]; + var referrerPolicySet = new Set(referrerPolicy); + var requestRedirect = ["follow", "manual", "error"]; + var safeMethods = ["GET", "HEAD", "OPTIONS", "TRACE"]; + var safeMethodsSet = new Set(safeMethods); + var requestMode = ["navigate", "same-origin", "no-cors", "cors"]; + var requestCredentials = ["omit", "same-origin", "include"]; + var requestCache = [ + "default", + "no-store", + "reload", + "no-cache", + "force-cache", + "only-if-cached" + ]; + var requestBodyHeader = [ + "content-encoding", + "content-language", + "content-location", + "content-type", + // See https://github.com/nodejs/undici/issues/2021 + // 'Content-Length' is a forbidden header name, which is typically + // removed in the Headers implementation. However, undici doesn't + // filter out headers, so we add it here. + "content-length" + ]; + var requestDuplex = [ + "half" + ]; + var forbiddenMethods = ["CONNECT", "TRACE", "TRACK"]; + var forbiddenMethodsSet = new Set(forbiddenMethods); + var subresource = [ + "audio", + "audioworklet", + "font", + "image", + "manifest", + "paintworklet", + "script", + "style", + "track", + "video", + "xslt", + "" + ]; + var subresourceSet = new Set(subresource); + var DOMException2 = globalThis.DOMException ?? (() => { + try { + atob("~"); + } catch (err) { + return Object.getPrototypeOf(err).constructor; + } + })(); + var channel; + var structuredClone = globalThis.structuredClone ?? // https://github.com/nodejs/node/blob/b27ae24dcc4251bad726d9d84baf678d1f707fed/lib/internal/structured_clone.js + // structuredClone was added in v17.0.0, but fetch supports v16.8 + function structuredClone2(value, options = void 0) { + if (arguments.length === 0) { + throw new TypeError("missing argument"); + } + if (!channel) { + channel = new MessageChannel(); + } + channel.port1.unref(); + channel.port2.unref(); + channel.port1.postMessage(value, options == null ? void 0 : options.transfer); + return receiveMessageOnPort(channel.port2).message; + }; + module2.exports = { + DOMException: DOMException2, + structuredClone, + subresource, + forbiddenMethods, + requestBodyHeader, + referrerPolicy, + requestRedirect, + requestMode, + requestCredentials, + requestCache, + redirectStatus, + corsSafeListedMethods, + nullBodyStatus, + safeMethods, + badPorts, + requestDuplex, + subresourceSet, + badPortsSet, + redirectStatusSet, + corsSafeListedMethodsSet, + safeMethodsSet, + forbiddenMethodsSet, + referrerPolicySet + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/global.js +var require_global = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/global.js"(exports, module2) { + "use strict"; + var globalOrigin = Symbol.for("undici.globalOrigin.1"); + function getGlobalOrigin() { + return globalThis[globalOrigin]; + } + function setGlobalOrigin(newOrigin) { + if (newOrigin === void 0) { + Object.defineProperty(globalThis, globalOrigin, { + value: void 0, + writable: true, + enumerable: false, + configurable: false + }); + return; + } + const parsedURL = new URL(newOrigin); + if (parsedURL.protocol !== "http:" && parsedURL.protocol !== "https:") { + throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`); + } + Object.defineProperty(globalThis, globalOrigin, { + value: parsedURL, + writable: true, + enumerable: false, + configurable: false + }); + } + module2.exports = { + getGlobalOrigin, + setGlobalOrigin + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/util.js +var require_util2 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/util.js"(exports, module2) { + "use strict"; + var { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = require_constants(); + var { getGlobalOrigin } = require_global(); + var { performance: performance2 } = require("perf_hooks"); + var { isBlobLike, toUSVString, ReadableStreamFrom } = require_util(); + var assert = require("assert"); + var { isUint8Array } = require("util/types"); + var crypto; + try { + crypto = require("crypto"); + } catch { + } + function responseURL(response) { + const urlList = response.urlList; + const length = urlList.length; + return length === 0 ? null : urlList[length - 1].toString(); + } + function responseLocationURL(response, requestFragment) { + if (!redirectStatusSet.has(response.status)) { + return null; + } + let location = response.headersList.get("location"); + if (location !== null && isValidHeaderValue(location)) { + location = new URL(location, responseURL(response)); + } + if (location && !location.hash) { + location.hash = requestFragment; + } + return location; + } + function requestCurrentURL(request3) { + return request3.urlList[request3.urlList.length - 1]; + } + function requestBadPort(request3) { + const url = requestCurrentURL(request3); + if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) { + return "blocked"; + } + return "allowed"; + } + function isErrorLike(object) { + var _a, _b; + return object instanceof Error || (((_a = object == null ? void 0 : object.constructor) == null ? void 0 : _a.name) === "Error" || ((_b = object == null ? void 0 : object.constructor) == null ? void 0 : _b.name) === "DOMException"); + } + function isValidReasonPhrase(statusText) { + for (let i = 0; i < statusText.length; ++i) { + const c = statusText.charCodeAt(i); + if (!(c === 9 || // HTAB + c >= 32 && c <= 126 || // SP / VCHAR + c >= 128 && c <= 255)) { + return false; + } + } + return true; + } + function isTokenChar(c) { + return !(c >= 127 || c <= 32 || c === "(" || c === ")" || c === "<" || c === ">" || c === "@" || c === "," || c === ";" || c === ":" || c === "\\" || c === '"' || c === "/" || c === "[" || c === "]" || c === "?" || c === "=" || c === "{" || c === "}"); + } + function isValidHTTPToken(characters) { + if (!characters || typeof characters !== "string") { + return false; + } + for (let i = 0; i < characters.length; ++i) { + const c = characters.charCodeAt(i); + if (c > 127 || !isTokenChar(c)) { + return false; + } + } + return true; + } + function isValidHeaderName(potentialValue) { + if (potentialValue.length === 0) { + return false; + } + return isValidHTTPToken(potentialValue); + } + function isValidHeaderValue(potentialValue) { + if (potentialValue.startsWith(" ") || potentialValue.startsWith(" ") || potentialValue.endsWith(" ") || potentialValue.endsWith(" ")) { + return false; + } + if (potentialValue.includes("\0") || potentialValue.includes("\r") || potentialValue.includes("\n")) { + return false; + } + return true; + } + function setRequestReferrerPolicyOnRedirect(request3, actualResponse) { + const { headersList } = actualResponse; + const policyHeader = (headersList.get("referrer-policy") ?? "").split(","); + let policy = ""; + if (policyHeader.length > 0) { + for (let i = policyHeader.length; i !== 0; i--) { + const token = policyHeader[i - 1].trim(); + if (referrerPolicyTokens.has(token)) { + policy = token; + break; + } + } + } + if (policy !== "") { + request3.referrerPolicy = policy; + } + } + function crossOriginResourcePolicyCheck() { + return "allowed"; + } + function corsCheck() { + return "success"; + } + function TAOCheck() { + return "success"; + } + function appendFetchMetadata(httpRequest) { + let header = null; + header = httpRequest.mode; + httpRequest.headersList.set("sec-fetch-mode", header); + } + function appendRequestOriginHeader(request3) { + let serializedOrigin = request3.origin; + if (request3.responseTainting === "cors" || request3.mode === "websocket") { + if (serializedOrigin) { + request3.headersList.append("origin", serializedOrigin); + } + } else if (request3.method !== "GET" && request3.method !== "HEAD") { + switch (request3.referrerPolicy) { + case "no-referrer": + serializedOrigin = null; + break; + case "no-referrer-when-downgrade": + case "strict-origin": + case "strict-origin-when-cross-origin": + if (request3.origin && urlHasHttpsScheme(request3.origin) && !urlHasHttpsScheme(requestCurrentURL(request3))) { + serializedOrigin = null; + } + break; + case "same-origin": + if (!sameOrigin(request3, requestCurrentURL(request3))) { + serializedOrigin = null; + } + break; + default: + } + if (serializedOrigin) { + request3.headersList.append("origin", serializedOrigin); + } + } + } + function coarsenedSharedCurrentTime(crossOriginIsolatedCapability) { + return performance2.now(); + } + function createOpaqueTimingInfo(timingInfo) { + return { + startTime: timingInfo.startTime ?? 0, + redirectStartTime: 0, + redirectEndTime: 0, + postRedirectStartTime: timingInfo.startTime ?? 0, + finalServiceWorkerStartTime: 0, + finalNetworkResponseStartTime: 0, + finalNetworkRequestStartTime: 0, + endTime: 0, + encodedBodySize: 0, + decodedBodySize: 0, + finalConnectionTimingInfo: null + }; + } + function makePolicyContainer() { + return { + referrerPolicy: "strict-origin-when-cross-origin" + }; + } + function clonePolicyContainer(policyContainer) { + return { + referrerPolicy: policyContainer.referrerPolicy + }; + } + function determineRequestsReferrer(request3) { + const policy = request3.referrerPolicy; + assert(policy); + let referrerSource = null; + if (request3.referrer === "client") { + const globalOrigin = getGlobalOrigin(); + if (!globalOrigin || globalOrigin.origin === "null") { + return "no-referrer"; + } + referrerSource = new URL(globalOrigin); + } else if (request3.referrer instanceof URL) { + referrerSource = request3.referrer; + } + let referrerURL = stripURLForReferrer(referrerSource); + const referrerOrigin = stripURLForReferrer(referrerSource, true); + if (referrerURL.toString().length > 4096) { + referrerURL = referrerOrigin; + } + const areSameOrigin = sameOrigin(request3, referrerURL); + const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(request3.url); + switch (policy) { + case "origin": + return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true); + case "unsafe-url": + return referrerURL; + case "same-origin": + return areSameOrigin ? referrerOrigin : "no-referrer"; + case "origin-when-cross-origin": + return areSameOrigin ? referrerURL : referrerOrigin; + case "strict-origin-when-cross-origin": { + const currentURL = requestCurrentURL(request3); + if (sameOrigin(referrerURL, currentURL)) { + return referrerURL; + } + if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) { + return "no-referrer"; + } + return referrerOrigin; + } + case "strict-origin": + case "no-referrer-when-downgrade": + default: + return isNonPotentiallyTrustWorthy ? "no-referrer" : referrerOrigin; + } + } + function stripURLForReferrer(url, originOnly) { + assert(url instanceof URL); + if (url.protocol === "file:" || url.protocol === "about:" || url.protocol === "blank:") { + return "no-referrer"; + } + url.username = ""; + url.password = ""; + url.hash = ""; + if (originOnly) { + url.pathname = ""; + url.search = ""; + } + return url; + } + function isURLPotentiallyTrustworthy(url) { + if (!(url instanceof URL)) { + return false; + } + if (url.href === "about:blank" || url.href === "about:srcdoc") { + return true; + } + if (url.protocol === "data:") + return true; + if (url.protocol === "file:") + return true; + return isOriginPotentiallyTrustworthy(url.origin); + function isOriginPotentiallyTrustworthy(origin) { + if (origin == null || origin === "null") + return false; + const originAsURL = new URL(origin); + if (originAsURL.protocol === "https:" || originAsURL.protocol === "wss:") { + return true; + } + if (/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(originAsURL.hostname) || (originAsURL.hostname === "localhost" || originAsURL.hostname.includes("localhost.")) || originAsURL.hostname.endsWith(".localhost")) { + return true; + } + return false; + } + } + function bytesMatch(bytes, metadataList) { + if (crypto === void 0) { + return true; + } + const parsedMetadata = parseMetadata(metadataList); + if (parsedMetadata === "no metadata") { + return true; + } + if (parsedMetadata.length === 0) { + return true; + } + const list = parsedMetadata.sort((c, d) => d.algo.localeCompare(c.algo)); + const strongest = list[0].algo; + const metadata = list.filter((item) => item.algo === strongest); + for (const item of metadata) { + const algorithm = item.algo; + let expectedValue = item.hash; + if (expectedValue.endsWith("==")) { + expectedValue = expectedValue.slice(0, -2); + } + let actualValue = crypto.createHash(algorithm).update(bytes).digest("base64"); + if (actualValue.endsWith("==")) { + actualValue = actualValue.slice(0, -2); + } + if (actualValue === expectedValue) { + return true; + } + let actualBase64URL = crypto.createHash(algorithm).update(bytes).digest("base64url"); + if (actualBase64URL.endsWith("==")) { + actualBase64URL = actualBase64URL.slice(0, -2); + } + if (actualBase64URL === expectedValue) { + return true; + } + } + return false; + } + var parseHashWithOptions = /((?sha256|sha384|sha512)-(?[A-z0-9+/]{1}.*={0,2}))( +[\x21-\x7e]?)?/i; + function parseMetadata(metadata) { + const result = []; + let empty = true; + const supportedHashes = crypto.getHashes(); + for (const token of metadata.split(" ")) { + empty = false; + const parsedToken = parseHashWithOptions.exec(token); + if (parsedToken === null || parsedToken.groups === void 0) { + continue; + } + const algorithm = parsedToken.groups.algo; + if (supportedHashes.includes(algorithm.toLowerCase())) { + result.push(parsedToken.groups); + } + } + if (empty === true) { + return "no metadata"; + } + return result; + } + function tryUpgradeRequestToAPotentiallyTrustworthyURL(request3) { + } + function sameOrigin(A, B) { + if (A.origin === B.origin && A.origin === "null") { + return true; + } + if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) { + return true; + } + return false; + } + function createDeferredPromise() { + let res; + let rej; + const promise = new Promise((resolve, reject) => { + res = resolve; + rej = reject; + }); + return { promise, resolve: res, reject: rej }; + } + function isAborted(fetchParams) { + return fetchParams.controller.state === "aborted"; + } + function isCancelled(fetchParams) { + return fetchParams.controller.state === "aborted" || fetchParams.controller.state === "terminated"; + } + function normalizeMethod(method) { + return /^(DELETE|GET|HEAD|OPTIONS|POST|PUT)$/i.test(method) ? method.toUpperCase() : method; + } + function serializeJavascriptValueToJSONString(value) { + const result = JSON.stringify(value); + if (result === void 0) { + throw new TypeError("Value is not JSON serializable"); + } + assert(typeof result === "string"); + return result; + } + var esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())); + function makeIterator(iterator, name, kind) { + const object = { + index: 0, + kind, + target: iterator + }; + const i = { + next() { + if (Object.getPrototypeOf(this) !== i) { + throw new TypeError( + `'next' called on an object that does not implement interface ${name} Iterator.` + ); + } + const { index, kind: kind2, target } = object; + const values = target(); + const len = values.length; + if (index >= len) { + return { value: void 0, done: true }; + } + const pair = values[index]; + object.index = index + 1; + return iteratorResult(pair, kind2); + }, + // The class string of an iterator prototype object for a given interface is the + // result of concatenating the identifier of the interface and the string " Iterator". + [Symbol.toStringTag]: `${name} Iterator` + }; + Object.setPrototypeOf(i, esIteratorPrototype); + return Object.setPrototypeOf({}, i); + } + function iteratorResult(pair, kind) { + let result; + switch (kind) { + case "key": { + result = pair[0]; + break; + } + case "value": { + result = pair[1]; + break; + } + case "key+value": { + result = pair; + break; + } + } + return { value: result, done: false }; + } + async function fullyReadBody(body, processBody, processBodyError) { + const successSteps = processBody; + const errorSteps = processBodyError; + let reader; + try { + reader = body.stream.getReader(); + } catch (e) { + errorSteps(e); + return; + } + try { + const result = await readAllBytes(reader); + successSteps(result); + } catch (e) { + errorSteps(e); + } + } + var ReadableStream = globalThis.ReadableStream; + function isReadableStreamLike(stream) { + if (!ReadableStream) { + ReadableStream = require("stream/web").ReadableStream; + } + return stream instanceof ReadableStream || stream[Symbol.toStringTag] === "ReadableStream" && typeof stream.tee === "function"; + } + var MAXIMUM_ARGUMENT_LENGTH = 65535; + function isomorphicDecode(input) { + if (input.length < MAXIMUM_ARGUMENT_LENGTH) { + return String.fromCharCode(...input); + } + return input.reduce((previous, current) => previous + String.fromCharCode(current), ""); + } + function readableStreamClose(controller) { + try { + controller.close(); + } catch (err) { + if (!err.message.includes("Controller is already closed")) { + throw err; + } + } + } + function isomorphicEncode(input) { + for (let i = 0; i < input.length; i++) { + assert(input.charCodeAt(i) <= 255); + } + return input; + } + async function readAllBytes(reader) { + const bytes = []; + let byteLength = 0; + while (true) { + const { done, value: chunk } = await reader.read(); + if (done) { + return Buffer.concat(bytes, byteLength); + } + if (!isUint8Array(chunk)) { + throw new TypeError("Received non-Uint8Array chunk"); + } + bytes.push(chunk); + byteLength += chunk.length; + } + } + function urlIsLocal(url) { + assert("protocol" in url); + const protocol = url.protocol; + return protocol === "about:" || protocol === "blob:" || protocol === "data:"; + } + function urlHasHttpsScheme(url) { + if (typeof url === "string") { + return url.startsWith("https:"); + } + return url.protocol === "https:"; + } + function urlIsHttpHttpsScheme(url) { + assert("protocol" in url); + const protocol = url.protocol; + return protocol === "http:" || protocol === "https:"; + } + var hasOwn = Object.hasOwn || ((dict, key) => Object.prototype.hasOwnProperty.call(dict, key)); + module2.exports = { + isAborted, + isCancelled, + createDeferredPromise, + ReadableStreamFrom, + toUSVString, + tryUpgradeRequestToAPotentiallyTrustworthyURL, + coarsenedSharedCurrentTime, + determineRequestsReferrer, + makePolicyContainer, + clonePolicyContainer, + appendFetchMetadata, + appendRequestOriginHeader, + TAOCheck, + corsCheck, + crossOriginResourcePolicyCheck, + createOpaqueTimingInfo, + setRequestReferrerPolicyOnRedirect, + isValidHTTPToken, + requestBadPort, + requestCurrentURL, + responseURL, + responseLocationURL, + isBlobLike, + isURLPotentiallyTrustworthy, + isValidReasonPhrase, + sameOrigin, + normalizeMethod, + serializeJavascriptValueToJSONString, + makeIterator, + isValidHeaderName, + isValidHeaderValue, + hasOwn, + isErrorLike, + fullyReadBody, + bytesMatch, + isReadableStreamLike, + readableStreamClose, + isomorphicEncode, + isomorphicDecode, + urlIsLocal, + urlHasHttpsScheme, + urlIsHttpHttpsScheme, + readAllBytes + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/symbols.js +var require_symbols2 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/symbols.js"(exports, module2) { + "use strict"; + module2.exports = { + kUrl: Symbol("url"), + kHeaders: Symbol("headers"), + kSignal: Symbol("signal"), + kState: Symbol("state"), + kGuard: Symbol("guard"), + kRealm: Symbol("realm") + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/webidl.js +var require_webidl = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/webidl.js"(exports, module2) { + "use strict"; + var { types } = require("util"); + var { hasOwn, toUSVString } = require_util2(); + var webidl = {}; + webidl.converters = {}; + webidl.util = {}; + webidl.errors = {}; + webidl.errors.exception = function(message) { + return new TypeError(`${message.header}: ${message.message}`); + }; + webidl.errors.conversionFailed = function(context) { + const plural = context.types.length === 1 ? "" : " one of"; + const message = `${context.argument} could not be converted to${plural}: ${context.types.join(", ")}.`; + return webidl.errors.exception({ + header: context.prefix, + message + }); + }; + webidl.errors.invalidArgument = function(context) { + return webidl.errors.exception({ + header: context.prefix, + message: `"${context.value}" is an invalid ${context.type}.` + }); + }; + webidl.brandCheck = function(V, I, opts = void 0) { + if ((opts == null ? void 0 : opts.strict) !== false && !(V instanceof I)) { + throw new TypeError("Illegal invocation"); + } else { + return (V == null ? void 0 : V[Symbol.toStringTag]) === I.prototype[Symbol.toStringTag]; + } + }; + webidl.argumentLengthCheck = function({ length }, min, ctx) { + if (length < min) { + throw webidl.errors.exception({ + message: `${min} argument${min !== 1 ? "s" : ""} required, but${length ? " only" : ""} ${length} found.`, + ...ctx + }); + } + }; + webidl.illegalConstructor = function() { + throw webidl.errors.exception({ + header: "TypeError", + message: "Illegal constructor" + }); + }; + webidl.util.Type = function(V) { + switch (typeof V) { + 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": { + if (V === null) { + return "Null"; + } + return "Object"; + } + } + }; + webidl.util.ConvertToInt = function(V, bitLength, signedness, opts = {}) { + let upperBound; + let lowerBound; + if (bitLength === 64) { + upperBound = Math.pow(2, 53) - 1; + if (signedness === "unsigned") { + lowerBound = 0; + } else { + lowerBound = Math.pow(-2, 53) + 1; + } + } else if (signedness === "unsigned") { + lowerBound = 0; + upperBound = Math.pow(2, bitLength) - 1; + } else { + lowerBound = Math.pow(-2, bitLength) - 1; + upperBound = Math.pow(2, bitLength - 1) - 1; + } + let x = Number(V); + if (x === 0) { + x = 0; + } + if (opts.enforceRange === true) { + if (Number.isNaN(x) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) { + throw webidl.errors.exception({ + header: "Integer conversion", + message: `Could not convert ${V} to an integer.` + }); + } + x = webidl.util.IntegerPart(x); + if (x < lowerBound || x > upperBound) { + throw webidl.errors.exception({ + header: "Integer conversion", + message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.` + }); + } + return x; + } + if (!Number.isNaN(x) && opts.clamp === true) { + x = Math.min(Math.max(x, lowerBound), upperBound); + if (Math.floor(x) % 2 === 0) { + x = Math.floor(x); + } else { + x = Math.ceil(x); + } + return x; + } + if (Number.isNaN(x) || x === 0 && Object.is(0, x) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) { + return 0; + } + x = webidl.util.IntegerPart(x); + x = x % Math.pow(2, bitLength); + if (signedness === "signed" && x >= Math.pow(2, bitLength) - 1) { + return x - Math.pow(2, bitLength); + } + return x; + }; + webidl.util.IntegerPart = function(n) { + const r = Math.floor(Math.abs(n)); + if (n < 0) { + return -1 * r; + } + return r; + }; + webidl.sequenceConverter = function(converter) { + return (V) => { + var _a; + if (webidl.util.Type(V) !== "Object") { + throw webidl.errors.exception({ + header: "Sequence", + message: `Value of type ${webidl.util.Type(V)} is not an Object.` + }); + } + const method = (_a = V == null ? void 0 : V[Symbol.iterator]) == null ? void 0 : _a.call(V); + const seq = []; + if (method === void 0 || typeof method.next !== "function") { + throw webidl.errors.exception({ + header: "Sequence", + message: "Object is not an iterator." + }); + } + while (true) { + const { done, value } = method.next(); + if (done) { + break; + } + seq.push(converter(value)); + } + return seq; + }; + }; + webidl.recordConverter = function(keyConverter, valueConverter) { + return (O) => { + if (webidl.util.Type(O) !== "Object") { + throw webidl.errors.exception({ + header: "Record", + message: `Value of type ${webidl.util.Type(O)} is not an Object.` + }); + } + const result = {}; + if (!types.isProxy(O)) { + const keys2 = Object.keys(O); + for (const key of keys2) { + const typedKey = keyConverter(key); + const typedValue = valueConverter(O[key]); + result[typedKey] = typedValue; + } + return result; + } + const keys = Reflect.ownKeys(O); + for (const key of keys) { + const desc = Reflect.getOwnPropertyDescriptor(O, key); + if (desc == null ? void 0 : desc.enumerable) { + const typedKey = keyConverter(key); + const typedValue = valueConverter(O[key]); + result[typedKey] = typedValue; + } + } + return result; + }; + }; + webidl.interfaceConverter = function(i) { + return (V, opts = {}) => { + if (opts.strict !== false && !(V instanceof i)) { + throw webidl.errors.exception({ + header: i.name, + message: `Expected ${V} to be an instance of ${i.name}.` + }); + } + return V; + }; + }; + webidl.dictionaryConverter = function(converters) { + return (dictionary) => { + const type = webidl.util.Type(dictionary); + const dict = {}; + if (type === "Null" || type === "Undefined") { + return dict; + } else if (type !== "Object") { + throw webidl.errors.exception({ + header: "Dictionary", + message: `Expected ${dictionary} to be one of: Null, Undefined, Object.` + }); + } + for (const options of converters) { + const { key, defaultValue, required, converter } = options; + if (required === true) { + if (!hasOwn(dictionary, key)) { + throw webidl.errors.exception({ + header: "Dictionary", + message: `Missing required key "${key}".` + }); + } + } + let value = dictionary[key]; + const hasDefault = hasOwn(options, "defaultValue"); + if (hasDefault && value !== null) { + value = value ?? defaultValue; + } + if (required || hasDefault || value !== void 0) { + value = converter(value); + if (options.allowedValues && !options.allowedValues.includes(value)) { + throw webidl.errors.exception({ + header: "Dictionary", + message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(", ")}.` + }); + } + dict[key] = value; + } + } + return dict; + }; + }; + webidl.nullableConverter = function(converter) { + return (V) => { + if (V === null) { + return V; + } + return converter(V); + }; + }; + webidl.converters.DOMString = function(V, opts = {}) { + if (V === null && opts.legacyNullToEmptyString) { + return ""; + } + if (typeof V === "symbol") { + throw new TypeError("Could not convert argument of type symbol to string."); + } + return String(V); + }; + webidl.converters.ByteString = function(V) { + const x = webidl.converters.DOMString(V); + for (let index = 0; index < x.length; index++) { + const charCode = x.charCodeAt(index); + if (charCode > 255) { + throw new TypeError( + `Cannot convert argument to a ByteString because the character at index ${index} has a value of ${charCode} which is greater than 255.` + ); + } + } + return x; + }; + webidl.converters.USVString = toUSVString; + webidl.converters.boolean = function(V) { + const x = Boolean(V); + return x; + }; + webidl.converters.any = function(V) { + return V; + }; + webidl.converters["long long"] = function(V) { + const x = webidl.util.ConvertToInt(V, 64, "signed"); + return x; + }; + webidl.converters["unsigned long long"] = function(V) { + const x = webidl.util.ConvertToInt(V, 64, "unsigned"); + return x; + }; + webidl.converters["unsigned long"] = function(V) { + const x = webidl.util.ConvertToInt(V, 32, "unsigned"); + return x; + }; + webidl.converters["unsigned short"] = function(V, opts) { + const x = webidl.util.ConvertToInt(V, 16, "unsigned", opts); + return x; + }; + webidl.converters.ArrayBuffer = function(V, opts = {}) { + if (webidl.util.Type(V) !== "Object" || !types.isAnyArrayBuffer(V)) { + throw webidl.errors.conversionFailed({ + prefix: `${V}`, + argument: `${V}`, + types: ["ArrayBuffer"] + }); + } + if (opts.allowShared === false && types.isSharedArrayBuffer(V)) { + throw webidl.errors.exception({ + header: "ArrayBuffer", + message: "SharedArrayBuffer is not allowed." + }); + } + return V; + }; + webidl.converters.TypedArray = function(V, T, opts = {}) { + if (webidl.util.Type(V) !== "Object" || !types.isTypedArray(V) || V.constructor.name !== T.name) { + throw webidl.errors.conversionFailed({ + prefix: `${T.name}`, + argument: `${V}`, + types: [T.name] + }); + } + if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: "ArrayBuffer", + message: "SharedArrayBuffer is not allowed." + }); + } + return V; + }; + webidl.converters.DataView = function(V, opts = {}) { + if (webidl.util.Type(V) !== "Object" || !types.isDataView(V)) { + throw webidl.errors.exception({ + header: "DataView", + message: "Object is not a DataView." + }); + } + if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: "ArrayBuffer", + message: "SharedArrayBuffer is not allowed." + }); + } + return V; + }; + webidl.converters.BufferSource = function(V, opts = {}) { + if (types.isAnyArrayBuffer(V)) { + return webidl.converters.ArrayBuffer(V, opts); + } + if (types.isTypedArray(V)) { + return webidl.converters.TypedArray(V, V.constructor); + } + if (types.isDataView(V)) { + return webidl.converters.DataView(V, opts); + } + throw new TypeError(`Could not convert ${V} to a BufferSource.`); + }; + webidl.converters["sequence"] = webidl.sequenceConverter( + webidl.converters.ByteString + ); + webidl.converters["sequence>"] = webidl.sequenceConverter( + webidl.converters["sequence"] + ); + webidl.converters["record"] = webidl.recordConverter( + webidl.converters.ByteString, + webidl.converters.ByteString + ); + module2.exports = { + webidl + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/dataURL.js +var require_dataURL = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/dataURL.js"(exports, module2) { + var assert = require("assert"); + var { atob: atob2 } = require("buffer"); + var { isomorphicDecode } = require_util2(); + var encoder = new TextEncoder(); + var HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+-.^_|~A-Za-z0-9]+$/; + var HTTP_WHITESPACE_REGEX = /(\u000A|\u000D|\u0009|\u0020)/; + var HTTP_QUOTED_STRING_TOKENS = /[\u0009|\u0020-\u007E|\u0080-\u00FF]/; + function dataURLProcessor(dataURL) { + assert(dataURL.protocol === "data:"); + let input = URLSerializer(dataURL, true); + input = input.slice(5); + const position = { position: 0 }; + let mimeType = collectASequenceOfCodePointsFast( + ",", + input, + position + ); + const mimeTypeLength = mimeType.length; + mimeType = removeASCIIWhitespace(mimeType, true, true); + if (position.position >= input.length) { + return "failure"; + } + position.position++; + const encodedBody = input.slice(mimeTypeLength + 1); + let body = stringPercentDecode(encodedBody); + if (/;(\u0020){0,}base64$/i.test(mimeType)) { + const stringBody = isomorphicDecode(body); + body = forgivingBase64(stringBody); + if (body === "failure") { + return "failure"; + } + mimeType = mimeType.slice(0, -6); + mimeType = mimeType.replace(/(\u0020)+$/, ""); + mimeType = mimeType.slice(0, -1); + } + if (mimeType.startsWith(";")) { + mimeType = "text/plain" + mimeType; + } + let mimeTypeRecord = parseMIMEType(mimeType); + if (mimeTypeRecord === "failure") { + mimeTypeRecord = parseMIMEType("text/plain;charset=US-ASCII"); + } + return { mimeType: mimeTypeRecord, body }; + } + function URLSerializer(url, excludeFragment = false) { + const href = url.href; + if (!excludeFragment) { + return href; + } + const hash = href.lastIndexOf("#"); + if (hash === -1) { + return href; + } + return href.slice(0, hash); + } + function collectASequenceOfCodePoints(condition, input, position) { + let result = ""; + while (position.position < input.length && condition(input[position.position])) { + result += input[position.position]; + position.position++; + } + return result; + } + function collectASequenceOfCodePointsFast(char, input, position) { + const idx = input.indexOf(char, position.position); + const start = position.position; + if (idx === -1) { + position.position = input.length; + return input.slice(start); + } + position.position = idx; + return input.slice(start, position.position); + } + function stringPercentDecode(input) { + const bytes = encoder.encode(input); + return percentDecode(bytes); + } + function percentDecode(input) { + const output = []; + for (let i = 0; i < input.length; i++) { + const byte = input[i]; + if (byte !== 37) { + output.push(byte); + } else if (byte === 37 && !/^[0-9A-Fa-f]{2}$/i.test(String.fromCharCode(input[i + 1], input[i + 2]))) { + output.push(37); + } else { + const nextTwoBytes = String.fromCharCode(input[i + 1], input[i + 2]); + const bytePoint = Number.parseInt(nextTwoBytes, 16); + output.push(bytePoint); + i += 2; + } + } + return Uint8Array.from(output); + } + function parseMIMEType(input) { + input = removeHTTPWhitespace(input, true, true); + const position = { position: 0 }; + const type = collectASequenceOfCodePointsFast( + "/", + input, + position + ); + if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) { + return "failure"; + } + if (position.position > input.length) { + return "failure"; + } + position.position++; + let subtype = collectASequenceOfCodePointsFast( + ";", + input, + position + ); + subtype = removeHTTPWhitespace(subtype, false, true); + if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) { + return "failure"; + } + const typeLowercase = type.toLowerCase(); + const subtypeLowercase = subtype.toLowerCase(); + const mimeType = { + type: typeLowercase, + subtype: subtypeLowercase, + /** @type {Map} */ + parameters: /* @__PURE__ */ new Map(), + // https://mimesniff.spec.whatwg.org/#mime-type-essence + essence: `${typeLowercase}/${subtypeLowercase}` + }; + while (position.position < input.length) { + position.position++; + collectASequenceOfCodePoints( + // https://fetch.spec.whatwg.org/#http-whitespace + (char) => HTTP_WHITESPACE_REGEX.test(char), + input, + position + ); + let parameterName = collectASequenceOfCodePoints( + (char) => char !== ";" && char !== "=", + input, + position + ); + parameterName = parameterName.toLowerCase(); + if (position.position < input.length) { + if (input[position.position] === ";") { + continue; + } + position.position++; + } + if (position.position > input.length) { + break; + } + let parameterValue = null; + if (input[position.position] === '"') { + parameterValue = collectAnHTTPQuotedString(input, position, true); + collectASequenceOfCodePointsFast( + ";", + input, + position + ); + } else { + parameterValue = collectASequenceOfCodePointsFast( + ";", + input, + position + ); + parameterValue = removeHTTPWhitespace(parameterValue, false, true); + if (parameterValue.length === 0) { + continue; + } + } + if (parameterName.length !== 0 && HTTP_TOKEN_CODEPOINTS.test(parameterName) && (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) && !mimeType.parameters.has(parameterName)) { + mimeType.parameters.set(parameterName, parameterValue); + } + } + return mimeType; + } + function forgivingBase64(data) { + data = data.replace(/[\u0009\u000A\u000C\u000D\u0020]/g, ""); + if (data.length % 4 === 0) { + data = data.replace(/=?=$/, ""); + } + if (data.length % 4 === 1) { + return "failure"; + } + if (/[^+/0-9A-Za-z]/.test(data)) { + return "failure"; + } + const binary = atob2(data); + const bytes = new Uint8Array(binary.length); + for (let byte = 0; byte < binary.length; byte++) { + bytes[byte] = binary.charCodeAt(byte); + } + return bytes; + } + function collectAnHTTPQuotedString(input, position, extractValue) { + const positionStart = position.position; + let value = ""; + assert(input[position.position] === '"'); + position.position++; + while (true) { + value += collectASequenceOfCodePoints( + (char) => char !== '"' && char !== "\\", + input, + position + ); + if (position.position >= input.length) { + break; + } + const quoteOrBackslash = input[position.position]; + position.position++; + if (quoteOrBackslash === "\\") { + if (position.position >= input.length) { + value += "\\"; + break; + } + value += input[position.position]; + position.position++; + } else { + assert(quoteOrBackslash === '"'); + break; + } + } + if (extractValue) { + return value; + } + return input.slice(positionStart, position.position); + } + function serializeAMimeType(mimeType) { + assert(mimeType !== "failure"); + const { parameters, essence } = mimeType; + let serialization = essence; + for (let [name, value] of parameters.entries()) { + serialization += ";"; + serialization += name; + serialization += "="; + if (!HTTP_TOKEN_CODEPOINTS.test(value)) { + value = value.replace(/(\\|")/g, "\\$1"); + value = '"' + value; + value += '"'; + } + serialization += value; + } + return serialization; + } + function isHTTPWhiteSpace(char) { + return char === "\r" || char === "\n" || char === " " || char === " "; + } + function removeHTTPWhitespace(str, leading = true, trailing = true) { + let lead = 0; + let trail = str.length - 1; + if (leading) { + for (; lead < str.length && isHTTPWhiteSpace(str[lead]); lead++) + ; + } + if (trailing) { + for (; trail > 0 && isHTTPWhiteSpace(str[trail]); trail--) + ; + } + return str.slice(lead, trail + 1); + } + function isASCIIWhitespace(char) { + return char === "\r" || char === "\n" || char === " " || char === "\f" || char === " "; + } + function removeASCIIWhitespace(str, leading = true, trailing = true) { + let lead = 0; + let trail = str.length - 1; + if (leading) { + for (; lead < str.length && isASCIIWhitespace(str[lead]); lead++) + ; + } + if (trailing) { + for (; trail > 0 && isASCIIWhitespace(str[trail]); trail--) + ; + } + return str.slice(lead, trail + 1); + } + module2.exports = { + dataURLProcessor, + URLSerializer, + collectASequenceOfCodePoints, + collectASequenceOfCodePointsFast, + stringPercentDecode, + parseMIMEType, + collectAnHTTPQuotedString, + serializeAMimeType + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/file.js +var require_file = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/file.js"(exports, module2) { + "use strict"; + var { Blob: Blob2, File: NativeFile } = require("buffer"); + var { types } = require("util"); + var { kState } = require_symbols2(); + var { isBlobLike } = require_util2(); + var { webidl } = require_webidl(); + var { parseMIMEType, serializeAMimeType } = require_dataURL(); + var { kEnumerableProperty } = require_util(); + var encoder = new TextEncoder(); + var File = class _File extends Blob2 { + constructor(fileBits, fileName, options = {}) { + webidl.argumentLengthCheck(arguments, 2, { header: "File constructor" }); + fileBits = webidl.converters["sequence"](fileBits); + fileName = webidl.converters.USVString(fileName); + options = webidl.converters.FilePropertyBag(options); + const n = fileName; + let t = options.type; + let d; + substep: { + if (t) { + t = parseMIMEType(t); + if (t === "failure") { + t = ""; + break substep; + } + t = serializeAMimeType(t).toLowerCase(); + } + d = options.lastModified; + } + super(processBlobParts(fileBits, options), { type: t }); + this[kState] = { + name: n, + lastModified: d, + type: t + }; + } + get name() { + webidl.brandCheck(this, _File); + return this[kState].name; + } + get lastModified() { + webidl.brandCheck(this, _File); + return this[kState].lastModified; + } + get type() { + webidl.brandCheck(this, _File); + return this[kState].type; + } + }; + var FileLike = class _FileLike { + constructor(blobLike, fileName, options = {}) { + const n = fileName; + const t = options.type; + const d = options.lastModified ?? Date.now(); + this[kState] = { + blobLike, + name: n, + type: t, + lastModified: d + }; + } + stream(...args) { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.stream(...args); + } + arrayBuffer(...args) { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.arrayBuffer(...args); + } + slice(...args) { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.slice(...args); + } + text(...args) { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.text(...args); + } + get size() { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.size; + } + get type() { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.type; + } + get name() { + webidl.brandCheck(this, _FileLike); + return this[kState].name; + } + get lastModified() { + webidl.brandCheck(this, _FileLike); + return this[kState].lastModified; + } + get [Symbol.toStringTag]() { + return "File"; + } + }; + Object.defineProperties(File.prototype, { + [Symbol.toStringTag]: { + value: "File", + configurable: true + }, + name: kEnumerableProperty, + lastModified: kEnumerableProperty + }); + webidl.converters.Blob = webidl.interfaceConverter(Blob2); + webidl.converters.BlobPart = function(V, opts) { + if (webidl.util.Type(V) === "Object") { + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }); + } + if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) { + return webidl.converters.BufferSource(V, opts); + } + } + return webidl.converters.USVString(V, opts); + }; + webidl.converters["sequence"] = webidl.sequenceConverter( + webidl.converters.BlobPart + ); + webidl.converters.FilePropertyBag = webidl.dictionaryConverter([ + { + key: "lastModified", + converter: webidl.converters["long long"], + get defaultValue() { + return Date.now(); + } + }, + { + key: "type", + converter: webidl.converters.DOMString, + defaultValue: "" + }, + { + key: "endings", + converter: (value) => { + value = webidl.converters.DOMString(value); + value = value.toLowerCase(); + if (value !== "native") { + value = "transparent"; + } + return value; + }, + defaultValue: "transparent" + } + ]); + function processBlobParts(parts, options) { + const bytes = []; + for (const element of parts) { + if (typeof element === "string") { + let s = element; + if (options.endings === "native") { + s = convertLineEndingsNative(s); + } + bytes.push(encoder.encode(s)); + } else if (types.isAnyArrayBuffer(element) || types.isTypedArray(element)) { + if (!element.buffer) { + bytes.push(new Uint8Array(element)); + } else { + bytes.push( + new Uint8Array(element.buffer, element.byteOffset, element.byteLength) + ); + } + } else if (isBlobLike(element)) { + bytes.push(element); + } + } + return bytes; + } + function convertLineEndingsNative(s) { + let nativeLineEnding = "\n"; + if (process.platform === "win32") { + nativeLineEnding = "\r\n"; + } + return s.replace(/\r?\n/g, nativeLineEnding); + } + function isFileLike(object) { + return NativeFile && object instanceof NativeFile || object instanceof File || object && (typeof object.stream === "function" || typeof object.arrayBuffer === "function") && object[Symbol.toStringTag] === "File"; + } + module2.exports = { File, FileLike, isFileLike }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/formdata.js +var require_formdata = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/formdata.js"(exports, module2) { + "use strict"; + var { isBlobLike, toUSVString, makeIterator } = require_util2(); + var { kState } = require_symbols2(); + var { File: UndiciFile, FileLike, isFileLike } = require_file(); + var { webidl } = require_webidl(); + var { Blob: Blob2, File: NativeFile } = require("buffer"); + var File = NativeFile ?? UndiciFile; + var FormData = class _FormData { + constructor(form) { + if (form !== void 0) { + throw webidl.errors.conversionFailed({ + prefix: "FormData constructor", + argument: "Argument 1", + types: ["undefined"] + }); + } + this[kState] = []; + } + append(name, value, filename = void 0) { + webidl.brandCheck(this, _FormData); + webidl.argumentLengthCheck(arguments, 2, { header: "FormData.append" }); + if (arguments.length === 3 && !isBlobLike(value)) { + throw new TypeError( + "Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'" + ); + } + name = webidl.converters.USVString(name); + value = isBlobLike(value) ? webidl.converters.Blob(value, { strict: false }) : webidl.converters.USVString(value); + filename = arguments.length === 3 ? webidl.converters.USVString(filename) : void 0; + const entry = makeEntry(name, value, filename); + this[kState].push(entry); + } + delete(name) { + webidl.brandCheck(this, _FormData); + webidl.argumentLengthCheck(arguments, 1, { header: "FormData.delete" }); + name = webidl.converters.USVString(name); + this[kState] = this[kState].filter((entry) => entry.name !== name); + } + get(name) { + webidl.brandCheck(this, _FormData); + webidl.argumentLengthCheck(arguments, 1, { header: "FormData.get" }); + name = webidl.converters.USVString(name); + const idx = this[kState].findIndex((entry) => entry.name === name); + if (idx === -1) { + return null; + } + return this[kState][idx].value; + } + getAll(name) { + webidl.brandCheck(this, _FormData); + webidl.argumentLengthCheck(arguments, 1, { header: "FormData.getAll" }); + name = webidl.converters.USVString(name); + return this[kState].filter((entry) => entry.name === name).map((entry) => entry.value); + } + has(name) { + webidl.brandCheck(this, _FormData); + webidl.argumentLengthCheck(arguments, 1, { header: "FormData.has" }); + name = webidl.converters.USVString(name); + return this[kState].findIndex((entry) => entry.name === name) !== -1; + } + set(name, value, filename = void 0) { + webidl.brandCheck(this, _FormData); + webidl.argumentLengthCheck(arguments, 2, { header: "FormData.set" }); + if (arguments.length === 3 && !isBlobLike(value)) { + throw new TypeError( + "Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'" + ); + } + name = webidl.converters.USVString(name); + value = isBlobLike(value) ? webidl.converters.Blob(value, { strict: false }) : webidl.converters.USVString(value); + filename = arguments.length === 3 ? toUSVString(filename) : void 0; + const entry = makeEntry(name, value, filename); + const idx = this[kState].findIndex((entry2) => entry2.name === name); + if (idx !== -1) { + this[kState] = [ + ...this[kState].slice(0, idx), + entry, + ...this[kState].slice(idx + 1).filter((entry2) => entry2.name !== name) + ]; + } else { + this[kState].push(entry); + } + } + entries() { + webidl.brandCheck(this, _FormData); + return makeIterator( + () => this[kState].map((pair) => [pair.name, pair.value]), + "FormData", + "key+value" + ); + } + keys() { + webidl.brandCheck(this, _FormData); + return makeIterator( + () => this[kState].map((pair) => [pair.name, pair.value]), + "FormData", + "key" + ); + } + values() { + webidl.brandCheck(this, _FormData); + return makeIterator( + () => this[kState].map((pair) => [pair.name, pair.value]), + "FormData", + "value" + ); + } + /** + * @param {(value: string, key: string, self: FormData) => void} callbackFn + * @param {unknown} thisArg + */ + forEach(callbackFn, thisArg = globalThis) { + webidl.brandCheck(this, _FormData); + webidl.argumentLengthCheck(arguments, 1, { header: "FormData.forEach" }); + if (typeof callbackFn !== "function") { + throw new TypeError( + "Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'." + ); + } + for (const [key, value] of this) { + callbackFn.apply(thisArg, [value, key, this]); + } + } + }; + FormData.prototype[Symbol.iterator] = FormData.prototype.entries; + Object.defineProperties(FormData.prototype, { + [Symbol.toStringTag]: { + value: "FormData", + configurable: true + } + }); + function makeEntry(name, value, filename) { + name = Buffer.from(name).toString("utf8"); + if (typeof value === "string") { + value = Buffer.from(value).toString("utf8"); + } else { + if (!isFileLike(value)) { + value = value instanceof Blob2 ? new File([value], "blob", { type: value.type }) : new FileLike(value, "blob", { type: value.type }); + } + if (filename !== void 0) { + const options = { + type: value.type, + lastModified: value.lastModified + }; + value = NativeFile && value instanceof NativeFile || value instanceof UndiciFile ? new File([value], filename, options) : new FileLike(value, filename, options); + } + } + return { name, value }; + } + module2.exports = { FormData }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/body.js +var require_body = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/body.js"(exports, module2) { + "use strict"; + var Busboy = require_main(); + var util = require_util(); + var { + ReadableStreamFrom, + isBlobLike, + isReadableStreamLike, + readableStreamClose, + createDeferredPromise, + fullyReadBody + } = require_util2(); + var { FormData } = require_formdata(); + var { kState } = require_symbols2(); + var { webidl } = require_webidl(); + var { DOMException: DOMException2, structuredClone } = require_constants(); + var { Blob: Blob2, File: NativeFile } = require("buffer"); + var { kBodyUsed } = require_symbols(); + var assert = require("assert"); + var { isErrored } = require_util(); + var { isUint8Array, isArrayBuffer } = require("util/types"); + var { File: UndiciFile } = require_file(); + var { parseMIMEType, serializeAMimeType } = require_dataURL(); + var ReadableStream = globalThis.ReadableStream; + var File = NativeFile ?? UndiciFile; + var textEncoder = new TextEncoder(); + var textDecoder = new TextDecoder(); + function extractBody(object, keepalive = false) { + if (!ReadableStream) { + ReadableStream = require("stream/web").ReadableStream; + } + let stream = null; + if (object instanceof ReadableStream) { + stream = object; + } else if (isBlobLike(object)) { + stream = object.stream(); + } else { + stream = new ReadableStream({ + async pull(controller) { + controller.enqueue( + typeof source2 === "string" ? textEncoder.encode(source2) : source2 + ); + queueMicrotask(() => readableStreamClose(controller)); + }, + start() { + }, + type: void 0 + }); + } + assert(isReadableStreamLike(stream)); + let action = null; + let source2 = null; + let length = null; + let type = null; + if (typeof object === "string") { + source2 = object; + type = "text/plain;charset=UTF-8"; + } else if (object instanceof URLSearchParams) { + source2 = object.toString(); + type = "application/x-www-form-urlencoded;charset=UTF-8"; + } else if (isArrayBuffer(object)) { + source2 = new Uint8Array(object.slice()); + } else if (ArrayBuffer.isView(object)) { + source2 = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength)); + } else if (util.isFormDataLike(object)) { + const boundary = `----formdata-undici-0${`${Math.floor(Math.random() * 1e11)}`.padStart(11, "0")}`; + const prefix = `--${boundary}\r +Content-Disposition: form-data`; + const escape = (str) => str.replace(/\n/g, "%0A").replace(/\r/g, "%0D").replace(/"/g, "%22"); + const normalizeLinefeeds = (value) => value.replace(/\r?\n|\r/g, "\r\n"); + const blobParts = []; + const rn = new Uint8Array([13, 10]); + length = 0; + let hasUnknownSizeValue = false; + for (const [name, value] of object) { + if (typeof value === "string") { + const chunk2 = textEncoder.encode(prefix + `; name="${escape(normalizeLinefeeds(name))}"\r +\r +${normalizeLinefeeds(value)}\r +`); + blobParts.push(chunk2); + length += chunk2.byteLength; + } else { + const chunk2 = textEncoder.encode(`${prefix}; name="${escape(normalizeLinefeeds(name))}"` + (value.name ? `; filename="${escape(value.name)}"` : "") + `\r +Content-Type: ${value.type || "application/octet-stream"}\r +\r +`); + blobParts.push(chunk2, value, rn); + if (typeof value.size === "number") { + length += chunk2.byteLength + value.size + rn.byteLength; + } else { + hasUnknownSizeValue = true; + } + } + } + const chunk = textEncoder.encode(`--${boundary}--`); + blobParts.push(chunk); + length += chunk.byteLength; + if (hasUnknownSizeValue) { + length = null; + } + source2 = object; + action = async function* () { + for (const part of blobParts) { + if (part.stream) { + yield* part.stream(); + } else { + yield part; + } + } + }; + type = "multipart/form-data; boundary=" + boundary; + } else if (isBlobLike(object)) { + source2 = object; + length = object.size; + if (object.type) { + type = object.type; + } + } else if (typeof object[Symbol.asyncIterator] === "function") { + if (keepalive) { + throw new TypeError("keepalive"); + } + if (util.isDisturbed(object) || object.locked) { + throw new TypeError( + "Response body object should not be disturbed or locked" + ); + } + stream = object instanceof ReadableStream ? object : ReadableStreamFrom(object); + } + if (typeof source2 === "string" || util.isBuffer(source2)) { + length = Buffer.byteLength(source2); + } + if (action != null) { + let iterator; + stream = new ReadableStream({ + async start() { + iterator = action(object)[Symbol.asyncIterator](); + }, + async pull(controller) { + const { value, done } = await iterator.next(); + if (done) { + queueMicrotask(() => { + controller.close(); + }); + } else { + if (!isErrored(stream)) { + controller.enqueue(new Uint8Array(value)); + } + } + return controller.desiredSize > 0; + }, + async cancel(reason) { + await iterator.return(); + }, + type: void 0 + }); + } + const body = { stream, source: source2, length }; + return [body, type]; + } + function safelyExtractBody(object, keepalive = false) { + if (!ReadableStream) { + ReadableStream = require("stream/web").ReadableStream; + } + if (object instanceof ReadableStream) { + assert(!util.isDisturbed(object), "The body has already been consumed."); + assert(!object.locked, "The stream is locked."); + } + return extractBody(object, keepalive); + } + function cloneBody(body) { + const [out1, out2] = body.stream.tee(); + const out2Clone = structuredClone(out2, { transfer: [out2] }); + const [, finalClone] = out2Clone.tee(); + body.stream = out1; + return { + stream: finalClone, + length: body.length, + source: body.source + }; + } + async function* consumeBody(body) { + if (body) { + if (isUint8Array(body)) { + yield body; + } else { + const stream = body.stream; + if (util.isDisturbed(stream)) { + throw new TypeError("The body has already been consumed."); + } + if (stream.locked) { + throw new TypeError("The stream is locked."); + } + stream[kBodyUsed] = true; + yield* stream; + } + } + } + function throwIfAborted(state) { + if (state.aborted) { + throw new DOMException2("The operation was aborted.", "AbortError"); + } + } + function bodyMixinMethods(instance) { + const methods = { + blob() { + return specConsumeBody(this, (bytes) => { + let mimeType = bodyMimeType(this); + if (mimeType === "failure") { + mimeType = ""; + } else if (mimeType) { + mimeType = serializeAMimeType(mimeType); + } + return new Blob2([bytes], { type: mimeType }); + }, instance); + }, + arrayBuffer() { + return specConsumeBody(this, (bytes) => { + return new Uint8Array(bytes).buffer; + }, instance); + }, + text() { + return specConsumeBody(this, utf8DecodeBytes, instance); + }, + json() { + return specConsumeBody(this, parseJSONFromBytes, instance); + }, + async formData() { + webidl.brandCheck(this, instance); + throwIfAborted(this[kState]); + const contentType = this.headers.get("Content-Type"); + if (/multipart\/form-data/.test(contentType)) { + const headers = {}; + for (const [key, value] of this.headers) + headers[key.toLowerCase()] = value; + const responseFormData = new FormData(); + let busboy; + try { + busboy = new Busboy({ + headers, + preservePath: true + }); + } catch (err) { + throw new DOMException2(`${err}`, "AbortError"); + } + busboy.on("field", (name, value) => { + responseFormData.append(name, value); + }); + busboy.on("file", (name, value, filename, encoding, mimeType) => { + const chunks = []; + if (encoding === "base64" || encoding.toLowerCase() === "base64") { + let base64chunk = ""; + value.on("data", (chunk) => { + base64chunk += chunk.toString().replace(/[\r\n]/gm, ""); + const end = base64chunk.length - base64chunk.length % 4; + chunks.push(Buffer.from(base64chunk.slice(0, end), "base64")); + base64chunk = base64chunk.slice(end); + }); + value.on("end", () => { + chunks.push(Buffer.from(base64chunk, "base64")); + responseFormData.append(name, new File(chunks, filename, { type: mimeType })); + }); + } else { + value.on("data", (chunk) => { + chunks.push(chunk); + }); + value.on("end", () => { + responseFormData.append(name, new File(chunks, filename, { type: mimeType })); + }); + } + }); + const busboyResolve = new Promise((resolve, reject) => { + busboy.on("finish", resolve); + busboy.on("error", (err) => reject(new TypeError(err))); + }); + if (this.body !== null) + for await (const chunk of consumeBody(this[kState].body)) + busboy.write(chunk); + busboy.end(); + await busboyResolve; + return responseFormData; + } else if (/application\/x-www-form-urlencoded/.test(contentType)) { + let entries; + try { + let text = ""; + const streamingDecoder = new TextDecoder("utf-8", { ignoreBOM: true }); + for await (const chunk of consumeBody(this[kState].body)) { + if (!isUint8Array(chunk)) { + throw new TypeError("Expected Uint8Array chunk"); + } + text += streamingDecoder.decode(chunk, { stream: true }); + } + text += streamingDecoder.decode(); + entries = new URLSearchParams(text); + } catch (err) { + throw Object.assign(new TypeError(), { cause: err }); + } + const formData = new FormData(); + for (const [name, value] of entries) { + formData.append(name, value); + } + return formData; + } else { + await Promise.resolve(); + throwIfAborted(this[kState]); + throw webidl.errors.exception({ + header: `${instance.name}.formData`, + message: "Could not parse content as FormData." + }); + } + } + }; + return methods; + } + function mixinBody(prototype) { + Object.assign(prototype.prototype, bodyMixinMethods(prototype)); + } + async function specConsumeBody(object, convertBytesToJSValue, instance) { + webidl.brandCheck(object, instance); + throwIfAborted(object[kState]); + if (bodyUnusable(object[kState].body)) { + throw new TypeError("Body is unusable"); + } + const promise = createDeferredPromise(); + const errorSteps = (error) => promise.reject(error); + const successSteps = (data) => { + try { + promise.resolve(convertBytesToJSValue(data)); + } catch (e) { + errorSteps(e); + } + }; + if (object[kState].body == null) { + successSteps(new Uint8Array()); + return promise.promise; + } + await fullyReadBody(object[kState].body, successSteps, errorSteps); + return promise.promise; + } + function bodyUnusable(body) { + return body != null && (body.stream.locked || util.isDisturbed(body.stream)); + } + function utf8DecodeBytes(buffer) { + if (buffer.length === 0) { + return ""; + } + if (buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191) { + buffer = buffer.subarray(3); + } + const output = textDecoder.decode(buffer); + return output; + } + function parseJSONFromBytes(bytes) { + return JSON.parse(utf8DecodeBytes(bytes)); + } + function bodyMimeType(object) { + const { headersList } = object[kState]; + const contentType = headersList.get("content-type"); + if (contentType === null) { + return "failure"; + } + return parseMIMEType(contentType); + } + module2.exports = { + extractBody, + safelyExtractBody, + cloneBody, + mixinBody + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/request.js +var require_request = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/request.js"(exports, module2) { + "use strict"; + var { + InvalidArgumentError, + NotSupportedError + } = require_errors(); + var assert = require("assert"); + var { kHTTP2BuildRequest, kHTTP2CopyHeaders, kHTTP1BuildRequest } = require_symbols(); + var util = require_util(); + var tokenRegExp = /^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/; + var headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/; + var invalidPathRegex = /[^\u0021-\u00ff]/; + var kHandler = Symbol("handler"); + var channels = {}; + var extractBody; + try { + const diagnosticsChannel = require("diagnostics_channel"); + channels.create = diagnosticsChannel.channel("undici:request:create"); + channels.bodySent = diagnosticsChannel.channel("undici:request:bodySent"); + channels.headers = diagnosticsChannel.channel("undici:request:headers"); + channels.trailers = diagnosticsChannel.channel("undici:request:trailers"); + channels.error = diagnosticsChannel.channel("undici:request:error"); + } catch { + channels.create = { hasSubscribers: false }; + channels.bodySent = { hasSubscribers: false }; + channels.headers = { hasSubscribers: false }; + channels.trailers = { hasSubscribers: false }; + channels.error = { hasSubscribers: false }; + } + var Request = class _Request { + constructor(origin, { + path, + method, + body, + headers, + query, + idempotent, + blocking, + upgrade, + headersTimeout, + bodyTimeout, + reset, + throwOnError, + expectContinue + }, handler) { + if (typeof path !== "string") { + throw new InvalidArgumentError("path must be a string"); + } else if (path[0] !== "/" && !(path.startsWith("http://") || path.startsWith("https://")) && method !== "CONNECT") { + throw new InvalidArgumentError("path must be an absolute URL or start with a slash"); + } else if (invalidPathRegex.exec(path) !== null) { + throw new InvalidArgumentError("invalid request path"); + } + if (typeof method !== "string") { + throw new InvalidArgumentError("method must be a string"); + } else if (tokenRegExp.exec(method) === null) { + throw new InvalidArgumentError("invalid request method"); + } + if (upgrade && typeof upgrade !== "string") { + throw new InvalidArgumentError("upgrade must be a string"); + } + if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) { + throw new InvalidArgumentError("invalid headersTimeout"); + } + if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) { + throw new InvalidArgumentError("invalid bodyTimeout"); + } + if (reset != null && typeof reset !== "boolean") { + throw new InvalidArgumentError("invalid reset"); + } + if (expectContinue != null && typeof expectContinue !== "boolean") { + throw new InvalidArgumentError("invalid expectContinue"); + } + this.headersTimeout = headersTimeout; + this.bodyTimeout = bodyTimeout; + this.throwOnError = throwOnError === true; + this.method = method; + if (body == null) { + this.body = null; + } else if (util.isStream(body)) { + this.body = body; + } else if (util.isBuffer(body)) { + this.body = body.byteLength ? body : null; + } else if (ArrayBuffer.isView(body)) { + this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null; + } else if (body instanceof ArrayBuffer) { + this.body = body.byteLength ? Buffer.from(body) : null; + } else if (typeof body === "string") { + this.body = body.length ? Buffer.from(body) : null; + } else if (util.isFormDataLike(body) || util.isIterable(body) || util.isBlobLike(body)) { + this.body = body; + } else { + throw new InvalidArgumentError("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable"); + } + this.completed = false; + this.aborted = false; + this.upgrade = upgrade || null; + this.path = query ? util.buildURL(path, query) : path; + this.origin = origin; + this.idempotent = idempotent == null ? method === "HEAD" || method === "GET" : idempotent; + this.blocking = blocking == null ? false : blocking; + this.reset = reset == null ? null : reset; + this.host = null; + this.contentLength = null; + this.contentType = null; + this.headers = ""; + this.expectContinue = expectContinue != null ? expectContinue : false; + if (Array.isArray(headers)) { + if (headers.length % 2 !== 0) { + throw new InvalidArgumentError("headers array must be even"); + } + for (let i = 0; i < headers.length; i += 2) { + processHeader(this, headers[i], headers[i + 1]); + } + } else if (headers && typeof headers === "object") { + const keys = Object.keys(headers); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + processHeader(this, key, headers[key]); + } + } else if (headers != null) { + throw new InvalidArgumentError("headers must be an object or an array"); + } + if (util.isFormDataLike(this.body)) { + if (util.nodeMajor < 16 || util.nodeMajor === 16 && util.nodeMinor < 8) { + throw new InvalidArgumentError("Form-Data bodies are only supported in node v16.8 and newer."); + } + if (!extractBody) { + extractBody = require_body().extractBody; + } + const [bodyStream, contentType] = extractBody(body); + if (this.contentType == null) { + this.contentType = contentType; + this.headers += `content-type: ${contentType}\r +`; + } + this.body = bodyStream.stream; + this.contentLength = bodyStream.length; + } else if (util.isBlobLike(body) && this.contentType == null && body.type) { + this.contentType = body.type; + this.headers += `content-type: ${body.type}\r +`; + } + util.validateHandler(handler, method, upgrade); + this.servername = util.getServerName(this.host); + this[kHandler] = handler; + if (channels.create.hasSubscribers) { + channels.create.publish({ request: this }); + } + } + onBodySent(chunk) { + if (this[kHandler].onBodySent) { + try { + this[kHandler].onBodySent(chunk); + } catch (err) { + this.onError(err); + } + } + } + onRequestSent() { + if (channels.bodySent.hasSubscribers) { + channels.bodySent.publish({ request: this }); + } + if (this[kHandler].onRequestSent) { + try { + this[kHandler].onRequestSent(); + } catch (err) { + this.onError(err); + } + } + } + onConnect(abort) { + assert(!this.aborted); + assert(!this.completed); + return this[kHandler].onConnect(abort); + } + onHeaders(statusCode, headers, resume, statusText) { + assert(!this.aborted); + assert(!this.completed); + if (channels.headers.hasSubscribers) { + channels.headers.publish({ request: this, response: { statusCode, headers, statusText } }); + } + return this[kHandler].onHeaders(statusCode, headers, resume, statusText); + } + onData(chunk) { + assert(!this.aborted); + assert(!this.completed); + return this[kHandler].onData(chunk); + } + onUpgrade(statusCode, headers, socket) { + assert(!this.aborted); + assert(!this.completed); + return this[kHandler].onUpgrade(statusCode, headers, socket); + } + onComplete(trailers) { + assert(!this.aborted); + this.completed = true; + if (channels.trailers.hasSubscribers) { + channels.trailers.publish({ request: this, trailers }); + } + return this[kHandler].onComplete(trailers); + } + onError(error) { + if (channels.error.hasSubscribers) { + channels.error.publish({ request: this, error }); + } + if (this.aborted) { + return; + } + this.aborted = true; + return this[kHandler].onError(error); + } + // TODO: adjust to support H2 + addHeader(key, value) { + processHeader(this, key, value); + return this; + } + static [kHTTP1BuildRequest](origin, opts, handler) { + return new _Request(origin, opts, handler); + } + static [kHTTP2BuildRequest](origin, opts, handler) { + const headers = opts.headers; + opts = { ...opts, headers: null }; + const request3 = new _Request(origin, opts, handler); + request3.headers = {}; + if (Array.isArray(headers)) { + if (headers.length % 2 !== 0) { + throw new InvalidArgumentError("headers array must be even"); + } + for (let i = 0; i < headers.length; i += 2) { + processHeader(request3, headers[i], headers[i + 1], true); + } + } else if (headers && typeof headers === "object") { + const keys = Object.keys(headers); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + processHeader(request3, key, headers[key], true); + } + } else if (headers != null) { + throw new InvalidArgumentError("headers must be an object or an array"); + } + return request3; + } + static [kHTTP2CopyHeaders](raw) { + const rawHeaders = raw.split("\r\n"); + const headers = {}; + for (const header of rawHeaders) { + const [key, value] = header.split(": "); + if (value == null || value.length === 0) + continue; + if (headers[key]) + headers[key] += `,${value}`; + else + headers[key] = value; + } + return headers; + } + }; + function processHeaderValue(key, val, skipAppend) { + if (val && typeof val === "object") { + throw new InvalidArgumentError(`invalid ${key} header`); + } + val = val != null ? `${val}` : ""; + if (headerCharRegex.exec(val) !== null) { + throw new InvalidArgumentError(`invalid ${key} header`); + } + return skipAppend ? val : `${key}: ${val}\r +`; + } + function processHeader(request3, key, val, skipAppend = false) { + if (val && (typeof val === "object" && !Array.isArray(val))) { + throw new InvalidArgumentError(`invalid ${key} header`); + } else if (val === void 0) { + return; + } + if (request3.host === null && key.length === 4 && key.toLowerCase() === "host") { + if (headerCharRegex.exec(val) !== null) { + throw new InvalidArgumentError(`invalid ${key} header`); + } + request3.host = val; + } else if (request3.contentLength === null && key.length === 14 && key.toLowerCase() === "content-length") { + request3.contentLength = parseInt(val, 10); + if (!Number.isFinite(request3.contentLength)) { + throw new InvalidArgumentError("invalid content-length header"); + } + } else if (request3.contentType === null && key.length === 12 && key.toLowerCase() === "content-type") { + request3.contentType = val; + if (skipAppend) + request3.headers[key] = processHeaderValue(key, val, skipAppend); + else + request3.headers += processHeaderValue(key, val); + } else if (key.length === 17 && key.toLowerCase() === "transfer-encoding") { + throw new InvalidArgumentError("invalid transfer-encoding header"); + } else if (key.length === 10 && key.toLowerCase() === "connection") { + const value = typeof val === "string" ? val.toLowerCase() : null; + if (value !== "close" && value !== "keep-alive") { + throw new InvalidArgumentError("invalid connection header"); + } else if (value === "close") { + request3.reset = true; + } + } else if (key.length === 10 && key.toLowerCase() === "keep-alive") { + throw new InvalidArgumentError("invalid keep-alive header"); + } else if (key.length === 7 && key.toLowerCase() === "upgrade") { + throw new InvalidArgumentError("invalid upgrade header"); + } else if (key.length === 6 && key.toLowerCase() === "expect") { + throw new NotSupportedError("expect header not supported"); + } else if (tokenRegExp.exec(key) === null) { + throw new InvalidArgumentError("invalid header key"); + } else { + if (Array.isArray(val)) { + for (let i = 0; i < val.length; i++) { + if (skipAppend) { + if (request3.headers[key]) + request3.headers[key] += `,${processHeaderValue(key, val[i], skipAppend)}`; + else + request3.headers[key] = processHeaderValue(key, val[i], skipAppend); + } else { + request3.headers += processHeaderValue(key, val[i]); + } + } + } else { + if (skipAppend) + request3.headers[key] = processHeaderValue(key, val, skipAppend); + else + request3.headers += processHeaderValue(key, val); + } + } + } + module2.exports = Request; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/dispatcher.js +var require_dispatcher = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/dispatcher.js"(exports, module2) { + "use strict"; + var EventEmitter = require("events"); + var Dispatcher = class extends EventEmitter { + dispatch() { + throw new Error("not implemented"); + } + close() { + throw new Error("not implemented"); + } + destroy() { + throw new Error("not implemented"); + } + }; + module2.exports = Dispatcher; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/dispatcher-base.js +var require_dispatcher_base = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/dispatcher-base.js"(exports, module2) { + "use strict"; + var Dispatcher = require_dispatcher(); + var { + ClientDestroyedError, + ClientClosedError, + InvalidArgumentError + } = require_errors(); + var { kDestroy, kClose, kDispatch, kInterceptors } = require_symbols(); + var kDestroyed = Symbol("destroyed"); + var kClosed = Symbol("closed"); + var kOnDestroyed = Symbol("onDestroyed"); + var kOnClosed = Symbol("onClosed"); + var kInterceptedDispatch = Symbol("Intercepted Dispatch"); + var DispatcherBase = class extends Dispatcher { + constructor() { + super(); + this[kDestroyed] = false; + this[kOnDestroyed] = null; + this[kClosed] = false; + this[kOnClosed] = []; + } + get destroyed() { + return this[kDestroyed]; + } + get closed() { + return this[kClosed]; + } + get interceptors() { + return this[kInterceptors]; + } + set interceptors(newInterceptors) { + if (newInterceptors) { + for (let i = newInterceptors.length - 1; i >= 0; i--) { + const interceptor = this[kInterceptors][i]; + if (typeof interceptor !== "function") { + throw new InvalidArgumentError("interceptor must be an function"); + } + } + } + this[kInterceptors] = newInterceptors; + } + close(callback) { + if (callback === void 0) { + return new Promise((resolve, reject) => { + this.close((err, data) => { + return err ? reject(err) : resolve(data); + }); + }); + } + if (typeof callback !== "function") { + throw new InvalidArgumentError("invalid callback"); + } + if (this[kDestroyed]) { + queueMicrotask(() => callback(new ClientDestroyedError(), null)); + return; + } + if (this[kClosed]) { + if (this[kOnClosed]) { + this[kOnClosed].push(callback); + } else { + queueMicrotask(() => callback(null, null)); + } + return; + } + this[kClosed] = true; + this[kOnClosed].push(callback); + const onClosed = () => { + const callbacks = this[kOnClosed]; + this[kOnClosed] = null; + for (let i = 0; i < callbacks.length; i++) { + callbacks[i](null, null); + } + }; + this[kClose]().then(() => this.destroy()).then(() => { + queueMicrotask(onClosed); + }); + } + destroy(err, callback) { + if (typeof err === "function") { + callback = err; + err = null; + } + if (callback === void 0) { + return new Promise((resolve, reject) => { + this.destroy(err, (err2, data) => { + return err2 ? ( + /* istanbul ignore next: should never error */ + reject(err2) + ) : resolve(data); + }); + }); + } + if (typeof callback !== "function") { + throw new InvalidArgumentError("invalid callback"); + } + if (this[kDestroyed]) { + if (this[kOnDestroyed]) { + this[kOnDestroyed].push(callback); + } else { + queueMicrotask(() => callback(null, null)); + } + return; + } + if (!err) { + err = new ClientDestroyedError(); + } + this[kDestroyed] = true; + this[kOnDestroyed] = this[kOnDestroyed] || []; + this[kOnDestroyed].push(callback); + const onDestroyed = () => { + const callbacks = this[kOnDestroyed]; + this[kOnDestroyed] = null; + for (let i = 0; i < callbacks.length; i++) { + callbacks[i](null, null); + } + }; + this[kDestroy](err).then(() => { + queueMicrotask(onDestroyed); + }); + } + [kInterceptedDispatch](opts, handler) { + if (!this[kInterceptors] || this[kInterceptors].length === 0) { + this[kInterceptedDispatch] = this[kDispatch]; + return this[kDispatch](opts, handler); + } + let dispatch = this[kDispatch].bind(this); + for (let i = this[kInterceptors].length - 1; i >= 0; i--) { + dispatch = this[kInterceptors][i](dispatch); + } + this[kInterceptedDispatch] = dispatch; + return dispatch(opts, handler); + } + dispatch(opts, handler) { + if (!handler || typeof handler !== "object") { + throw new InvalidArgumentError("handler must be an object"); + } + try { + if (!opts || typeof opts !== "object") { + throw new InvalidArgumentError("opts must be an object."); + } + if (this[kDestroyed] || this[kOnDestroyed]) { + throw new ClientDestroyedError(); + } + if (this[kClosed]) { + throw new ClientClosedError(); + } + return this[kInterceptedDispatch](opts, handler); + } catch (err) { + if (typeof handler.onError !== "function") { + throw new InvalidArgumentError("invalid onError method"); + } + handler.onError(err); + return false; + } + } + }; + module2.exports = DispatcherBase; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/connect.js +var require_connect = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/connect.js"(exports, module2) { + "use strict"; + var net = require("net"); + var assert = require("assert"); + var util = require_util(); + var { InvalidArgumentError, ConnectTimeoutError } = require_errors(); + var tls; + var SessionCache; + if (global.FinalizationRegistry && !process.env.NODE_V8_COVERAGE) { + SessionCache = class WeakSessionCache { + constructor(maxCachedSessions) { + this._maxCachedSessions = maxCachedSessions; + this._sessionCache = /* @__PURE__ */ new Map(); + this._sessionRegistry = new global.FinalizationRegistry((key) => { + if (this._sessionCache.size < this._maxCachedSessions) { + return; + } + const ref = this._sessionCache.get(key); + if (ref !== void 0 && ref.deref() === void 0) { + this._sessionCache.delete(key); + } + }); + } + get(sessionKey) { + const ref = this._sessionCache.get(sessionKey); + return ref ? ref.deref() : null; + } + set(sessionKey, session) { + if (this._maxCachedSessions === 0) { + return; + } + this._sessionCache.set(sessionKey, new WeakRef(session)); + this._sessionRegistry.register(session, sessionKey); + } + }; + } else { + SessionCache = class SimpleSessionCache { + constructor(maxCachedSessions) { + this._maxCachedSessions = maxCachedSessions; + this._sessionCache = /* @__PURE__ */ new Map(); + } + get(sessionKey) { + return this._sessionCache.get(sessionKey); + } + set(sessionKey, session) { + if (this._maxCachedSessions === 0) { + return; + } + if (this._sessionCache.size >= this._maxCachedSessions) { + const { value: oldestKey } = this._sessionCache.keys().next(); + this._sessionCache.delete(oldestKey); + } + this._sessionCache.set(sessionKey, session); + } + }; + } + function buildConnector({ allowH2, maxCachedSessions, socketPath, timeout, ...opts }) { + if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) { + throw new InvalidArgumentError("maxCachedSessions must be a positive integer or zero"); + } + const options = { path: socketPath, ...opts }; + const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions); + timeout = timeout == null ? 1e4 : timeout; + allowH2 = allowH2 != null ? allowH2 : false; + return function connect({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) { + let socket; + if (protocol === "https:") { + if (!tls) { + tls = require("tls"); + } + servername = servername || options.servername || util.getServerName(host) || null; + const sessionKey = servername || hostname; + const session = sessionCache.get(sessionKey) || null; + assert(sessionKey); + socket = tls.connect({ + highWaterMark: 16384, + // TLS in node can't have bigger HWM anyway... + ...options, + servername, + session, + localAddress, + // TODO(HTTP/2): Add support for h2c + ALPNProtocols: allowH2 ? ["http/1.1", "h2"] : ["http/1.1"], + socket: httpSocket, + // upgrade socket connection + port: port || 443, + host: hostname + }); + socket.on("session", function(session2) { + sessionCache.set(sessionKey, session2); + }); + } else { + assert(!httpSocket, "httpSocket can only be sent on TLS update"); + socket = net.connect({ + highWaterMark: 64 * 1024, + // Same as nodejs fs streams. + ...options, + localAddress, + port: port || 80, + host: hostname + }); + } + if (options.keepAlive == null || options.keepAlive) { + const keepAliveInitialDelay = options.keepAliveInitialDelay === void 0 ? 6e4 : options.keepAliveInitialDelay; + socket.setKeepAlive(true, keepAliveInitialDelay); + } + const cancelTimeout = setupTimeout(() => onConnectTimeout(socket), timeout); + socket.setNoDelay(true).once(protocol === "https:" ? "secureConnect" : "connect", function() { + cancelTimeout(); + if (callback) { + const cb = callback; + callback = null; + cb(null, this); + } + }).on("error", function(err) { + cancelTimeout(); + if (callback) { + const cb = callback; + callback = null; + cb(err); + } + }); + return socket; + }; + } + function setupTimeout(onConnectTimeout2, timeout) { + if (!timeout) { + return () => { + }; + } + let s1 = null; + let s2 = null; + const timeoutId = setTimeout(() => { + s1 = setImmediate(() => { + if (process.platform === "win32") { + s2 = setImmediate(() => onConnectTimeout2()); + } else { + onConnectTimeout2(); + } + }); + }, timeout); + return () => { + clearTimeout(timeoutId); + clearImmediate(s1); + clearImmediate(s2); + }; + } + function onConnectTimeout(socket) { + util.destroy(socket, new ConnectTimeoutError()); + } + module2.exports = buildConnector; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/llhttp/utils.js +var require_utils = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/llhttp/utils.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.enumToMap = void 0; + function enumToMap(obj) { + const res = {}; + Object.keys(obj).forEach((key) => { + const value = obj[key]; + if (typeof value === "number") { + res[key] = value; + } + }); + return res; + } + exports.enumToMap = enumToMap; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/llhttp/constants.js +var require_constants2 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/llhttp/constants.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.SPECIAL_HEADERS = exports.HEADER_STATE = exports.MINOR = exports.MAJOR = exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS = exports.TOKEN = exports.STRICT_TOKEN = exports.HEX = exports.URL_CHAR = exports.STRICT_URL_CHAR = exports.USERINFO_CHARS = exports.MARK = exports.ALPHANUM = exports.NUM = exports.HEX_MAP = exports.NUM_MAP = exports.ALPHA = exports.FINISH = exports.H_METHOD_MAP = exports.METHOD_MAP = exports.METHODS_RTSP = exports.METHODS_ICE = exports.METHODS_HTTP = exports.METHODS = exports.LENIENT_FLAGS = exports.FLAGS = exports.TYPE = exports.ERROR = void 0; + var utils_1 = require_utils(); + var ERROR; + (function(ERROR2) { + ERROR2[ERROR2["OK"] = 0] = "OK"; + ERROR2[ERROR2["INTERNAL"] = 1] = "INTERNAL"; + ERROR2[ERROR2["STRICT"] = 2] = "STRICT"; + ERROR2[ERROR2["LF_EXPECTED"] = 3] = "LF_EXPECTED"; + ERROR2[ERROR2["UNEXPECTED_CONTENT_LENGTH"] = 4] = "UNEXPECTED_CONTENT_LENGTH"; + ERROR2[ERROR2["CLOSED_CONNECTION"] = 5] = "CLOSED_CONNECTION"; + ERROR2[ERROR2["INVALID_METHOD"] = 6] = "INVALID_METHOD"; + ERROR2[ERROR2["INVALID_URL"] = 7] = "INVALID_URL"; + ERROR2[ERROR2["INVALID_CONSTANT"] = 8] = "INVALID_CONSTANT"; + ERROR2[ERROR2["INVALID_VERSION"] = 9] = "INVALID_VERSION"; + ERROR2[ERROR2["INVALID_HEADER_TOKEN"] = 10] = "INVALID_HEADER_TOKEN"; + ERROR2[ERROR2["INVALID_CONTENT_LENGTH"] = 11] = "INVALID_CONTENT_LENGTH"; + ERROR2[ERROR2["INVALID_CHUNK_SIZE"] = 12] = "INVALID_CHUNK_SIZE"; + ERROR2[ERROR2["INVALID_STATUS"] = 13] = "INVALID_STATUS"; + ERROR2[ERROR2["INVALID_EOF_STATE"] = 14] = "INVALID_EOF_STATE"; + ERROR2[ERROR2["INVALID_TRANSFER_ENCODING"] = 15] = "INVALID_TRANSFER_ENCODING"; + ERROR2[ERROR2["CB_MESSAGE_BEGIN"] = 16] = "CB_MESSAGE_BEGIN"; + ERROR2[ERROR2["CB_HEADERS_COMPLETE"] = 17] = "CB_HEADERS_COMPLETE"; + ERROR2[ERROR2["CB_MESSAGE_COMPLETE"] = 18] = "CB_MESSAGE_COMPLETE"; + ERROR2[ERROR2["CB_CHUNK_HEADER"] = 19] = "CB_CHUNK_HEADER"; + ERROR2[ERROR2["CB_CHUNK_COMPLETE"] = 20] = "CB_CHUNK_COMPLETE"; + ERROR2[ERROR2["PAUSED"] = 21] = "PAUSED"; + ERROR2[ERROR2["PAUSED_UPGRADE"] = 22] = "PAUSED_UPGRADE"; + ERROR2[ERROR2["PAUSED_H2_UPGRADE"] = 23] = "PAUSED_H2_UPGRADE"; + ERROR2[ERROR2["USER"] = 24] = "USER"; + })(ERROR = exports.ERROR || (exports.ERROR = {})); + var TYPE; + (function(TYPE2) { + TYPE2[TYPE2["BOTH"] = 0] = "BOTH"; + TYPE2[TYPE2["REQUEST"] = 1] = "REQUEST"; + TYPE2[TYPE2["RESPONSE"] = 2] = "RESPONSE"; + })(TYPE = exports.TYPE || (exports.TYPE = {})); + var FLAGS; + (function(FLAGS2) { + FLAGS2[FLAGS2["CONNECTION_KEEP_ALIVE"] = 1] = "CONNECTION_KEEP_ALIVE"; + FLAGS2[FLAGS2["CONNECTION_CLOSE"] = 2] = "CONNECTION_CLOSE"; + FLAGS2[FLAGS2["CONNECTION_UPGRADE"] = 4] = "CONNECTION_UPGRADE"; + FLAGS2[FLAGS2["CHUNKED"] = 8] = "CHUNKED"; + FLAGS2[FLAGS2["UPGRADE"] = 16] = "UPGRADE"; + FLAGS2[FLAGS2["CONTENT_LENGTH"] = 32] = "CONTENT_LENGTH"; + FLAGS2[FLAGS2["SKIPBODY"] = 64] = "SKIPBODY"; + FLAGS2[FLAGS2["TRAILING"] = 128] = "TRAILING"; + FLAGS2[FLAGS2["TRANSFER_ENCODING"] = 512] = "TRANSFER_ENCODING"; + })(FLAGS = exports.FLAGS || (exports.FLAGS = {})); + var LENIENT_FLAGS; + (function(LENIENT_FLAGS2) { + LENIENT_FLAGS2[LENIENT_FLAGS2["HEADERS"] = 1] = "HEADERS"; + LENIENT_FLAGS2[LENIENT_FLAGS2["CHUNKED_LENGTH"] = 2] = "CHUNKED_LENGTH"; + LENIENT_FLAGS2[LENIENT_FLAGS2["KEEP_ALIVE"] = 4] = "KEEP_ALIVE"; + })(LENIENT_FLAGS = exports.LENIENT_FLAGS || (exports.LENIENT_FLAGS = {})); + var METHODS; + (function(METHODS2) { + METHODS2[METHODS2["DELETE"] = 0] = "DELETE"; + METHODS2[METHODS2["GET"] = 1] = "GET"; + METHODS2[METHODS2["HEAD"] = 2] = "HEAD"; + METHODS2[METHODS2["POST"] = 3] = "POST"; + METHODS2[METHODS2["PUT"] = 4] = "PUT"; + METHODS2[METHODS2["CONNECT"] = 5] = "CONNECT"; + METHODS2[METHODS2["OPTIONS"] = 6] = "OPTIONS"; + METHODS2[METHODS2["TRACE"] = 7] = "TRACE"; + METHODS2[METHODS2["COPY"] = 8] = "COPY"; + METHODS2[METHODS2["LOCK"] = 9] = "LOCK"; + METHODS2[METHODS2["MKCOL"] = 10] = "MKCOL"; + METHODS2[METHODS2["MOVE"] = 11] = "MOVE"; + METHODS2[METHODS2["PROPFIND"] = 12] = "PROPFIND"; + METHODS2[METHODS2["PROPPATCH"] = 13] = "PROPPATCH"; + METHODS2[METHODS2["SEARCH"] = 14] = "SEARCH"; + METHODS2[METHODS2["UNLOCK"] = 15] = "UNLOCK"; + METHODS2[METHODS2["BIND"] = 16] = "BIND"; + METHODS2[METHODS2["REBIND"] = 17] = "REBIND"; + METHODS2[METHODS2["UNBIND"] = 18] = "UNBIND"; + METHODS2[METHODS2["ACL"] = 19] = "ACL"; + METHODS2[METHODS2["REPORT"] = 20] = "REPORT"; + METHODS2[METHODS2["MKACTIVITY"] = 21] = "MKACTIVITY"; + METHODS2[METHODS2["CHECKOUT"] = 22] = "CHECKOUT"; + METHODS2[METHODS2["MERGE"] = 23] = "MERGE"; + METHODS2[METHODS2["M-SEARCH"] = 24] = "M-SEARCH"; + METHODS2[METHODS2["NOTIFY"] = 25] = "NOTIFY"; + METHODS2[METHODS2["SUBSCRIBE"] = 26] = "SUBSCRIBE"; + METHODS2[METHODS2["UNSUBSCRIBE"] = 27] = "UNSUBSCRIBE"; + METHODS2[METHODS2["PATCH"] = 28] = "PATCH"; + METHODS2[METHODS2["PURGE"] = 29] = "PURGE"; + METHODS2[METHODS2["MKCALENDAR"] = 30] = "MKCALENDAR"; + METHODS2[METHODS2["LINK"] = 31] = "LINK"; + METHODS2[METHODS2["UNLINK"] = 32] = "UNLINK"; + METHODS2[METHODS2["SOURCE"] = 33] = "SOURCE"; + METHODS2[METHODS2["PRI"] = 34] = "PRI"; + METHODS2[METHODS2["DESCRIBE"] = 35] = "DESCRIBE"; + METHODS2[METHODS2["ANNOUNCE"] = 36] = "ANNOUNCE"; + METHODS2[METHODS2["SETUP"] = 37] = "SETUP"; + METHODS2[METHODS2["PLAY"] = 38] = "PLAY"; + METHODS2[METHODS2["PAUSE"] = 39] = "PAUSE"; + METHODS2[METHODS2["TEARDOWN"] = 40] = "TEARDOWN"; + METHODS2[METHODS2["GET_PARAMETER"] = 41] = "GET_PARAMETER"; + METHODS2[METHODS2["SET_PARAMETER"] = 42] = "SET_PARAMETER"; + METHODS2[METHODS2["REDIRECT"] = 43] = "REDIRECT"; + METHODS2[METHODS2["RECORD"] = 44] = "RECORD"; + METHODS2[METHODS2["FLUSH"] = 45] = "FLUSH"; + })(METHODS = exports.METHODS || (exports.METHODS = {})); + exports.METHODS_HTTP = [ + METHODS.DELETE, + METHODS.GET, + METHODS.HEAD, + METHODS.POST, + METHODS.PUT, + METHODS.CONNECT, + METHODS.OPTIONS, + METHODS.TRACE, + METHODS.COPY, + METHODS.LOCK, + METHODS.MKCOL, + METHODS.MOVE, + METHODS.PROPFIND, + METHODS.PROPPATCH, + METHODS.SEARCH, + METHODS.UNLOCK, + METHODS.BIND, + METHODS.REBIND, + METHODS.UNBIND, + METHODS.ACL, + METHODS.REPORT, + METHODS.MKACTIVITY, + METHODS.CHECKOUT, + METHODS.MERGE, + METHODS["M-SEARCH"], + METHODS.NOTIFY, + METHODS.SUBSCRIBE, + METHODS.UNSUBSCRIBE, + METHODS.PATCH, + METHODS.PURGE, + METHODS.MKCALENDAR, + METHODS.LINK, + METHODS.UNLINK, + METHODS.PRI, + // TODO(indutny): should we allow it with HTTP? + METHODS.SOURCE + ]; + exports.METHODS_ICE = [ + METHODS.SOURCE + ]; + exports.METHODS_RTSP = [ + METHODS.OPTIONS, + METHODS.DESCRIBE, + METHODS.ANNOUNCE, + METHODS.SETUP, + METHODS.PLAY, + METHODS.PAUSE, + METHODS.TEARDOWN, + METHODS.GET_PARAMETER, + METHODS.SET_PARAMETER, + METHODS.REDIRECT, + METHODS.RECORD, + METHODS.FLUSH, + // For AirPlay + METHODS.GET, + METHODS.POST + ]; + exports.METHOD_MAP = utils_1.enumToMap(METHODS); + exports.H_METHOD_MAP = {}; + Object.keys(exports.METHOD_MAP).forEach((key) => { + if (/^H/.test(key)) { + exports.H_METHOD_MAP[key] = exports.METHOD_MAP[key]; + } + }); + var FINISH; + (function(FINISH2) { + FINISH2[FINISH2["SAFE"] = 0] = "SAFE"; + FINISH2[FINISH2["SAFE_WITH_CB"] = 1] = "SAFE_WITH_CB"; + FINISH2[FINISH2["UNSAFE"] = 2] = "UNSAFE"; + })(FINISH = exports.FINISH || (exports.FINISH = {})); + exports.ALPHA = []; + for (let i = "A".charCodeAt(0); i <= "Z".charCodeAt(0); i++) { + exports.ALPHA.push(String.fromCharCode(i)); + exports.ALPHA.push(String.fromCharCode(i + 32)); + } + exports.NUM_MAP = { + 0: 0, + 1: 1, + 2: 2, + 3: 3, + 4: 4, + 5: 5, + 6: 6, + 7: 7, + 8: 8, + 9: 9 + }; + exports.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 + }; + exports.NUM = [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ]; + exports.ALPHANUM = exports.ALPHA.concat(exports.NUM); + exports.MARK = ["-", "_", ".", "!", "~", "*", "'", "(", ")"]; + exports.USERINFO_CHARS = exports.ALPHANUM.concat(exports.MARK).concat(["%", ";", ":", "&", "=", "+", "$", ","]); + exports.STRICT_URL_CHAR = [ + "!", + '"', + "$", + "%", + "&", + "'", + "(", + ")", + "*", + "+", + ",", + "-", + ".", + "/", + ":", + ";", + "<", + "=", + ">", + "@", + "[", + "\\", + "]", + "^", + "_", + "`", + "{", + "|", + "}", + "~" + ].concat(exports.ALPHANUM); + exports.URL_CHAR = exports.STRICT_URL_CHAR.concat([" ", "\f"]); + for (let i = 128; i <= 255; i++) { + exports.URL_CHAR.push(i); + } + exports.HEX = exports.NUM.concat(["a", "b", "c", "d", "e", "f", "A", "B", "C", "D", "E", "F"]); + exports.STRICT_TOKEN = [ + "!", + "#", + "$", + "%", + "&", + "'", + "*", + "+", + "-", + ".", + "^", + "_", + "`", + "|", + "~" + ].concat(exports.ALPHANUM); + exports.TOKEN = exports.STRICT_TOKEN.concat([" "]); + exports.HEADER_CHARS = [" "]; + for (let i = 32; i <= 255; i++) { + if (i !== 127) { + exports.HEADER_CHARS.push(i); + } + } + exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS.filter((c) => c !== 44); + exports.MAJOR = exports.NUM_MAP; + exports.MINOR = exports.MAJOR; + var HEADER_STATE; + (function(HEADER_STATE2) { + HEADER_STATE2[HEADER_STATE2["GENERAL"] = 0] = "GENERAL"; + HEADER_STATE2[HEADER_STATE2["CONNECTION"] = 1] = "CONNECTION"; + HEADER_STATE2[HEADER_STATE2["CONTENT_LENGTH"] = 2] = "CONTENT_LENGTH"; + HEADER_STATE2[HEADER_STATE2["TRANSFER_ENCODING"] = 3] = "TRANSFER_ENCODING"; + HEADER_STATE2[HEADER_STATE2["UPGRADE"] = 4] = "UPGRADE"; + HEADER_STATE2[HEADER_STATE2["CONNECTION_KEEP_ALIVE"] = 5] = "CONNECTION_KEEP_ALIVE"; + HEADER_STATE2[HEADER_STATE2["CONNECTION_CLOSE"] = 6] = "CONNECTION_CLOSE"; + HEADER_STATE2[HEADER_STATE2["CONNECTION_UPGRADE"] = 7] = "CONNECTION_UPGRADE"; + HEADER_STATE2[HEADER_STATE2["TRANSFER_ENCODING_CHUNKED"] = 8] = "TRANSFER_ENCODING_CHUNKED"; + })(HEADER_STATE = exports.HEADER_STATE || (exports.HEADER_STATE = {})); + exports.SPECIAL_HEADERS = { + "connection": HEADER_STATE.CONNECTION, + "content-length": HEADER_STATE.CONTENT_LENGTH, + "proxy-connection": HEADER_STATE.CONNECTION, + "transfer-encoding": HEADER_STATE.TRANSFER_ENCODING, + "upgrade": HEADER_STATE.UPGRADE + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/handler/RedirectHandler.js +var require_RedirectHandler = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/handler/RedirectHandler.js"(exports, module2) { + "use strict"; + var util = require_util(); + var { kBodyUsed } = require_symbols(); + var assert = require("assert"); + var { InvalidArgumentError } = require_errors(); + var EE = require("events"); + var redirectableStatusCodes = [300, 301, 302, 303, 307, 308]; + var kBody = Symbol("body"); + var BodyAsyncIterable = class { + constructor(body) { + this[kBody] = body; + this[kBodyUsed] = false; + } + async *[Symbol.asyncIterator]() { + assert(!this[kBodyUsed], "disturbed"); + this[kBodyUsed] = true; + yield* this[kBody]; + } + }; + var RedirectHandler = class { + constructor(dispatch, maxRedirections, opts, handler) { + if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { + throw new InvalidArgumentError("maxRedirections must be a positive number"); + } + util.validateHandler(handler, opts.method, opts.upgrade); + this.dispatch = dispatch; + this.location = null; + this.abort = null; + this.opts = { ...opts, maxRedirections: 0 }; + this.maxRedirections = maxRedirections; + this.handler = handler; + this.history = []; + if (util.isStream(this.opts.body)) { + if (util.bodyLength(this.opts.body) === 0) { + this.opts.body.on("data", function() { + assert(false); + }); + } + if (typeof this.opts.body.readableDidRead !== "boolean") { + this.opts.body[kBodyUsed] = false; + EE.prototype.on.call(this.opts.body, "data", function() { + this[kBodyUsed] = true; + }); + } + } else if (this.opts.body && typeof this.opts.body.pipeTo === "function") { + this.opts.body = new BodyAsyncIterable(this.opts.body); + } else if (this.opts.body && typeof this.opts.body !== "string" && !ArrayBuffer.isView(this.opts.body) && util.isIterable(this.opts.body)) { + this.opts.body = new BodyAsyncIterable(this.opts.body); + } + } + onConnect(abort) { + this.abort = abort; + this.handler.onConnect(abort, { history: this.history }); + } + onUpgrade(statusCode, headers, socket) { + this.handler.onUpgrade(statusCode, headers, socket); + } + onError(error) { + this.handler.onError(error); + } + onHeaders(statusCode, headers, resume, statusText) { + this.location = this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body) ? null : parseLocation(statusCode, headers); + if (this.opts.origin) { + this.history.push(new URL(this.opts.path, this.opts.origin)); + } + if (!this.location) { + return this.handler.onHeaders(statusCode, headers, resume, statusText); + } + const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin))); + const path = search ? `${pathname}${search}` : pathname; + this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin); + this.opts.path = path; + this.opts.origin = origin; + this.opts.maxRedirections = 0; + this.opts.query = null; + if (statusCode === 303 && this.opts.method !== "HEAD") { + this.opts.method = "GET"; + this.opts.body = null; + } + } + onData(chunk) { + if (this.location) { + } else { + return this.handler.onData(chunk); + } + } + onComplete(trailers) { + if (this.location) { + this.location = null; + this.abort = null; + this.dispatch(this.opts, this); + } else { + this.handler.onComplete(trailers); + } + } + onBodySent(chunk) { + if (this.handler.onBodySent) { + this.handler.onBodySent(chunk); + } + } + }; + function parseLocation(statusCode, headers) { + if (redirectableStatusCodes.indexOf(statusCode) === -1) { + return null; + } + for (let i = 0; i < headers.length; i += 2) { + if (headers[i].toString().toLowerCase() === "location") { + return headers[i + 1]; + } + } + } + function shouldRemoveHeader(header, removeContent, unknownOrigin) { + return header.length === 4 && header.toString().toLowerCase() === "host" || removeContent && header.toString().toLowerCase().indexOf("content-") === 0 || unknownOrigin && header.length === 13 && header.toString().toLowerCase() === "authorization" || unknownOrigin && header.length === 6 && header.toString().toLowerCase() === "cookie"; + } + function cleanRequestHeaders(headers, removeContent, unknownOrigin) { + const ret = []; + if (Array.isArray(headers)) { + for (let i = 0; i < headers.length; i += 2) { + if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) { + ret.push(headers[i], headers[i + 1]); + } + } + } else if (headers && typeof headers === "object") { + for (const key of Object.keys(headers)) { + if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) { + ret.push(key, headers[key]); + } + } + } else { + assert(headers == null, "headers must be an object or an array"); + } + return ret; + } + module2.exports = RedirectHandler; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/interceptor/redirectInterceptor.js +var require_redirectInterceptor = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/interceptor/redirectInterceptor.js"(exports, module2) { + "use strict"; + var RedirectHandler = require_RedirectHandler(); + function createRedirectInterceptor({ maxRedirections: defaultMaxRedirections }) { + return (dispatch) => { + return function Intercept(opts, handler) { + const { maxRedirections = defaultMaxRedirections } = opts; + if (!maxRedirections) { + return dispatch(opts, handler); + } + const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler); + opts = { ...opts, maxRedirections: 0 }; + return dispatch(opts, redirectHandler); + }; + }; + } + module2.exports = createRedirectInterceptor; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/llhttp/llhttp-wasm.js +var require_llhttp_wasm = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/llhttp/llhttp-wasm.js"(exports, module2) { + module2.exports = "AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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ADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwHLAcoBuAHJAbkByAG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAQDcAQtBACEQDMYBC0EOIRAMxQELQQ0hEAzEAQtBDyEQDMMBC0EQIRAMwgELQRMhEAzBAQtBFCEQDMABC0EVIRAMvwELQRYhEAy+AQtBFyEQDL0BC0EYIRAMvAELQRkhEAy7AQtBGiEQDLoBC0EbIRAMuQELQRwhEAy4AQtBCCEQDLcBC0EdIRAMtgELQSAhEAy1AQtBHyEQDLQBC0EHIRAMswELQSEhEAyyAQtBIiEQDLEBC0EeIRAMsAELQSMhEAyvAQtBEiEQDK4BC0ERIRAMrQELQSQhEAysAQtBJSEQDKsBC0EmIRAMqgELQSchEAypAQtBwwEhEAyoAQtBKSEQDKcBC0ErIRAMpgELQSwhEAylAQtBLSEQDKQBC0EuIRAMowELQS8hEAyiAQtBxAEhEAyhAQtBMCEQDKABC0E0IRAMnwELQQwhEAyeAQtBMSEQDJ0BC0EyIRAMnAELQTMhEAybAQtBOSEQDJoBC0E1IRAMmQELQcUBIRAMmAELQQshEAyXAQtBOiEQDJYBC0E2IRAMlQELQQohEAyUAQtBNyEQDJMBC0E4IRAMkgELQTwhEAyRAQtBOyEQDJABC0E9IRAMjwELQQkhEAyOAQtBKCEQDI0BC0E+IRAMjAELQT8hEAyLAQtBwAAhEAyKAQtBwQAhEAyJAQtBwgAhEAyIAQtBwwAhEAyHAQtBxAAhEAyGAQtBxQAhEAyFAQtBxgAhEAyEAQtBKiEQDIMBC0HHACEQDIIBC0HIACEQDIEBC0HJACEQDIABC0HKACEQDH8LQcsAIRAMfgtBzQAhEAx9C0HMACEQDHwLQc4AIRAMewtBzwAhEAx6C0HQACEQDHkLQdEAIRAMeAtB0gAhEAx3C0HTACEQDHYLQdQAIRAMdQtB1gAhEAx0C0HVACEQDHMLQQYhEAxyC0HXACEQDHELQQUhEAxwC0HYACEQDG8LQQQhEAxuC0HZACEQDG0LQdoAIRAMbAtB2wAhEAxrC0HcACEQDGoLQQMhEAxpC0HdACEQDGgLQd4AIRAMZwtB3wAhEAxmC0HhACEQDGULQeAAIRAMZAtB4gAhEAxjC0HjACEQDGILQQIhEAxhC0HkACEQDGALQeUAIRAMXwtB5gAhEAxeC0HnACEQDF0LQegAIRAMXAtB6QAhEAxbC0HqACEQDFoLQesAIRAMWQtB7AAhEAxYC0HtACEQDFcLQe4AIRAMVgtB7wAhEAxVC0HwACEQDFQLQfEAIRAMUwtB8gAhEAxSC0HzACEQDFELQfQAIRAMUAtB9QAhEAxPC0H2ACEQDE4LQfcAIRAMTQtB+AAhEAxMC0H5ACEQDEsLQfoAIRAMSgtB+wAhEAxJC0H8ACEQDEgLQf0AIRAMRwtB/gAhEAxGC0H/ACEQDEULQYABIRAMRAtBgQEhEAxDC0GCASEQDEILQYMBIRAMQQtBhAEhEAxAC0GFASEQDD8LQYYBIRAMPgtBhwEhEAw9C0GIASEQDDwLQYkBIRAMOwtBigEhEAw6C0GLASEQDDkLQYwBIRAMOAtBjQEhEAw3C0GOASEQDDYLQY8BIRAMNQtBkAEhEAw0C0GRASEQDDMLQZIBIRAMMgtBkwEhEAwxC0GUASEQDDALQZUBIRAMLwtBlgEhEAwuC0GXASEQDC0LQZgBIRAMLAtBmQEhEAwrC0GaASEQDCoLQZsBIRAMKQtBnAEhEAwoC0GdASEQDCcLQZ4BIRAMJgtBnwEhEAwlC0GgASEQDCQLQaEBIRAMIwtBogEhEAwiC0GjASEQDCELQaQBIRAMIAtBpQEhEAwfC0GmASEQDB4LQacBIRAMHQtBqAEhEAwcC0GpASEQDBsLQaoBIRAMGgtBqwEhEAwZC0GsASEQDBgLQa0BIRAMFwtBrgEhEAwWC0EBIRAMFQtBrwEhEAwUC0GwASEQDBMLQbEBIRAMEgtBswEhEAwRC0GyASEQDBALQbQBIRAMDwtBtQEhEAwOC0G2ASEQDA0LQbcBIRAMDAtBuAEhEAwLC0G5ASEQDAoLQboBIRAMCQtBuwEhEAwIC0HGASEQDAcLQbwBIRAMBgtBvQEhEAwFC0G+ASEQDAQLQb8BIRAMAwtBwAEhEAwCC0HCASEQDAELQcEBIRALA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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FCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAU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YWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8="; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +var require_llhttp_simd_wasm = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js"(exports, module2) { + module2.exports = "AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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IAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw=="; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/client.js +var require_client = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/client.js"(exports, module2) { + "use strict"; + var assert = require("assert"); + var net = require("net"); + var http = require("http"); + var { pipeline } = require("stream"); + var util = require_util(); + var timers = require_timers(); + var Request = require_request(); + var DispatcherBase = require_dispatcher_base(); + var { + RequestContentLengthMismatchError, + ResponseContentLengthMismatchError, + InvalidArgumentError, + RequestAbortedError, + HeadersTimeoutError, + HeadersOverflowError, + SocketError, + InformationalError, + BodyTimeoutError, + HTTPParserError, + ResponseExceededMaxSizeError, + ClientDestroyedError + } = require_errors(); + var buildConnector = require_connect(); + var { + kUrl, + kReset, + kServerName, + kClient, + kBusy, + kParser, + kConnect, + kBlocking, + kResuming, + kRunning, + kPending, + kSize, + kWriting, + kQueue, + kConnected, + kConnecting, + kNeedDrain, + kNoRef, + kKeepAliveDefaultTimeout, + kHostHeader, + kPendingIdx, + kRunningIdx, + kError, + kPipelining, + kSocket, + kKeepAliveTimeoutValue, + kMaxHeadersSize, + kKeepAliveMaxTimeout, + kKeepAliveTimeoutThreshold, + kHeadersTimeout, + kBodyTimeout, + kStrictContentLength, + kConnector, + kMaxRedirections, + kMaxRequests, + kCounter, + kClose, + kDestroy, + kDispatch, + kInterceptors, + kLocalAddress, + kMaxResponseSize, + kHTTPConnVersion, + // HTTP2 + kHost, + kHTTP2Session, + kHTTP2SessionState, + kHTTP2BuildRequest, + kHTTP2CopyHeaders, + kHTTP1BuildRequest + } = require_symbols(); + var http2; + try { + http2 = require("http2"); + } catch { + http2 = { constants: {} }; + } + var { + constants: { + HTTP2_HEADER_AUTHORITY, + HTTP2_HEADER_METHOD, + HTTP2_HEADER_PATH, + HTTP2_HEADER_SCHEME, + HTTP2_HEADER_CONTENT_LENGTH, + HTTP2_HEADER_EXPECT, + HTTP2_HEADER_STATUS + } + } = http2; + var h2ExperimentalWarned = false; + var FastBuffer = Buffer[Symbol.species]; + var kClosedResolve = Symbol("kClosedResolve"); + var channels = {}; + try { + const diagnosticsChannel = require("diagnostics_channel"); + channels.sendHeaders = diagnosticsChannel.channel("undici:client:sendHeaders"); + channels.beforeConnect = diagnosticsChannel.channel("undici:client:beforeConnect"); + channels.connectError = diagnosticsChannel.channel("undici:client:connectError"); + channels.connected = diagnosticsChannel.channel("undici:client:connected"); + } catch { + channels.sendHeaders = { hasSubscribers: false }; + channels.beforeConnect = { hasSubscribers: false }; + channels.connectError = { hasSubscribers: false }; + channels.connected = { hasSubscribers: false }; + } + var Client = class extends DispatcherBase { + /** + * + * @param {string|URL} url + * @param {import('../types/client').Client.Options} options + */ + constructor(url, { + interceptors, + maxHeaderSize, + headersTimeout, + socketTimeout, + requestTimeout, + connectTimeout, + bodyTimeout, + idleTimeout, + keepAlive, + keepAliveTimeout, + maxKeepAliveTimeout, + keepAliveMaxTimeout, + keepAliveTimeoutThreshold, + socketPath, + pipelining, + tls, + strictContentLength, + maxCachedSessions, + maxRedirections, + connect: connect2, + maxRequestsPerClient, + localAddress, + maxResponseSize, + autoSelectFamily, + autoSelectFamilyAttemptTimeout, + // h2 + allowH2, + maxConcurrentStreams + } = {}) { + super(); + if (keepAlive !== void 0) { + throw new InvalidArgumentError("unsupported keepAlive, use pipelining=0 instead"); + } + if (socketTimeout !== void 0) { + throw new InvalidArgumentError("unsupported socketTimeout, use headersTimeout & bodyTimeout instead"); + } + if (requestTimeout !== void 0) { + throw new InvalidArgumentError("unsupported requestTimeout, use headersTimeout & bodyTimeout instead"); + } + if (idleTimeout !== void 0) { + throw new InvalidArgumentError("unsupported idleTimeout, use keepAliveTimeout instead"); + } + if (maxKeepAliveTimeout !== void 0) { + throw new InvalidArgumentError("unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead"); + } + if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) { + throw new InvalidArgumentError("invalid maxHeaderSize"); + } + if (socketPath != null && typeof socketPath !== "string") { + throw new InvalidArgumentError("invalid socketPath"); + } + if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) { + throw new InvalidArgumentError("invalid connectTimeout"); + } + if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) { + throw new InvalidArgumentError("invalid keepAliveTimeout"); + } + if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) { + throw new InvalidArgumentError("invalid keepAliveMaxTimeout"); + } + if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) { + throw new InvalidArgumentError("invalid keepAliveTimeoutThreshold"); + } + if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) { + throw new InvalidArgumentError("headersTimeout must be a positive integer or zero"); + } + if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) { + throw new InvalidArgumentError("bodyTimeout must be a positive integer or zero"); + } + if (connect2 != null && typeof connect2 !== "function" && typeof connect2 !== "object") { + throw new InvalidArgumentError("connect must be a function or an object"); + } + if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { + throw new InvalidArgumentError("maxRedirections must be a positive number"); + } + if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) { + throw new InvalidArgumentError("maxRequestsPerClient must be a positive number"); + } + if (localAddress != null && (typeof localAddress !== "string" || net.isIP(localAddress) === 0)) { + throw new InvalidArgumentError("localAddress must be valid string IP address"); + } + if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) { + throw new InvalidArgumentError("maxResponseSize must be a positive number"); + } + if (autoSelectFamilyAttemptTimeout != null && (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1)) { + throw new InvalidArgumentError("autoSelectFamilyAttemptTimeout must be a positive number"); + } + if (allowH2 != null && typeof allowH2 !== "boolean") { + throw new InvalidArgumentError("allowH2 must be a valid boolean value"); + } + if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== "number" || maxConcurrentStreams < 1)) { + throw new InvalidArgumentError("maxConcurrentStreams must be a possitive integer, greater than 0"); + } + if (typeof connect2 !== "function") { + connect2 = buildConnector({ + ...tls, + maxCachedSessions, + allowH2, + socketPath, + timeout: connectTimeout, + ...util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0, + ...connect2 + }); + } + this[kInterceptors] = interceptors && interceptors.Client && Array.isArray(interceptors.Client) ? interceptors.Client : [createRedirectInterceptor({ maxRedirections })]; + this[kUrl] = util.parseOrigin(url); + this[kConnector] = connect2; + this[kSocket] = null; + this[kPipelining] = pipelining != null ? pipelining : 1; + this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize; + this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout; + this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 6e5 : keepAliveMaxTimeout; + this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold; + this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout]; + this[kServerName] = null; + this[kLocalAddress] = localAddress != null ? localAddress : null; + this[kResuming] = 0; + this[kNeedDrain] = 0; + this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ""}\r +`; + this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 3e5; + this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 3e5; + this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength; + this[kMaxRedirections] = maxRedirections; + this[kMaxRequests] = maxRequestsPerClient; + this[kClosedResolve] = null; + this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1; + this[kHTTPConnVersion] = "h1"; + this[kHTTP2Session] = null; + this[kHTTP2SessionState] = !allowH2 ? null : { + // streams: null, // Fixed queue of streams - For future support of `push` + openStreams: 0, + // Keep track of them to decide wether or not unref the session + maxConcurrentStreams: maxConcurrentStreams != null ? maxConcurrentStreams : 100 + // Max peerConcurrentStreams for a Node h2 server + }; + this[kHost] = `${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ""}`; + this[kQueue] = []; + this[kRunningIdx] = 0; + this[kPendingIdx] = 0; + } + get pipelining() { + return this[kPipelining]; + } + set pipelining(value) { + this[kPipelining] = value; + resume(this, true); + } + get [kPending]() { + return this[kQueue].length - this[kPendingIdx]; + } + get [kRunning]() { + return this[kPendingIdx] - this[kRunningIdx]; + } + get [kSize]() { + return this[kQueue].length - this[kRunningIdx]; + } + get [kConnected]() { + return !!this[kSocket] && !this[kConnecting] && !this[kSocket].destroyed; + } + get [kBusy]() { + const socket = this[kSocket]; + return socket && (socket[kReset] || socket[kWriting] || socket[kBlocking]) || this[kSize] >= (this[kPipelining] || 1) || this[kPending] > 0; + } + /* istanbul ignore: only used for test */ + [kConnect](cb) { + connect(this); + this.once("connect", cb); + } + [kDispatch](opts, handler) { + const origin = opts.origin || this[kUrl].origin; + const request3 = this[kHTTPConnVersion] === "h2" ? Request[kHTTP2BuildRequest](origin, opts, handler) : Request[kHTTP1BuildRequest](origin, opts, handler); + this[kQueue].push(request3); + if (this[kResuming]) { + } else if (util.bodyLength(request3.body) == null && util.isIterable(request3.body)) { + this[kResuming] = 1; + process.nextTick(resume, this); + } else { + resume(this, true); + } + if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) { + this[kNeedDrain] = 2; + } + return this[kNeedDrain] < 2; + } + async [kClose]() { + return new Promise((resolve) => { + if (!this[kSize]) { + resolve(null); + } else { + this[kClosedResolve] = resolve; + } + }); + } + async [kDestroy](err) { + return new Promise((resolve) => { + const requests = this[kQueue].splice(this[kPendingIdx]); + for (let i = 0; i < requests.length; i++) { + const request3 = requests[i]; + errorRequest(this, request3, err); + } + const callback = () => { + if (this[kClosedResolve]) { + this[kClosedResolve](); + this[kClosedResolve] = null; + } + resolve(); + }; + if (this[kHTTP2Session] != null) { + util.destroy(this[kHTTP2Session], err); + this[kHTTP2Session] = null; + this[kHTTP2SessionState] = null; + } + if (!this[kSocket]) { + queueMicrotask(callback); + } else { + util.destroy(this[kSocket].on("close", callback), err); + } + resume(this); + }); + } + }; + function onHttp2SessionError(err) { + assert(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID"); + this[kSocket][kError] = err; + onError(this[kClient], err); + } + function onHttp2FrameError(type, code, id) { + const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`); + if (id === 0) { + this[kSocket][kError] = err; + onError(this[kClient], err); + } + } + function onHttp2SessionEnd() { + util.destroy(this, new SocketError("other side closed")); + util.destroy(this[kSocket], new SocketError("other side closed")); + } + function onHTTP2GoAway(code) { + const client = this[kClient]; + const err = new InformationalError(`HTTP/2: "GOAWAY" frame received with code ${code}`); + client[kSocket] = null; + client[kHTTP2Session] = null; + if (client.destroyed) { + assert(this[kPending] === 0); + const requests = client[kQueue].splice(client[kRunningIdx]); + for (let i = 0; i < requests.length; i++) { + const request3 = requests[i]; + errorRequest(this, request3, err); + } + } else if (client[kRunning] > 0) { + const request3 = client[kQueue][client[kRunningIdx]]; + client[kQueue][client[kRunningIdx]++] = null; + errorRequest(client, request3, err); + } + client[kPendingIdx] = client[kRunningIdx]; + assert(client[kRunning] === 0); + client.emit( + "disconnect", + client[kUrl], + [client], + err + ); + resume(client); + } + var constants = require_constants2(); + var createRedirectInterceptor = require_redirectInterceptor(); + var EMPTY_BUF = Buffer.alloc(0); + async function lazyllhttp() { + const llhttpWasmData = process.env.JEST_WORKER_ID ? require_llhttp_wasm() : void 0; + let mod; + try { + mod = await WebAssembly.compile(Buffer.from(require_llhttp_simd_wasm(), "base64")); + } catch (e) { + mod = await WebAssembly.compile(Buffer.from(llhttpWasmData || require_llhttp_wasm(), "base64")); + } + return await WebAssembly.instantiate(mod, { + env: { + /* eslint-disable camelcase */ + wasm_on_url: (p, at, len) => { + return 0; + }, + wasm_on_status: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p); + const start = at - currentBufferPtr + currentBufferRef.byteOffset; + return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0; + }, + wasm_on_message_begin: (p) => { + assert.strictEqual(currentParser.ptr, p); + return currentParser.onMessageBegin() || 0; + }, + wasm_on_header_field: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p); + const start = at - currentBufferPtr + currentBufferRef.byteOffset; + return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0; + }, + wasm_on_header_value: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p); + const start = at - currentBufferPtr + currentBufferRef.byteOffset; + return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0; + }, + wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => { + assert.strictEqual(currentParser.ptr, p); + return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0; + }, + wasm_on_body: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p); + const start = at - currentBufferPtr + currentBufferRef.byteOffset; + return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0; + }, + wasm_on_message_complete: (p) => { + assert.strictEqual(currentParser.ptr, p); + return currentParser.onMessageComplete() || 0; + } + /* eslint-enable camelcase */ + } + }); + } + var llhttpInstance = null; + var llhttpPromise = lazyllhttp(); + llhttpPromise.catch(); + var currentParser = null; + var currentBufferRef = null; + var currentBufferSize = 0; + var currentBufferPtr = null; + var TIMEOUT_HEADERS = 1; + var TIMEOUT_BODY = 2; + var TIMEOUT_IDLE = 3; + var Parser = class { + constructor(client, socket, { exports: exports2 }) { + assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0); + this.llhttp = exports2; + this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE); + this.client = client; + this.socket = socket; + this.timeout = null; + this.timeoutValue = null; + this.timeoutType = null; + this.statusCode = null; + this.statusText = ""; + this.upgrade = false; + this.headers = []; + this.headersSize = 0; + this.headersMaxSize = client[kMaxHeadersSize]; + this.shouldKeepAlive = false; + this.paused = false; + this.resume = this.resume.bind(this); + this.bytesRead = 0; + this.keepAlive = ""; + this.contentLength = ""; + this.connection = ""; + this.maxResponseSize = client[kMaxResponseSize]; + } + setTimeout(value, type) { + this.timeoutType = type; + if (value !== this.timeoutValue) { + timers.clearTimeout(this.timeout); + if (value) { + this.timeout = timers.setTimeout(onParserTimeout, value, this); + if (this.timeout.unref) { + this.timeout.unref(); + } + } else { + this.timeout = null; + } + this.timeoutValue = value; + } else if (this.timeout) { + if (this.timeout.refresh) { + this.timeout.refresh(); + } + } + } + resume() { + if (this.socket.destroyed || !this.paused) { + return; + } + assert(this.ptr != null); + assert(currentParser == null); + this.llhttp.llhttp_resume(this.ptr); + assert(this.timeoutType === TIMEOUT_BODY); + if (this.timeout) { + if (this.timeout.refresh) { + this.timeout.refresh(); + } + } + this.paused = false; + this.execute(this.socket.read() || EMPTY_BUF); + this.readMore(); + } + readMore() { + while (!this.paused && this.ptr) { + const chunk = this.socket.read(); + if (chunk === null) { + break; + } + this.execute(chunk); + } + } + execute(data) { + assert(this.ptr != null); + assert(currentParser == null); + assert(!this.paused); + const { socket, llhttp } = this; + if (data.length > currentBufferSize) { + if (currentBufferPtr) { + llhttp.free(currentBufferPtr); + } + currentBufferSize = Math.ceil(data.length / 4096) * 4096; + currentBufferPtr = llhttp.malloc(currentBufferSize); + } + new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data); + try { + let ret; + try { + currentBufferRef = data; + currentParser = this; + ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length); + } catch (err) { + throw err; + } finally { + currentParser = null; + currentBufferRef = null; + } + const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr; + if (ret === constants.ERROR.PAUSED_UPGRADE) { + this.onUpgrade(data.slice(offset)); + } else if (ret === constants.ERROR.PAUSED) { + this.paused = true; + socket.unshift(data.slice(offset)); + } else if (ret !== constants.ERROR.OK) { + const ptr = llhttp.llhttp_get_error_reason(this.ptr); + let message = ""; + if (ptr) { + const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0); + message = "Response does not match the HTTP/1.1 protocol (" + Buffer.from(llhttp.memory.buffer, ptr, len).toString() + ")"; + } + throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset)); + } + } catch (err) { + util.destroy(socket, err); + } + } + destroy() { + assert(this.ptr != null); + assert(currentParser == null); + this.llhttp.llhttp_free(this.ptr); + this.ptr = null; + timers.clearTimeout(this.timeout); + this.timeout = null; + this.timeoutValue = null; + this.timeoutType = null; + this.paused = false; + } + onStatus(buf) { + this.statusText = buf.toString(); + } + onMessageBegin() { + const { socket, client } = this; + if (socket.destroyed) { + return -1; + } + const request3 = client[kQueue][client[kRunningIdx]]; + if (!request3) { + return -1; + } + } + onHeaderField(buf) { + const len = this.headers.length; + if ((len & 1) === 0) { + this.headers.push(buf); + } else { + this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]); + } + this.trackHeader(buf.length); + } + onHeaderValue(buf) { + let len = this.headers.length; + if ((len & 1) === 1) { + this.headers.push(buf); + len += 1; + } else { + this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]); + } + const key = this.headers[len - 2]; + if (key.length === 10 && key.toString().toLowerCase() === "keep-alive") { + this.keepAlive += buf.toString(); + } else if (key.length === 10 && key.toString().toLowerCase() === "connection") { + this.connection += buf.toString(); + } else if (key.length === 14 && key.toString().toLowerCase() === "content-length") { + this.contentLength += buf.toString(); + } + this.trackHeader(buf.length); + } + trackHeader(len) { + this.headersSize += len; + if (this.headersSize >= this.headersMaxSize) { + util.destroy(this.socket, new HeadersOverflowError()); + } + } + onUpgrade(head) { + const { upgrade, client, socket, headers, statusCode } = this; + assert(upgrade); + const request3 = client[kQueue][client[kRunningIdx]]; + assert(request3); + assert(!socket.destroyed); + assert(socket === client[kSocket]); + assert(!this.paused); + assert(request3.upgrade || request3.method === "CONNECT"); + this.statusCode = null; + this.statusText = ""; + this.shouldKeepAlive = null; + assert(this.headers.length % 2 === 0); + this.headers = []; + this.headersSize = 0; + socket.unshift(head); + socket[kParser].destroy(); + socket[kParser] = null; + socket[kClient] = null; + socket[kError] = null; + socket.removeListener("error", onSocketError).removeListener("readable", onSocketReadable).removeListener("end", onSocketEnd).removeListener("close", onSocketClose); + client[kSocket] = null; + client[kQueue][client[kRunningIdx]++] = null; + client.emit("disconnect", client[kUrl], [client], new InformationalError("upgrade")); + try { + request3.onUpgrade(statusCode, headers, socket); + } catch (err) { + util.destroy(socket, err); + } + resume(client); + } + onHeadersComplete(statusCode, upgrade, shouldKeepAlive) { + const { client, socket, headers, statusText } = this; + if (socket.destroyed) { + return -1; + } + const request3 = client[kQueue][client[kRunningIdx]]; + if (!request3) { + return -1; + } + assert(!this.upgrade); + assert(this.statusCode < 200); + if (statusCode === 100) { + util.destroy(socket, new SocketError("bad response", util.getSocketInfo(socket))); + return -1; + } + if (upgrade && !request3.upgrade) { + util.destroy(socket, new SocketError("bad upgrade", util.getSocketInfo(socket))); + return -1; + } + assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS); + this.statusCode = statusCode; + this.shouldKeepAlive = shouldKeepAlive || // Override llhttp value which does not allow keepAlive for HEAD. + request3.method === "HEAD" && !socket[kReset] && this.connection.toLowerCase() === "keep-alive"; + if (this.statusCode >= 200) { + const bodyTimeout = request3.bodyTimeout != null ? request3.bodyTimeout : client[kBodyTimeout]; + this.setTimeout(bodyTimeout, TIMEOUT_BODY); + } else if (this.timeout) { + if (this.timeout.refresh) { + this.timeout.refresh(); + } + } + if (request3.method === "CONNECT") { + assert(client[kRunning] === 1); + this.upgrade = true; + return 2; + } + if (upgrade) { + assert(client[kRunning] === 1); + this.upgrade = true; + return 2; + } + assert(this.headers.length % 2 === 0); + this.headers = []; + this.headersSize = 0; + if (this.shouldKeepAlive && client[kPipelining]) { + const keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null; + if (keepAliveTimeout != null) { + const timeout = Math.min( + keepAliveTimeout - client[kKeepAliveTimeoutThreshold], + client[kKeepAliveMaxTimeout] + ); + if (timeout <= 0) { + socket[kReset] = true; + } else { + client[kKeepAliveTimeoutValue] = timeout; + } + } else { + client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout]; + } + } else { + socket[kReset] = true; + } + let pause; + try { + pause = request3.onHeaders(statusCode, headers, this.resume, statusText) === false; + } catch (err) { + util.destroy(socket, err); + return -1; + } + if (request3.method === "HEAD") { + return 1; + } + if (statusCode < 200) { + return 1; + } + if (socket[kBlocking]) { + socket[kBlocking] = false; + resume(client); + } + return pause ? constants.ERROR.PAUSED : 0; + } + onBody(buf) { + const { client, socket, statusCode, maxResponseSize } = this; + if (socket.destroyed) { + return -1; + } + const request3 = client[kQueue][client[kRunningIdx]]; + assert(request3); + assert.strictEqual(this.timeoutType, TIMEOUT_BODY); + if (this.timeout) { + if (this.timeout.refresh) { + this.timeout.refresh(); + } + } + assert(statusCode >= 200); + if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) { + util.destroy(socket, new ResponseExceededMaxSizeError()); + return -1; + } + this.bytesRead += buf.length; + try { + if (request3.onData(buf) === false) { + return constants.ERROR.PAUSED; + } + } catch (err) { + util.destroy(socket, err); + return -1; + } + } + onMessageComplete() { + const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this; + if (socket.destroyed && (!statusCode || shouldKeepAlive)) { + return -1; + } + if (upgrade) { + return; + } + const request3 = client[kQueue][client[kRunningIdx]]; + assert(request3); + assert(statusCode >= 100); + this.statusCode = null; + this.statusText = ""; + this.bytesRead = 0; + this.contentLength = ""; + this.keepAlive = ""; + this.connection = ""; + assert(this.headers.length % 2 === 0); + this.headers = []; + this.headersSize = 0; + if (statusCode < 200) { + return; + } + if (request3.method !== "HEAD" && contentLength && bytesRead !== parseInt(contentLength, 10)) { + util.destroy(socket, new ResponseContentLengthMismatchError()); + return -1; + } + try { + request3.onComplete(headers); + } catch (err) { + errorRequest(client, request3, err); + } + client[kQueue][client[kRunningIdx]++] = null; + if (socket[kWriting]) { + assert.strictEqual(client[kRunning], 0); + util.destroy(socket, new InformationalError("reset")); + return constants.ERROR.PAUSED; + } else if (!shouldKeepAlive) { + util.destroy(socket, new InformationalError("reset")); + return constants.ERROR.PAUSED; + } else if (socket[kReset] && client[kRunning] === 0) { + util.destroy(socket, new InformationalError("reset")); + return constants.ERROR.PAUSED; + } else if (client[kPipelining] === 1) { + setImmediate(resume, client); + } else { + resume(client); + } + } + }; + function onParserTimeout(parser) { + const { socket, timeoutType, client } = parser; + if (timeoutType === TIMEOUT_HEADERS) { + if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) { + assert(!parser.paused, "cannot be paused while waiting for headers"); + util.destroy(socket, new HeadersTimeoutError()); + } + } else if (timeoutType === TIMEOUT_BODY) { + if (!parser.paused) { + util.destroy(socket, new BodyTimeoutError()); + } + } else if (timeoutType === TIMEOUT_IDLE) { + assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue]); + util.destroy(socket, new InformationalError("socket idle timeout")); + } + } + function onSocketReadable() { + const { [kParser]: parser } = this; + if (parser) { + parser.readMore(); + } + } + function onSocketError(err) { + const { [kClient]: client, [kParser]: parser } = this; + assert(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID"); + if (client[kHTTPConnVersion] !== "h2") { + if (err.code === "ECONNRESET" && parser.statusCode && !parser.shouldKeepAlive) { + parser.onMessageComplete(); + return; + } + } + this[kError] = err; + onError(this[kClient], err); + } + function onError(client, err) { + if (client[kRunning] === 0 && err.code !== "UND_ERR_INFO" && err.code !== "UND_ERR_SOCKET") { + assert(client[kPendingIdx] === client[kRunningIdx]); + const requests = client[kQueue].splice(client[kRunningIdx]); + for (let i = 0; i < requests.length; i++) { + const request3 = requests[i]; + errorRequest(client, request3, err); + } + assert(client[kSize] === 0); + } + } + function onSocketEnd() { + const { [kParser]: parser, [kClient]: client } = this; + if (client[kHTTPConnVersion] !== "h2") { + if (parser.statusCode && !parser.shouldKeepAlive) { + parser.onMessageComplete(); + return; + } + } + util.destroy(this, new SocketError("other side closed", util.getSocketInfo(this))); + } + function onSocketClose() { + const { [kClient]: client, [kParser]: parser } = this; + if (client[kHTTPConnVersion] === "h1" && parser) { + if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) { + parser.onMessageComplete(); + } + this[kParser].destroy(); + this[kParser] = null; + } + const err = this[kError] || new SocketError("closed", util.getSocketInfo(this)); + client[kSocket] = null; + if (client.destroyed) { + assert(client[kPending] === 0); + const requests = client[kQueue].splice(client[kRunningIdx]); + for (let i = 0; i < requests.length; i++) { + const request3 = requests[i]; + errorRequest(client, request3, err); + } + } else if (client[kRunning] > 0 && err.code !== "UND_ERR_INFO") { + const request3 = client[kQueue][client[kRunningIdx]]; + client[kQueue][client[kRunningIdx]++] = null; + errorRequest(client, request3, err); + } + client[kPendingIdx] = client[kRunningIdx]; + assert(client[kRunning] === 0); + client.emit("disconnect", client[kUrl], [client], err); + resume(client); + } + async function connect(client) { + assert(!client[kConnecting]); + assert(!client[kSocket]); + let { host, hostname, protocol, port } = client[kUrl]; + if (hostname[0] === "[") { + const idx = hostname.indexOf("]"); + assert(idx !== -1); + const ip = hostname.substr(1, idx - 1); + assert(net.isIP(ip)); + hostname = ip; + } + client[kConnecting] = true; + if (channels.beforeConnect.hasSubscribers) { + channels.beforeConnect.publish({ + connectParams: { + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector] + }); + } + try { + const socket = await new Promise((resolve, reject) => { + client[kConnector]({ + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, (err, socket2) => { + if (err) { + reject(err); + } else { + resolve(socket2); + } + }); + }); + if (client.destroyed) { + util.destroy(socket.on("error", () => { + }), new ClientDestroyedError()); + return; + } + client[kConnecting] = false; + assert(socket); + const isH2 = socket.alpnProtocol === "h2"; + if (isH2) { + if (!h2ExperimentalWarned) { + h2ExperimentalWarned = true; + process.emitWarning("H2 support is experimental, expect them to change at any time.", { + code: "UNDICI-H2" + }); + } + const session = http2.connect(client[kUrl], { + createConnection: () => socket, + peerMaxConcurrentStreams: client[kHTTP2SessionState].maxConcurrentStreams + }); + client[kHTTPConnVersion] = "h2"; + session[kClient] = client; + session[kSocket] = socket; + session.on("error", onHttp2SessionError); + session.on("frameError", onHttp2FrameError); + session.on("end", onHttp2SessionEnd); + session.on("goaway", onHTTP2GoAway); + session.on("close", onSocketClose); + session.unref(); + client[kHTTP2Session] = session; + socket[kHTTP2Session] = session; + } else { + if (!llhttpInstance) { + llhttpInstance = await llhttpPromise; + llhttpPromise = null; + } + socket[kNoRef] = false; + socket[kWriting] = false; + socket[kReset] = false; + socket[kBlocking] = false; + socket[kParser] = new Parser(client, socket, llhttpInstance); + } + socket[kCounter] = 0; + socket[kMaxRequests] = client[kMaxRequests]; + socket[kClient] = client; + socket[kError] = null; + socket.on("error", onSocketError).on("readable", onSocketReadable).on("end", onSocketEnd).on("close", onSocketClose); + client[kSocket] = socket; + if (channels.connected.hasSubscribers) { + channels.connected.publish({ + connectParams: { + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector], + socket + }); + } + client.emit("connect", client[kUrl], [client]); + } catch (err) { + if (client.destroyed) { + return; + } + client[kConnecting] = false; + if (channels.connectError.hasSubscribers) { + channels.connectError.publish({ + connectParams: { + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector], + error: err + }); + } + if (err.code === "ERR_TLS_CERT_ALTNAME_INVALID") { + assert(client[kRunning] === 0); + while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) { + const request3 = client[kQueue][client[kPendingIdx]++]; + errorRequest(client, request3, err); + } + } else { + onError(client, err); + } + client.emit("connectionError", client[kUrl], [client], err); + } + resume(client); + } + function emitDrain(client) { + client[kNeedDrain] = 0; + client.emit("drain", client[kUrl], [client]); + } + function resume(client, sync) { + if (client[kResuming] === 2) { + return; + } + client[kResuming] = 2; + _resume(client, sync); + client[kResuming] = 0; + if (client[kRunningIdx] > 256) { + client[kQueue].splice(0, client[kRunningIdx]); + client[kPendingIdx] -= client[kRunningIdx]; + client[kRunningIdx] = 0; + } + } + function _resume(client, sync) { + while (true) { + if (client.destroyed) { + assert(client[kPending] === 0); + return; + } + if (client[kClosedResolve] && !client[kSize]) { + client[kClosedResolve](); + client[kClosedResolve] = null; + return; + } + const socket = client[kSocket]; + if (socket && !socket.destroyed && socket.alpnProtocol !== "h2") { + if (client[kSize] === 0) { + if (!socket[kNoRef] && socket.unref) { + socket.unref(); + socket[kNoRef] = true; + } + } else if (socket[kNoRef] && socket.ref) { + socket.ref(); + socket[kNoRef] = false; + } + if (client[kSize] === 0) { + if (socket[kParser].timeoutType !== TIMEOUT_IDLE) { + socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_IDLE); + } + } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) { + if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) { + const request4 = client[kQueue][client[kRunningIdx]]; + const headersTimeout = request4.headersTimeout != null ? request4.headersTimeout : client[kHeadersTimeout]; + socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS); + } + } + } + if (client[kBusy]) { + client[kNeedDrain] = 2; + } else if (client[kNeedDrain] === 2) { + if (sync) { + client[kNeedDrain] = 1; + process.nextTick(emitDrain, client); + } else { + emitDrain(client); + } + continue; + } + if (client[kPending] === 0) { + return; + } + if (client[kRunning] >= (client[kPipelining] || 1)) { + return; + } + const request3 = client[kQueue][client[kPendingIdx]]; + if (client[kUrl].protocol === "https:" && client[kServerName] !== request3.servername) { + if (client[kRunning] > 0) { + return; + } + client[kServerName] = request3.servername; + if (socket && socket.servername !== request3.servername) { + util.destroy(socket, new InformationalError("servername changed")); + return; + } + } + if (client[kConnecting]) { + return; + } + if (!socket && !client[kHTTP2Session]) { + connect(client); + return; + } + if (socket.destroyed || socket[kWriting] || socket[kReset] || socket[kBlocking]) { + return; + } + if (client[kRunning] > 0 && !request3.idempotent) { + return; + } + if (client[kRunning] > 0 && (request3.upgrade || request3.method === "CONNECT")) { + return; + } + if (util.isStream(request3.body) && util.bodyLength(request3.body) === 0) { + request3.body.on( + "data", + /* istanbul ignore next */ + function() { + assert(false); + } + ).on("error", function(err) { + errorRequest(client, request3, err); + }).on("end", function() { + util.destroy(this); + }); + request3.body = null; + } + if (client[kRunning] > 0 && (util.isStream(request3.body) || util.isAsyncIterable(request3.body))) { + return; + } + if (!request3.aborted && write(client, request3)) { + client[kPendingIdx]++; + } else { + client[kQueue].splice(client[kPendingIdx], 1); + } + } + } + function write(client, request3) { + if (client[kHTTPConnVersion] === "h2") { + writeH2(client, client[kHTTP2Session], request3); + return; + } + const { body, method, path, host, upgrade, headers, blocking, reset } = request3; + const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH"; + if (body && typeof body.read === "function") { + body.read(0); + } + let contentLength = util.bodyLength(body); + if (contentLength === null) { + contentLength = request3.contentLength; + } + if (contentLength === 0 && !expectsPayload) { + contentLength = null; + } + if (request3.contentLength !== null && request3.contentLength !== contentLength) { + if (client[kStrictContentLength]) { + errorRequest(client, request3, new RequestContentLengthMismatchError()); + return false; + } + process.emitWarning(new RequestContentLengthMismatchError()); + } + const socket = client[kSocket]; + try { + request3.onConnect((err) => { + if (request3.aborted || request3.completed) { + return; + } + errorRequest(client, request3, err || new RequestAbortedError()); + util.destroy(socket, new InformationalError("aborted")); + }); + } catch (err) { + errorRequest(client, request3, err); + } + if (request3.aborted) { + return false; + } + if (method === "HEAD") { + socket[kReset] = true; + } + if (upgrade || method === "CONNECT") { + socket[kReset] = true; + } + if (reset != null) { + socket[kReset] = reset; + } + if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) { + socket[kReset] = true; + } + if (blocking) { + socket[kBlocking] = true; + } + let header = `${method} ${path} HTTP/1.1\r +`; + if (typeof host === "string") { + header += `host: ${host}\r +`; + } else { + header += client[kHostHeader]; + } + if (upgrade) { + header += `connection: upgrade\r +upgrade: ${upgrade}\r +`; + } else if (client[kPipelining] && !socket[kReset]) { + header += "connection: keep-alive\r\n"; + } else { + header += "connection: close\r\n"; + } + if (headers) { + header += headers; + } + if (channels.sendHeaders.hasSubscribers) { + channels.sendHeaders.publish({ request: request3, headers: header, socket }); + } + if (!body) { + if (contentLength === 0) { + socket.write(`${header}content-length: 0\r +\r +`, "latin1"); + } else { + assert(contentLength === null, "no body must not have content length"); + socket.write(`${header}\r +`, "latin1"); + } + request3.onRequestSent(); + } else if (util.isBuffer(body)) { + assert(contentLength === body.byteLength, "buffer body must have content length"); + socket.cork(); + socket.write(`${header}content-length: ${contentLength}\r +\r +`, "latin1"); + socket.write(body); + socket.uncork(); + request3.onBodySent(body); + request3.onRequestSent(); + if (!expectsPayload) { + socket[kReset] = true; + } + } else if (util.isBlobLike(body)) { + if (typeof body.stream === "function") { + writeIterable({ body: body.stream(), client, request: request3, socket, contentLength, header, expectsPayload }); + } else { + writeBlob({ body, client, request: request3, socket, contentLength, header, expectsPayload }); + } + } else if (util.isStream(body)) { + writeStream({ body, client, request: request3, socket, contentLength, header, expectsPayload }); + } else if (util.isIterable(body)) { + writeIterable({ body, client, request: request3, socket, contentLength, header, expectsPayload }); + } else { + assert(false); + } + return true; + } + function writeH2(client, session, request3) { + const { body, method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request3; + let headers; + if (typeof reqHeaders === "string") + headers = Request[kHTTP2CopyHeaders](reqHeaders.trim()); + else + headers = reqHeaders; + if (upgrade) { + errorRequest(client, request3, new Error("Upgrade not supported for H2")); + return false; + } + try { + request3.onConnect((err) => { + if (request3.aborted || request3.completed) { + return; + } + errorRequest(client, request3, err || new RequestAbortedError()); + }); + } catch (err) { + errorRequest(client, request3, err); + } + if (request3.aborted) { + return false; + } + let stream; + const h2State = client[kHTTP2SessionState]; + headers[HTTP2_HEADER_AUTHORITY] = host || client[kHost]; + headers[HTTP2_HEADER_METHOD] = method; + if (method === "CONNECT") { + session.ref(); + stream = session.request(headers, { endStream: false, signal }); + if (stream.id && !stream.pending) { + request3.onUpgrade(null, null, stream); + ++h2State.openStreams; + } else { + stream.once("ready", () => { + request3.onUpgrade(null, null, stream); + ++h2State.openStreams; + }); + } + stream.once("close", () => { + h2State.openStreams -= 1; + if (h2State.openStreams === 0) + session.unref(); + }); + return true; + } + headers[HTTP2_HEADER_PATH] = path; + headers[HTTP2_HEADER_SCHEME] = "https"; + const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH"; + if (body && typeof body.read === "function") { + body.read(0); + } + let contentLength = util.bodyLength(body); + if (contentLength == null) { + contentLength = request3.contentLength; + } + if (contentLength === 0 || !expectsPayload) { + contentLength = null; + } + if (request3.contentLength != null && request3.contentLength !== contentLength) { + if (client[kStrictContentLength]) { + errorRequest(client, request3, new RequestContentLengthMismatchError()); + return false; + } + process.emitWarning(new RequestContentLengthMismatchError()); + } + if (contentLength != null) { + assert(body, "no body must not have content length"); + headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}`; + } + session.ref(); + const shouldEndStream = method === "GET" || method === "HEAD"; + if (expectContinue) { + headers[HTTP2_HEADER_EXPECT] = "100-continue"; + stream = session.request(headers, { endStream: shouldEndStream, signal }); + stream.once("continue", writeBodyH2); + } else { + stream = session.request(headers, { + endStream: shouldEndStream, + signal + }); + writeBodyH2(); + } + ++h2State.openStreams; + stream.once("response", (headers2) => { + if (request3.onHeaders(Number(headers2[HTTP2_HEADER_STATUS]), headers2, stream.resume.bind(stream), "") === false) { + stream.pause(); + } + }); + stream.once("end", () => { + request3.onComplete([]); + }); + stream.on("data", (chunk) => { + if (request3.onData(chunk) === false) + stream.pause(); + }); + stream.once("close", () => { + h2State.openStreams -= 1; + if (h2State.openStreams === 0) + session.unref(); + }); + stream.once("error", function(err) { + if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) { + h2State.streams -= 1; + util.destroy(stream, err); + } + }); + stream.once("frameError", (type, code) => { + const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`); + errorRequest(client, request3, err); + if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) { + h2State.streams -= 1; + util.destroy(stream, err); + } + }); + return true; + function writeBodyH2() { + if (!body) { + request3.onRequestSent(); + } else if (util.isBuffer(body)) { + assert(contentLength === body.byteLength, "buffer body must have content length"); + stream.cork(); + stream.write(body); + stream.uncork(); + stream.end(); + request3.onBodySent(body); + request3.onRequestSent(); + } else if (util.isBlobLike(body)) { + if (typeof body.stream === "function") { + writeIterable({ + client, + request: request3, + contentLength, + h2stream: stream, + expectsPayload, + body: body.stream(), + socket: client[kSocket], + header: "" + }); + } else { + writeBlob({ + body, + client, + request: request3, + contentLength, + expectsPayload, + h2stream: stream, + header: "", + socket: client[kSocket] + }); + } + } else if (util.isStream(body)) { + writeStream({ + body, + client, + request: request3, + contentLength, + expectsPayload, + socket: client[kSocket], + h2stream: stream, + header: "" + }); + } else if (util.isIterable(body)) { + writeIterable({ + body, + client, + request: request3, + contentLength, + expectsPayload, + header: "", + h2stream: stream, + socket: client[kSocket] + }); + } else { + assert(false); + } + } + } + function writeStream({ h2stream, body, client, request: request3, socket, contentLength, header, expectsPayload }) { + assert(contentLength !== 0 || client[kRunning] === 0, "stream body cannot be pipelined"); + if (client[kHTTPConnVersion] === "h2") { + let onPipeData = function(chunk) { + request3.onBodySent(chunk); + }; + const pipe = pipeline( + body, + h2stream, + (err) => { + if (err) { + util.destroy(body, err); + util.destroy(h2stream, err); + } else { + request3.onRequestSent(); + } + } + ); + pipe.on("data", onPipeData); + pipe.once("end", () => { + pipe.removeListener("data", onPipeData); + util.destroy(pipe); + }); + return; + } + let finished = false; + const writer = new AsyncWriter({ socket, request: request3, contentLength, client, expectsPayload, header }); + const onData = function(chunk) { + if (finished) { + return; + } + try { + if (!writer.write(chunk) && this.pause) { + this.pause(); + } + } catch (err) { + util.destroy(this, err); + } + }; + const onDrain = function() { + if (finished) { + return; + } + if (body.resume) { + body.resume(); + } + }; + const onAbort = function() { + onFinished(new RequestAbortedError()); + }; + const onFinished = function(err) { + if (finished) { + return; + } + finished = true; + assert(socket.destroyed || socket[kWriting] && client[kRunning] <= 1); + socket.off("drain", onDrain).off("error", onFinished); + body.removeListener("data", onData).removeListener("end", onFinished).removeListener("error", onFinished).removeListener("close", onAbort); + if (!err) { + try { + writer.end(); + } catch (er) { + err = er; + } + } + writer.destroy(err); + if (err && (err.code !== "UND_ERR_INFO" || err.message !== "reset")) { + util.destroy(body, err); + } else { + util.destroy(body); + } + }; + body.on("data", onData).on("end", onFinished).on("error", onFinished).on("close", onAbort); + if (body.resume) { + body.resume(); + } + socket.on("drain", onDrain).on("error", onFinished); + } + async function writeBlob({ h2stream, body, client, request: request3, socket, contentLength, header, expectsPayload }) { + assert(contentLength === body.size, "blob body must have content length"); + const isH2 = client[kHTTPConnVersion] === "h2"; + try { + if (contentLength != null && contentLength !== body.size) { + throw new RequestContentLengthMismatchError(); + } + const buffer = Buffer.from(await body.arrayBuffer()); + if (isH2) { + h2stream.cork(); + h2stream.write(buffer); + h2stream.uncork(); + } else { + socket.cork(); + socket.write(`${header}content-length: ${contentLength}\r +\r +`, "latin1"); + socket.write(buffer); + socket.uncork(); + } + request3.onBodySent(buffer); + request3.onRequestSent(); + if (!expectsPayload) { + socket[kReset] = true; + } + resume(client); + } catch (err) { + util.destroy(isH2 ? h2stream : socket, err); + } + } + async function writeIterable({ h2stream, body, client, request: request3, socket, contentLength, header, expectsPayload }) { + assert(contentLength !== 0 || client[kRunning] === 0, "iterator body cannot be pipelined"); + let callback = null; + function onDrain() { + if (callback) { + const cb = callback; + callback = null; + cb(); + } + } + const waitForDrain = () => new Promise((resolve, reject) => { + assert(callback === null); + if (socket[kError]) { + reject(socket[kError]); + } else { + callback = resolve; + } + }); + if (client[kHTTPConnVersion] === "h2") { + h2stream.on("close", onDrain).on("drain", onDrain); + try { + for await (const chunk of body) { + if (socket[kError]) { + throw socket[kError]; + } + const res = h2stream.write(chunk); + request3.onBodySent(chunk); + if (!res) { + await waitForDrain(); + } + } + } catch (err) { + h2stream.destroy(err); + } finally { + request3.onRequestSent(); + h2stream.end(); + h2stream.off("close", onDrain).off("drain", onDrain); + } + return; + } + socket.on("close", onDrain).on("drain", onDrain); + const writer = new AsyncWriter({ socket, request: request3, contentLength, client, expectsPayload, header }); + try { + for await (const chunk of body) { + if (socket[kError]) { + throw socket[kError]; + } + if (!writer.write(chunk)) { + await waitForDrain(); + } + } + writer.end(); + } catch (err) { + writer.destroy(err); + } finally { + socket.off("close", onDrain).off("drain", onDrain); + } + } + var AsyncWriter = class { + constructor({ socket, request: request3, contentLength, client, expectsPayload, header }) { + this.socket = socket; + this.request = request3; + this.contentLength = contentLength; + this.client = client; + this.bytesWritten = 0; + this.expectsPayload = expectsPayload; + this.header = header; + socket[kWriting] = true; + } + write(chunk) { + const { socket, request: request3, contentLength, client, bytesWritten, expectsPayload, header } = this; + if (socket[kError]) { + throw socket[kError]; + } + if (socket.destroyed) { + return false; + } + const len = Buffer.byteLength(chunk); + if (!len) { + return true; + } + if (contentLength !== null && bytesWritten + len > contentLength) { + if (client[kStrictContentLength]) { + throw new RequestContentLengthMismatchError(); + } + process.emitWarning(new RequestContentLengthMismatchError()); + } + socket.cork(); + if (bytesWritten === 0) { + if (!expectsPayload) { + socket[kReset] = true; + } + if (contentLength === null) { + socket.write(`${header}transfer-encoding: chunked\r +`, "latin1"); + } else { + socket.write(`${header}content-length: ${contentLength}\r +\r +`, "latin1"); + } + } + if (contentLength === null) { + socket.write(`\r +${len.toString(16)}\r +`, "latin1"); + } + this.bytesWritten += len; + const ret = socket.write(chunk); + socket.uncork(); + request3.onBodySent(chunk); + if (!ret) { + if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { + if (socket[kParser].timeout.refresh) { + socket[kParser].timeout.refresh(); + } + } + } + return ret; + } + end() { + const { socket, contentLength, client, bytesWritten, expectsPayload, header, request: request3 } = this; + request3.onRequestSent(); + socket[kWriting] = false; + if (socket[kError]) { + throw socket[kError]; + } + if (socket.destroyed) { + return; + } + if (bytesWritten === 0) { + if (expectsPayload) { + socket.write(`${header}content-length: 0\r +\r +`, "latin1"); + } else { + socket.write(`${header}\r +`, "latin1"); + } + } else if (contentLength === null) { + socket.write("\r\n0\r\n\r\n", "latin1"); + } + if (contentLength !== null && bytesWritten !== contentLength) { + if (client[kStrictContentLength]) { + throw new RequestContentLengthMismatchError(); + } else { + process.emitWarning(new RequestContentLengthMismatchError()); + } + } + if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { + if (socket[kParser].timeout.refresh) { + socket[kParser].timeout.refresh(); + } + } + resume(client); + } + destroy(err) { + const { socket, client } = this; + socket[kWriting] = false; + if (err) { + assert(client[kRunning] <= 1, "pipeline should only contain this request"); + util.destroy(socket, err); + } + } + }; + function errorRequest(client, request3, err) { + try { + request3.onError(err); + assert(request3.aborted); + } catch (err2) { + client.emit("error", err2); + } + } + module2.exports = Client; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/node/fixed-queue.js +var require_fixed_queue = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/node/fixed-queue.js"(exports, module2) { + "use strict"; + var kSize = 2048; + var kMask = kSize - 1; + var FixedCircularBuffer = class { + constructor() { + this.bottom = 0; + this.top = 0; + this.list = new Array(kSize); + this.next = null; + } + isEmpty() { + return this.top === this.bottom; + } + isFull() { + return (this.top + 1 & kMask) === this.bottom; + } + push(data) { + this.list[this.top] = data; + this.top = this.top + 1 & kMask; + } + shift() { + const nextItem = this.list[this.bottom]; + if (nextItem === void 0) + return null; + this.list[this.bottom] = void 0; + this.bottom = this.bottom + 1 & kMask; + return nextItem; + } + }; + module2.exports = class FixedQueue { + constructor() { + this.head = this.tail = new FixedCircularBuffer(); + } + isEmpty() { + return this.head.isEmpty(); + } + push(data) { + if (this.head.isFull()) { + this.head = this.head.next = new FixedCircularBuffer(); + } + this.head.push(data); + } + shift() { + const tail = this.tail; + const next = tail.shift(); + if (tail.isEmpty() && tail.next !== null) { + this.tail = tail.next; + } + return next; + } + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/pool-stats.js +var require_pool_stats = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/pool-stats.js"(exports, module2) { + var { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require_symbols(); + var kPool = Symbol("pool"); + var PoolStats = class { + constructor(pool) { + this[kPool] = pool; + } + get connected() { + return this[kPool][kConnected]; + } + get free() { + return this[kPool][kFree]; + } + get pending() { + return this[kPool][kPending]; + } + get queued() { + return this[kPool][kQueued]; + } + get running() { + return this[kPool][kRunning]; + } + get size() { + return this[kPool][kSize]; + } + }; + module2.exports = PoolStats; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/pool-base.js +var require_pool_base = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/pool-base.js"(exports, module2) { + "use strict"; + var DispatcherBase = require_dispatcher_base(); + var FixedQueue = require_fixed_queue(); + var { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require_symbols(); + var PoolStats = require_pool_stats(); + var kClients = Symbol("clients"); + var kNeedDrain = Symbol("needDrain"); + var kQueue = Symbol("queue"); + var kClosedResolve = Symbol("closed resolve"); + var kOnDrain = Symbol("onDrain"); + var kOnConnect = Symbol("onConnect"); + var kOnDisconnect = Symbol("onDisconnect"); + var kOnConnectionError = Symbol("onConnectionError"); + var kGetDispatcher = Symbol("get dispatcher"); + var kAddClient = Symbol("add client"); + var kRemoveClient = Symbol("remove client"); + var kStats = Symbol("stats"); + var PoolBase = class extends DispatcherBase { + constructor() { + super(); + this[kQueue] = new FixedQueue(); + this[kClients] = []; + this[kQueued] = 0; + const pool = this; + this[kOnDrain] = function onDrain(origin, targets) { + const queue = pool[kQueue]; + let needDrain = false; + while (!needDrain) { + const item = queue.shift(); + if (!item) { + break; + } + pool[kQueued]--; + needDrain = !this.dispatch(item.opts, item.handler); + } + this[kNeedDrain] = needDrain; + if (!this[kNeedDrain] && pool[kNeedDrain]) { + pool[kNeedDrain] = false; + pool.emit("drain", origin, [pool, ...targets]); + } + if (pool[kClosedResolve] && queue.isEmpty()) { + Promise.all(pool[kClients].map((c) => c.close())).then(pool[kClosedResolve]); + } + }; + this[kOnConnect] = (origin, targets) => { + pool.emit("connect", origin, [pool, ...targets]); + }; + this[kOnDisconnect] = (origin, targets, err) => { + pool.emit("disconnect", origin, [pool, ...targets], err); + }; + this[kOnConnectionError] = (origin, targets, err) => { + pool.emit("connectionError", origin, [pool, ...targets], err); + }; + this[kStats] = new PoolStats(this); + } + get [kBusy]() { + return this[kNeedDrain]; + } + get [kConnected]() { + return this[kClients].filter((client) => client[kConnected]).length; + } + get [kFree]() { + return this[kClients].filter((client) => client[kConnected] && !client[kNeedDrain]).length; + } + get [kPending]() { + let ret = this[kQueued]; + for (const { [kPending]: pending } of this[kClients]) { + ret += pending; + } + return ret; + } + get [kRunning]() { + let ret = 0; + for (const { [kRunning]: running } of this[kClients]) { + ret += running; + } + return ret; + } + get [kSize]() { + let ret = this[kQueued]; + for (const { [kSize]: size } of this[kClients]) { + ret += size; + } + return ret; + } + get stats() { + return this[kStats]; + } + async [kClose]() { + if (this[kQueue].isEmpty()) { + return Promise.all(this[kClients].map((c) => c.close())); + } else { + return new Promise((resolve) => { + this[kClosedResolve] = resolve; + }); + } + } + async [kDestroy](err) { + while (true) { + const item = this[kQueue].shift(); + if (!item) { + break; + } + item.handler.onError(err); + } + return Promise.all(this[kClients].map((c) => c.destroy(err))); + } + [kDispatch](opts, handler) { + const dispatcher = this[kGetDispatcher](); + if (!dispatcher) { + this[kNeedDrain] = true; + this[kQueue].push({ opts, handler }); + this[kQueued]++; + } else if (!dispatcher.dispatch(opts, handler)) { + dispatcher[kNeedDrain] = true; + this[kNeedDrain] = !this[kGetDispatcher](); + } + return !this[kNeedDrain]; + } + [kAddClient](client) { + client.on("drain", this[kOnDrain]).on("connect", this[kOnConnect]).on("disconnect", this[kOnDisconnect]).on("connectionError", this[kOnConnectionError]); + this[kClients].push(client); + if (this[kNeedDrain]) { + process.nextTick(() => { + if (this[kNeedDrain]) { + this[kOnDrain](client[kUrl], [this, client]); + } + }); + } + return this; + } + [kRemoveClient](client) { + client.close(() => { + const idx = this[kClients].indexOf(client); + if (idx !== -1) { + this[kClients].splice(idx, 1); + } + }); + this[kNeedDrain] = this[kClients].some((dispatcher) => !dispatcher[kNeedDrain] && dispatcher.closed !== true && dispatcher.destroyed !== true); + } + }; + module2.exports = { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kRemoveClient, + kGetDispatcher + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/pool.js +var require_pool = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/pool.js"(exports, module2) { + "use strict"; + var { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kGetDispatcher + } = require_pool_base(); + var Client = require_client(); + var { + InvalidArgumentError + } = require_errors(); + var util = require_util(); + var { kUrl, kInterceptors } = require_symbols(); + var buildConnector = require_connect(); + var kOptions = Symbol("options"); + var kConnections = Symbol("connections"); + var kFactory = Symbol("factory"); + function defaultFactory(origin, opts) { + return new Client(origin, opts); + } + var Pool = class extends PoolBase { + constructor(origin, { + connections, + factory = defaultFactory, + connect, + connectTimeout, + tls, + maxCachedSessions, + socketPath, + autoSelectFamily, + autoSelectFamilyAttemptTimeout, + allowH2, + ...options + } = {}) { + super(); + if (connections != null && (!Number.isFinite(connections) || connections < 0)) { + throw new InvalidArgumentError("invalid connections"); + } + if (typeof factory !== "function") { + throw new InvalidArgumentError("factory must be a function."); + } + if (connect != null && typeof connect !== "function" && typeof connect !== "object") { + throw new InvalidArgumentError("connect must be a function or an object"); + } + if (typeof connect !== "function") { + connect = buildConnector({ + ...tls, + maxCachedSessions, + allowH2, + socketPath, + timeout: connectTimeout == null ? 1e4 : connectTimeout, + ...util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0, + ...connect + }); + } + this[kInterceptors] = options.interceptors && options.interceptors.Pool && Array.isArray(options.interceptors.Pool) ? options.interceptors.Pool : []; + this[kConnections] = connections || null; + this[kUrl] = util.parseOrigin(origin); + this[kOptions] = { ...util.deepClone(options), connect, allowH2 }; + this[kOptions].interceptors = options.interceptors ? { ...options.interceptors } : void 0; + this[kFactory] = factory; + } + [kGetDispatcher]() { + let dispatcher = this[kClients].find((dispatcher2) => !dispatcher2[kNeedDrain]); + if (dispatcher) { + return dispatcher; + } + if (!this[kConnections] || this[kClients].length < this[kConnections]) { + dispatcher = this[kFactory](this[kUrl], this[kOptions]); + this[kAddClient](dispatcher); + } + return dispatcher; + } + }; + module2.exports = Pool; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/balanced-pool.js +var require_balanced_pool = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/balanced-pool.js"(exports, module2) { + "use strict"; + var { + BalancedPoolMissingUpstreamError, + InvalidArgumentError + } = require_errors(); + var { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kRemoveClient, + kGetDispatcher + } = require_pool_base(); + var Pool = require_pool(); + var { kUrl, kInterceptors } = require_symbols(); + var { parseOrigin } = require_util(); + var kFactory = Symbol("factory"); + var kOptions = Symbol("options"); + var kGreatestCommonDivisor = Symbol("kGreatestCommonDivisor"); + var kCurrentWeight = Symbol("kCurrentWeight"); + var kIndex = Symbol("kIndex"); + var kWeight = Symbol("kWeight"); + var kMaxWeightPerServer = Symbol("kMaxWeightPerServer"); + var kErrorPenalty = Symbol("kErrorPenalty"); + function getGreatestCommonDivisor(a, b) { + if (b === 0) + return a; + return getGreatestCommonDivisor(b, a % b); + } + function defaultFactory(origin, opts) { + return new Pool(origin, opts); + } + var BalancedPool = class extends PoolBase { + constructor(upstreams = [], { factory = defaultFactory, ...opts } = {}) { + super(); + this[kOptions] = opts; + this[kIndex] = -1; + this[kCurrentWeight] = 0; + this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100; + this[kErrorPenalty] = this[kOptions].errorPenalty || 15; + if (!Array.isArray(upstreams)) { + upstreams = [upstreams]; + } + if (typeof factory !== "function") { + throw new InvalidArgumentError("factory must be a function."); + } + this[kInterceptors] = opts.interceptors && opts.interceptors.BalancedPool && Array.isArray(opts.interceptors.BalancedPool) ? opts.interceptors.BalancedPool : []; + this[kFactory] = factory; + for (const upstream of upstreams) { + this.addUpstream(upstream); + } + this._updateBalancedPoolStats(); + } + addUpstream(upstream) { + const upstreamOrigin = parseOrigin(upstream).origin; + if (this[kClients].find((pool2) => pool2[kUrl].origin === upstreamOrigin && pool2.closed !== true && pool2.destroyed !== true)) { + return this; + } + const pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions])); + this[kAddClient](pool); + pool.on("connect", () => { + pool[kWeight] = Math.min(this[kMaxWeightPerServer], pool[kWeight] + this[kErrorPenalty]); + }); + pool.on("connectionError", () => { + pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]); + this._updateBalancedPoolStats(); + }); + pool.on("disconnect", (...args) => { + const err = args[2]; + if (err && err.code === "UND_ERR_SOCKET") { + pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]); + this._updateBalancedPoolStats(); + } + }); + for (const client of this[kClients]) { + client[kWeight] = this[kMaxWeightPerServer]; + } + this._updateBalancedPoolStats(); + return this; + } + _updateBalancedPoolStats() { + this[kGreatestCommonDivisor] = this[kClients].map((p) => p[kWeight]).reduce(getGreatestCommonDivisor, 0); + } + removeUpstream(upstream) { + const upstreamOrigin = parseOrigin(upstream).origin; + const pool = this[kClients].find((pool2) => pool2[kUrl].origin === upstreamOrigin && pool2.closed !== true && pool2.destroyed !== true); + if (pool) { + this[kRemoveClient](pool); + } + return this; + } + get upstreams() { + return this[kClients].filter((dispatcher) => dispatcher.closed !== true && dispatcher.destroyed !== true).map((p) => p[kUrl].origin); + } + [kGetDispatcher]() { + if (this[kClients].length === 0) { + throw new BalancedPoolMissingUpstreamError(); + } + const dispatcher = this[kClients].find((dispatcher2) => !dispatcher2[kNeedDrain] && dispatcher2.closed !== true && dispatcher2.destroyed !== true); + if (!dispatcher) { + return; + } + const allClientsBusy = this[kClients].map((pool) => pool[kNeedDrain]).reduce((a, b) => a && b, true); + if (allClientsBusy) { + return; + } + let counter = 0; + let maxWeightIndex = this[kClients].findIndex((pool) => !pool[kNeedDrain]); + while (counter++ < this[kClients].length) { + this[kIndex] = (this[kIndex] + 1) % this[kClients].length; + const pool = this[kClients][this[kIndex]]; + if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) { + maxWeightIndex = this[kIndex]; + } + if (this[kIndex] === 0) { + this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor]; + if (this[kCurrentWeight] <= 0) { + this[kCurrentWeight] = this[kMaxWeightPerServer]; + } + } + if (pool[kWeight] >= this[kCurrentWeight] && !pool[kNeedDrain]) { + return pool; + } + } + this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight]; + this[kIndex] = maxWeightIndex; + return this[kClients][maxWeightIndex]; + } + }; + module2.exports = BalancedPool; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/compat/dispatcher-weakref.js +var require_dispatcher_weakref = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/compat/dispatcher-weakref.js"(exports, module2) { + "use strict"; + var { kConnected, kSize } = require_symbols(); + var CompatWeakRef = class { + constructor(value) { + this.value = value; + } + deref() { + return this.value[kConnected] === 0 && this.value[kSize] === 0 ? void 0 : this.value; + } + }; + var CompatFinalizer = class { + constructor(finalizer) { + this.finalizer = finalizer; + } + register(dispatcher, key) { + if (dispatcher.on) { + dispatcher.on("disconnect", () => { + if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) { + this.finalizer(key); + } + }); + } + } + }; + module2.exports = function() { + if (process.env.NODE_V8_COVERAGE) { + return { + WeakRef: CompatWeakRef, + FinalizationRegistry: CompatFinalizer + }; + } + return { + WeakRef: global.WeakRef || CompatWeakRef, + FinalizationRegistry: global.FinalizationRegistry || CompatFinalizer + }; + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/agent.js +var require_agent = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/agent.js"(exports, module2) { + "use strict"; + var { InvalidArgumentError } = require_errors(); + var { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = require_symbols(); + var DispatcherBase = require_dispatcher_base(); + var Pool = require_pool(); + var Client = require_client(); + var util = require_util(); + var createRedirectInterceptor = require_redirectInterceptor(); + var { WeakRef: WeakRef2, FinalizationRegistry } = require_dispatcher_weakref()(); + var kOnConnect = Symbol("onConnect"); + var kOnDisconnect = Symbol("onDisconnect"); + var kOnConnectionError = Symbol("onConnectionError"); + var kMaxRedirections = Symbol("maxRedirections"); + var kOnDrain = Symbol("onDrain"); + var kFactory = Symbol("factory"); + var kFinalizer = Symbol("finalizer"); + var kOptions = Symbol("options"); + function defaultFactory(origin, opts) { + return opts && opts.connections === 1 ? new Client(origin, opts) : new Pool(origin, opts); + } + var Agent = class extends DispatcherBase { + constructor({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) { + super(); + if (typeof factory !== "function") { + throw new InvalidArgumentError("factory must be a function."); + } + if (connect != null && typeof connect !== "function" && typeof connect !== "object") { + throw new InvalidArgumentError("connect must be a function or an object"); + } + if (!Number.isInteger(maxRedirections) || maxRedirections < 0) { + throw new InvalidArgumentError("maxRedirections must be a positive number"); + } + if (connect && typeof connect !== "function") { + connect = { ...connect }; + } + this[kInterceptors] = options.interceptors && options.interceptors.Agent && Array.isArray(options.interceptors.Agent) ? options.interceptors.Agent : [createRedirectInterceptor({ maxRedirections })]; + this[kOptions] = { ...util.deepClone(options), connect }; + this[kOptions].interceptors = options.interceptors ? { ...options.interceptors } : void 0; + this[kMaxRedirections] = maxRedirections; + this[kFactory] = factory; + this[kClients] = /* @__PURE__ */ new Map(); + this[kFinalizer] = new FinalizationRegistry( + /* istanbul ignore next: gc is undeterministic */ + (key) => { + const ref = this[kClients].get(key); + if (ref !== void 0 && ref.deref() === void 0) { + this[kClients].delete(key); + } + } + ); + const agent = this; + this[kOnDrain] = (origin, targets) => { + agent.emit("drain", origin, [agent, ...targets]); + }; + this[kOnConnect] = (origin, targets) => { + agent.emit("connect", origin, [agent, ...targets]); + }; + this[kOnDisconnect] = (origin, targets, err) => { + agent.emit("disconnect", origin, [agent, ...targets], err); + }; + this[kOnConnectionError] = (origin, targets, err) => { + agent.emit("connectionError", origin, [agent, ...targets], err); + }; + } + get [kRunning]() { + let ret = 0; + for (const ref of this[kClients].values()) { + const client = ref.deref(); + if (client) { + ret += client[kRunning]; + } + } + return ret; + } + [kDispatch](opts, handler) { + let key; + if (opts.origin && (typeof opts.origin === "string" || opts.origin instanceof URL)) { + key = String(opts.origin); + } else { + throw new InvalidArgumentError("opts.origin must be a non-empty string or URL."); + } + const ref = this[kClients].get(key); + let dispatcher = ref ? ref.deref() : null; + if (!dispatcher) { + dispatcher = this[kFactory](opts.origin, this[kOptions]).on("drain", this[kOnDrain]).on("connect", this[kOnConnect]).on("disconnect", this[kOnDisconnect]).on("connectionError", this[kOnConnectionError]); + this[kClients].set(key, new WeakRef2(dispatcher)); + this[kFinalizer].register(dispatcher, key); + } + return dispatcher.dispatch(opts, handler); + } + async [kClose]() { + const closePromises = []; + for (const ref of this[kClients].values()) { + const client = ref.deref(); + if (client) { + closePromises.push(client.close()); + } + } + await Promise.all(closePromises); + } + async [kDestroy](err) { + const destroyPromises = []; + for (const ref of this[kClients].values()) { + const client = ref.deref(); + if (client) { + destroyPromises.push(client.destroy(err)); + } + } + await Promise.all(destroyPromises); + } + }; + module2.exports = Agent; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/readable.js +var require_readable = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/readable.js"(exports, module2) { + "use strict"; + var assert = require("assert"); + var { Readable } = require("stream"); + var { RequestAbortedError, NotSupportedError, InvalidArgumentError } = require_errors(); + var util = require_util(); + var { ReadableStreamFrom, toUSVString } = require_util(); + var Blob2; + var kConsume = Symbol("kConsume"); + var kReading = Symbol("kReading"); + var kBody = Symbol("kBody"); + var kAbort = Symbol("abort"); + var kContentType = Symbol("kContentType"); + module2.exports = class BodyReadable extends Readable { + constructor({ + resume, + abort, + contentType = "", + highWaterMark = 64 * 1024 + // Same as nodejs fs streams. + }) { + super({ + autoDestroy: true, + read: resume, + highWaterMark + }); + this._readableState.dataEmitted = false; + this[kAbort] = abort; + this[kConsume] = null; + this[kBody] = null; + this[kContentType] = contentType; + this[kReading] = false; + } + destroy(err) { + if (this.destroyed) { + return this; + } + if (!err && !this._readableState.endEmitted) { + err = new RequestAbortedError(); + } + if (err) { + this[kAbort](); + } + return super.destroy(err); + } + emit(ev, ...args) { + if (ev === "data") { + this._readableState.dataEmitted = true; + } else if (ev === "error") { + this._readableState.errorEmitted = true; + } + return super.emit(ev, ...args); + } + on(ev, ...args) { + if (ev === "data" || ev === "readable") { + this[kReading] = true; + } + return super.on(ev, ...args); + } + addListener(ev, ...args) { + return this.on(ev, ...args); + } + off(ev, ...args) { + const ret = super.off(ev, ...args); + if (ev === "data" || ev === "readable") { + this[kReading] = this.listenerCount("data") > 0 || this.listenerCount("readable") > 0; + } + return ret; + } + removeListener(ev, ...args) { + return this.off(ev, ...args); + } + push(chunk) { + if (this[kConsume] && chunk !== null && this.readableLength === 0) { + consumePush(this[kConsume], chunk); + return this[kReading] ? super.push(chunk) : true; + } + return super.push(chunk); + } + // https://fetch.spec.whatwg.org/#dom-body-text + async text() { + return consume(this, "text"); + } + // https://fetch.spec.whatwg.org/#dom-body-json + async json() { + return consume(this, "json"); + } + // https://fetch.spec.whatwg.org/#dom-body-blob + async blob() { + return consume(this, "blob"); + } + // https://fetch.spec.whatwg.org/#dom-body-arraybuffer + async arrayBuffer() { + return consume(this, "arrayBuffer"); + } + // https://fetch.spec.whatwg.org/#dom-body-formdata + async formData() { + throw new NotSupportedError(); + } + // https://fetch.spec.whatwg.org/#dom-body-bodyused + get bodyUsed() { + return util.isDisturbed(this); + } + // https://fetch.spec.whatwg.org/#dom-body-body + get body() { + if (!this[kBody]) { + this[kBody] = ReadableStreamFrom(this); + if (this[kConsume]) { + this[kBody].getReader(); + assert(this[kBody].locked); + } + } + return this[kBody]; + } + async dump(opts) { + let limit = opts && Number.isFinite(opts.limit) ? opts.limit : 262144; + const signal = opts && opts.signal; + const abortFn = () => { + this.destroy(); + }; + let signalListenerCleanup; + if (signal) { + if (typeof signal !== "object" || !("aborted" in signal)) { + throw new InvalidArgumentError("signal must be an AbortSignal"); + } + util.throwIfAborted(signal); + signalListenerCleanup = util.addAbortListener(signal, abortFn); + } + try { + for await (const chunk of this) { + util.throwIfAborted(signal); + limit -= Buffer.byteLength(chunk); + if (limit < 0) { + return; + } + } + } catch { + util.throwIfAborted(signal); + } finally { + if (typeof signalListenerCleanup === "function") { + signalListenerCleanup(); + } else if (signalListenerCleanup) { + signalListenerCleanup[Symbol.dispose](); + } + } + } + }; + function isLocked(self) { + return self[kBody] && self[kBody].locked === true || self[kConsume]; + } + function isUnusable(self) { + return util.isDisturbed(self) || isLocked(self); + } + async function consume(stream, type) { + if (isUnusable(stream)) { + throw new TypeError("unusable"); + } + assert(!stream[kConsume]); + return new Promise((resolve, reject) => { + stream[kConsume] = { + type, + stream, + resolve, + reject, + length: 0, + body: [] + }; + stream.on("error", function(err) { + consumeFinish(this[kConsume], err); + }).on("close", function() { + if (this[kConsume].body !== null) { + consumeFinish(this[kConsume], new RequestAbortedError()); + } + }); + process.nextTick(consumeStart, stream[kConsume]); + }); + } + function consumeStart(consume2) { + if (consume2.body === null) { + return; + } + const { _readableState: state } = consume2.stream; + for (const chunk of state.buffer) { + consumePush(consume2, chunk); + } + if (state.endEmitted) { + consumeEnd(this[kConsume]); + } else { + consume2.stream.on("end", function() { + consumeEnd(this[kConsume]); + }); + } + consume2.stream.resume(); + while (consume2.stream.read() != null) { + } + } + function consumeEnd(consume2) { + const { type, body, resolve, stream, length } = consume2; + try { + if (type === "text") { + resolve(toUSVString(Buffer.concat(body))); + } else if (type === "json") { + resolve(JSON.parse(Buffer.concat(body))); + } else if (type === "arrayBuffer") { + const dst = new Uint8Array(length); + let pos = 0; + for (const buf of body) { + dst.set(buf, pos); + pos += buf.byteLength; + } + resolve(dst.buffer); + } else if (type === "blob") { + if (!Blob2) { + Blob2 = require("buffer").Blob; + } + resolve(new Blob2(body, { type: stream[kContentType] })); + } + consumeFinish(consume2); + } catch (err) { + stream.destroy(err); + } + } + function consumePush(consume2, chunk) { + consume2.length += chunk.length; + consume2.body.push(chunk); + } + function consumeFinish(consume2, err) { + if (consume2.body === null) { + return; + } + if (err) { + consume2.reject(err); + } else { + consume2.resolve(); + } + consume2.type = null; + consume2.stream = null; + consume2.resolve = null; + consume2.reject = null; + consume2.length = 0; + consume2.body = null; + } + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/util.js +var require_util3 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/util.js"(exports, module2) { + var assert = require("assert"); + var { + ResponseStatusCodeError + } = require_errors(); + var { toUSVString } = require_util(); + async function getResolveErrorBodyCallback({ callback, body, contentType, statusCode, statusMessage, headers }) { + assert(body); + let chunks = []; + let limit = 0; + for await (const chunk of body) { + chunks.push(chunk); + limit += chunk.length; + if (limit > 128 * 1024) { + chunks = null; + break; + } + } + if (statusCode === 204 || !contentType || !chunks) { + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ""}`, statusCode, headers)); + return; + } + try { + if (contentType.startsWith("application/json")) { + const payload = JSON.parse(toUSVString(Buffer.concat(chunks))); + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ""}`, statusCode, headers, payload)); + return; + } + if (contentType.startsWith("text/")) { + const payload = toUSVString(Buffer.concat(chunks)); + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ""}`, statusCode, headers, payload)); + return; + } + } catch (err) { + } + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ""}`, statusCode, headers)); + } + module2.exports = { getResolveErrorBodyCallback }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/abort-signal.js +var require_abort_signal = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/abort-signal.js"(exports, module2) { + var { addAbortListener } = require_util(); + var { RequestAbortedError } = require_errors(); + var kListener = Symbol("kListener"); + var kSignal = Symbol("kSignal"); + function abort(self) { + if (self.abort) { + self.abort(); + } else { + self.onError(new RequestAbortedError()); + } + } + function addSignal(self, signal) { + self[kSignal] = null; + self[kListener] = null; + if (!signal) { + return; + } + if (signal.aborted) { + abort(self); + return; + } + self[kSignal] = signal; + self[kListener] = () => { + abort(self); + }; + addAbortListener(self[kSignal], self[kListener]); + } + function removeSignal(self) { + if (!self[kSignal]) { + return; + } + if ("removeEventListener" in self[kSignal]) { + self[kSignal].removeEventListener("abort", self[kListener]); + } else { + self[kSignal].removeListener("abort", self[kListener]); + } + self[kSignal] = null; + self[kListener] = null; + } + module2.exports = { + addSignal, + removeSignal + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-request.js +var require_api_request = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-request.js"(exports, module2) { + "use strict"; + var Readable = require_readable(); + var { + InvalidArgumentError, + RequestAbortedError + } = require_errors(); + var util = require_util(); + var { getResolveErrorBodyCallback } = require_util3(); + var { AsyncResource } = require("async_hooks"); + var { addSignal, removeSignal } = require_abort_signal(); + var RequestHandler = class extends AsyncResource { + constructor(opts, callback) { + if (!opts || typeof opts !== "object") { + throw new InvalidArgumentError("invalid opts"); + } + const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError, highWaterMark } = opts; + try { + if (typeof callback !== "function") { + throw new InvalidArgumentError("invalid callback"); + } + if (highWaterMark && (typeof highWaterMark !== "number" || highWaterMark < 0)) { + throw new InvalidArgumentError("invalid highWaterMark"); + } + if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") { + throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); + } + if (method === "CONNECT") { + throw new InvalidArgumentError("invalid method"); + } + if (onInfo && typeof onInfo !== "function") { + throw new InvalidArgumentError("invalid onInfo callback"); + } + super("UNDICI_REQUEST"); + } catch (err) { + if (util.isStream(body)) { + util.destroy(body.on("error", util.nop), err); + } + throw err; + } + this.responseHeaders = responseHeaders || null; + this.opaque = opaque || null; + this.callback = callback; + this.res = null; + this.abort = null; + this.body = body; + this.trailers = {}; + this.context = null; + this.onInfo = onInfo || null; + this.throwOnError = throwOnError; + this.highWaterMark = highWaterMark; + if (util.isStream(body)) { + body.on("error", (err) => { + this.onError(err); + }); + } + addSignal(this, signal); + } + onConnect(abort, context) { + if (!this.callback) { + throw new RequestAbortedError(); + } + this.abort = abort; + this.context = context; + } + onHeaders(statusCode, rawHeaders, resume, statusMessage) { + const { callback, opaque, abort, context, responseHeaders, highWaterMark } = this; + const headers = responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + if (statusCode < 200) { + if (this.onInfo) { + this.onInfo({ statusCode, headers }); + } + return; + } + const parsedHeaders = responseHeaders === "raw" ? util.parseHeaders(rawHeaders) : headers; + const contentType = parsedHeaders["content-type"]; + const body = new Readable({ resume, abort, contentType, highWaterMark }); + this.callback = null; + this.res = body; + if (callback !== null) { + if (this.throwOnError && statusCode >= 400) { + this.runInAsyncScope( + getResolveErrorBodyCallback, + null, + { callback, body, contentType, statusCode, statusMessage, headers } + ); + } else { + this.runInAsyncScope(callback, null, null, { + statusCode, + headers, + trailers: this.trailers, + opaque, + body, + context + }); + } + } + } + onData(chunk) { + const { res } = this; + return res.push(chunk); + } + onComplete(trailers) { + const { res } = this; + removeSignal(this); + util.parseHeaders(trailers, this.trailers); + res.push(null); + } + onError(err) { + const { res, callback, body, opaque } = this; + removeSignal(this); + if (callback) { + this.callback = null; + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }); + }); + } + if (res) { + this.res = null; + queueMicrotask(() => { + util.destroy(res, err); + }); + } + if (body) { + this.body = null; + util.destroy(body, err); + } + } + }; + function request3(opts, callback) { + if (callback === void 0) { + return new Promise((resolve, reject) => { + request3.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data); + }); + }); + } + try { + this.dispatch(opts, new RequestHandler(opts, callback)); + } catch (err) { + if (typeof callback !== "function") { + throw err; + } + const opaque = opts && opts.opaque; + queueMicrotask(() => callback(err, { opaque })); + } + } + module2.exports = request3; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-stream.js +var require_api_stream = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-stream.js"(exports, module2) { + "use strict"; + var { finished, PassThrough } = require("stream"); + var { + InvalidArgumentError, + InvalidReturnValueError, + RequestAbortedError + } = require_errors(); + var util = require_util(); + var { getResolveErrorBodyCallback } = require_util3(); + var { AsyncResource } = require("async_hooks"); + var { addSignal, removeSignal } = require_abort_signal(); + var StreamHandler = class extends AsyncResource { + constructor(opts, factory, callback) { + if (!opts || typeof opts !== "object") { + throw new InvalidArgumentError("invalid opts"); + } + const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError } = opts; + try { + if (typeof callback !== "function") { + throw new InvalidArgumentError("invalid callback"); + } + if (typeof factory !== "function") { + throw new InvalidArgumentError("invalid factory"); + } + if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") { + throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); + } + if (method === "CONNECT") { + throw new InvalidArgumentError("invalid method"); + } + if (onInfo && typeof onInfo !== "function") { + throw new InvalidArgumentError("invalid onInfo callback"); + } + super("UNDICI_STREAM"); + } catch (err) { + if (util.isStream(body)) { + util.destroy(body.on("error", util.nop), err); + } + throw err; + } + this.responseHeaders = responseHeaders || null; + this.opaque = opaque || null; + this.factory = factory; + this.callback = callback; + this.res = null; + this.abort = null; + this.context = null; + this.trailers = null; + this.body = body; + this.onInfo = onInfo || null; + this.throwOnError = throwOnError || false; + if (util.isStream(body)) { + body.on("error", (err) => { + this.onError(err); + }); + } + addSignal(this, signal); + } + onConnect(abort, context) { + if (!this.callback) { + throw new RequestAbortedError(); + } + this.abort = abort; + this.context = context; + } + onHeaders(statusCode, rawHeaders, resume, statusMessage) { + const { factory, opaque, context, callback, responseHeaders } = this; + const headers = responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + if (statusCode < 200) { + if (this.onInfo) { + this.onInfo({ statusCode, headers }); + } + return; + } + this.factory = null; + let res; + if (this.throwOnError && statusCode >= 400) { + const parsedHeaders = responseHeaders === "raw" ? util.parseHeaders(rawHeaders) : headers; + const contentType = parsedHeaders["content-type"]; + res = new PassThrough(); + this.callback = null; + this.runInAsyncScope( + getResolveErrorBodyCallback, + null, + { callback, body: res, contentType, statusCode, statusMessage, headers } + ); + } else { + if (factory === null) { + return; + } + res = this.runInAsyncScope(factory, null, { + statusCode, + headers, + opaque, + context + }); + if (!res || typeof res.write !== "function" || typeof res.end !== "function" || typeof res.on !== "function") { + throw new InvalidReturnValueError("expected Writable"); + } + finished(res, { readable: false }, (err) => { + const { callback: callback2, res: res2, opaque: opaque2, trailers, abort } = this; + this.res = null; + if (err || !res2.readable) { + util.destroy(res2, err); + } + this.callback = null; + this.runInAsyncScope(callback2, null, err || null, { opaque: opaque2, trailers }); + if (err) { + abort(); + } + }); + } + res.on("drain", resume); + this.res = res; + const needDrain = res.writableNeedDrain !== void 0 ? res.writableNeedDrain : res._writableState && res._writableState.needDrain; + return needDrain !== true; + } + onData(chunk) { + const { res } = this; + return res ? res.write(chunk) : true; + } + onComplete(trailers) { + const { res } = this; + removeSignal(this); + if (!res) { + return; + } + this.trailers = util.parseHeaders(trailers); + res.end(); + } + onError(err) { + const { res, callback, opaque, body } = this; + removeSignal(this); + this.factory = null; + if (res) { + this.res = null; + util.destroy(res, err); + } else if (callback) { + this.callback = null; + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }); + }); + } + if (body) { + this.body = null; + util.destroy(body, err); + } + } + }; + function stream(opts, factory, callback) { + if (callback === void 0) { + return new Promise((resolve, reject) => { + stream.call(this, opts, factory, (err, data) => { + return err ? reject(err) : resolve(data); + }); + }); + } + try { + this.dispatch(opts, new StreamHandler(opts, factory, callback)); + } catch (err) { + if (typeof callback !== "function") { + throw err; + } + const opaque = opts && opts.opaque; + queueMicrotask(() => callback(err, { opaque })); + } + } + module2.exports = stream; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-pipeline.js +var require_api_pipeline = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-pipeline.js"(exports, module2) { + "use strict"; + var { + Readable, + Duplex, + PassThrough + } = require("stream"); + var { + InvalidArgumentError, + InvalidReturnValueError, + RequestAbortedError + } = require_errors(); + var util = require_util(); + var { AsyncResource } = require("async_hooks"); + var { addSignal, removeSignal } = require_abort_signal(); + var assert = require("assert"); + var kResume = Symbol("resume"); + var PipelineRequest = class extends Readable { + constructor() { + super({ autoDestroy: true }); + this[kResume] = null; + } + _read() { + const { [kResume]: resume } = this; + if (resume) { + this[kResume] = null; + resume(); + } + } + _destroy(err, callback) { + this._read(); + callback(err); + } + }; + var PipelineResponse = class extends Readable { + constructor(resume) { + super({ autoDestroy: true }); + this[kResume] = resume; + } + _read() { + this[kResume](); + } + _destroy(err, callback) { + if (!err && !this._readableState.endEmitted) { + err = new RequestAbortedError(); + } + callback(err); + } + }; + var PipelineHandler = class extends AsyncResource { + constructor(opts, handler) { + if (!opts || typeof opts !== "object") { + throw new InvalidArgumentError("invalid opts"); + } + if (typeof handler !== "function") { + throw new InvalidArgumentError("invalid handler"); + } + const { signal, method, opaque, onInfo, responseHeaders } = opts; + if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") { + throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); + } + if (method === "CONNECT") { + throw new InvalidArgumentError("invalid method"); + } + if (onInfo && typeof onInfo !== "function") { + throw new InvalidArgumentError("invalid onInfo callback"); + } + super("UNDICI_PIPELINE"); + this.opaque = opaque || null; + this.responseHeaders = responseHeaders || null; + this.handler = handler; + this.abort = null; + this.context = null; + this.onInfo = onInfo || null; + this.req = new PipelineRequest().on("error", util.nop); + this.ret = new Duplex({ + readableObjectMode: opts.objectMode, + autoDestroy: true, + read: () => { + const { body } = this; + if (body && body.resume) { + body.resume(); + } + }, + write: (chunk, encoding, callback) => { + const { req } = this; + if (req.push(chunk, encoding) || req._readableState.destroyed) { + callback(); + } else { + req[kResume] = callback; + } + }, + destroy: (err, callback) => { + const { body, req, res, ret, abort } = this; + if (!err && !ret._readableState.endEmitted) { + err = new RequestAbortedError(); + } + if (abort && err) { + abort(); + } + util.destroy(body, err); + util.destroy(req, err); + util.destroy(res, err); + removeSignal(this); + callback(err); + } + }).on("prefinish", () => { + const { req } = this; + req.push(null); + }); + this.res = null; + addSignal(this, signal); + } + onConnect(abort, context) { + const { ret, res } = this; + assert(!res, "pipeline cannot be retried"); + if (ret.destroyed) { + throw new RequestAbortedError(); + } + this.abort = abort; + this.context = context; + } + onHeaders(statusCode, rawHeaders, resume) { + const { opaque, handler, context } = this; + if (statusCode < 200) { + if (this.onInfo) { + const headers = this.responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + this.onInfo({ statusCode, headers }); + } + return; + } + this.res = new PipelineResponse(resume); + let body; + try { + this.handler = null; + const headers = this.responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + body = this.runInAsyncScope(handler, null, { + statusCode, + headers, + opaque, + body: this.res, + context + }); + } catch (err) { + this.res.on("error", util.nop); + throw err; + } + if (!body || typeof body.on !== "function") { + throw new InvalidReturnValueError("expected Readable"); + } + body.on("data", (chunk) => { + const { ret, body: body2 } = this; + if (!ret.push(chunk) && body2.pause) { + body2.pause(); + } + }).on("error", (err) => { + const { ret } = this; + util.destroy(ret, err); + }).on("end", () => { + const { ret } = this; + ret.push(null); + }).on("close", () => { + const { ret } = this; + if (!ret._readableState.ended) { + util.destroy(ret, new RequestAbortedError()); + } + }); + this.body = body; + } + onData(chunk) { + const { res } = this; + return res.push(chunk); + } + onComplete(trailers) { + const { res } = this; + res.push(null); + } + onError(err) { + const { ret } = this; + this.handler = null; + util.destroy(ret, err); + } + }; + function pipeline(opts, handler) { + try { + const pipelineHandler = new PipelineHandler(opts, handler); + this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler); + return pipelineHandler.ret; + } catch (err) { + return new PassThrough().destroy(err); + } + } + module2.exports = pipeline; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-upgrade.js +var require_api_upgrade = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-upgrade.js"(exports, module2) { + "use strict"; + var { InvalidArgumentError, RequestAbortedError, SocketError } = require_errors(); + var { AsyncResource } = require("async_hooks"); + var util = require_util(); + var { addSignal, removeSignal } = require_abort_signal(); + var assert = require("assert"); + var UpgradeHandler = class extends AsyncResource { + constructor(opts, callback) { + if (!opts || typeof opts !== "object") { + throw new InvalidArgumentError("invalid opts"); + } + if (typeof callback !== "function") { + throw new InvalidArgumentError("invalid callback"); + } + const { signal, opaque, responseHeaders } = opts; + if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") { + throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); + } + super("UNDICI_UPGRADE"); + this.responseHeaders = responseHeaders || null; + this.opaque = opaque || null; + this.callback = callback; + this.abort = null; + this.context = null; + addSignal(this, signal); + } + onConnect(abort, context) { + if (!this.callback) { + throw new RequestAbortedError(); + } + this.abort = abort; + this.context = null; + } + onHeaders() { + throw new SocketError("bad upgrade", null); + } + onUpgrade(statusCode, rawHeaders, socket) { + const { callback, opaque, context } = this; + assert.strictEqual(statusCode, 101); + removeSignal(this); + this.callback = null; + const headers = this.responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + this.runInAsyncScope(callback, null, null, { + headers, + socket, + opaque, + context + }); + } + onError(err) { + const { callback, opaque } = this; + removeSignal(this); + if (callback) { + this.callback = null; + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }); + }); + } + } + }; + function upgrade(opts, callback) { + if (callback === void 0) { + return new Promise((resolve, reject) => { + upgrade.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data); + }); + }); + } + try { + const upgradeHandler = new UpgradeHandler(opts, callback); + this.dispatch({ + ...opts, + method: opts.method || "GET", + upgrade: opts.protocol || "Websocket" + }, upgradeHandler); + } catch (err) { + if (typeof callback !== "function") { + throw err; + } + const opaque = opts && opts.opaque; + queueMicrotask(() => callback(err, { opaque })); + } + } + module2.exports = upgrade; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-connect.js +var require_api_connect = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-connect.js"(exports, module2) { + "use strict"; + var { AsyncResource } = require("async_hooks"); + var { InvalidArgumentError, RequestAbortedError, SocketError } = require_errors(); + var util = require_util(); + var { addSignal, removeSignal } = require_abort_signal(); + var ConnectHandler = class extends AsyncResource { + constructor(opts, callback) { + if (!opts || typeof opts !== "object") { + throw new InvalidArgumentError("invalid opts"); + } + if (typeof callback !== "function") { + throw new InvalidArgumentError("invalid callback"); + } + const { signal, opaque, responseHeaders } = opts; + if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") { + throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); + } + super("UNDICI_CONNECT"); + this.opaque = opaque || null; + this.responseHeaders = responseHeaders || null; + this.callback = callback; + this.abort = null; + addSignal(this, signal); + } + onConnect(abort, context) { + if (!this.callback) { + throw new RequestAbortedError(); + } + this.abort = abort; + this.context = context; + } + onHeaders() { + throw new SocketError("bad connect", null); + } + onUpgrade(statusCode, rawHeaders, socket) { + const { callback, opaque, context } = this; + removeSignal(this); + this.callback = null; + let headers = rawHeaders; + if (headers != null) { + headers = this.responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + } + this.runInAsyncScope(callback, null, null, { + statusCode, + headers, + socket, + opaque, + context + }); + } + onError(err) { + const { callback, opaque } = this; + removeSignal(this); + if (callback) { + this.callback = null; + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }); + }); + } + } + }; + function connect(opts, callback) { + if (callback === void 0) { + return new Promise((resolve, reject) => { + connect.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data); + }); + }); + } + try { + const connectHandler = new ConnectHandler(opts, callback); + this.dispatch({ ...opts, method: "CONNECT" }, connectHandler); + } catch (err) { + if (typeof callback !== "function") { + throw err; + } + const opaque = opts && opts.opaque; + queueMicrotask(() => callback(err, { opaque })); + } + } + module2.exports = connect; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/index.js +var require_api = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/index.js"(exports, module2) { + "use strict"; + module2.exports.request = require_api_request(); + module2.exports.stream = require_api_stream(); + module2.exports.pipeline = require_api_pipeline(); + module2.exports.upgrade = require_api_upgrade(); + module2.exports.connect = require_api_connect(); + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-errors.js +var require_mock_errors = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-errors.js"(exports, module2) { + "use strict"; + var { UndiciError } = require_errors(); + var MockNotMatchedError = class _MockNotMatchedError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _MockNotMatchedError); + this.name = "MockNotMatchedError"; + this.message = message || "The request does not match any registered mock dispatches"; + this.code = "UND_MOCK_ERR_MOCK_NOT_MATCHED"; + } + }; + module2.exports = { + MockNotMatchedError + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-symbols.js +var require_mock_symbols = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-symbols.js"(exports, module2) { + "use strict"; + module2.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") + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-utils.js +var require_mock_utils = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-utils.js"(exports, module2) { + "use strict"; + var { MockNotMatchedError } = require_mock_errors(); + var { + kDispatches, + kMockAgent, + kOriginalDispatch, + kOrigin, + kGetNetConnect + } = require_mock_symbols(); + var { buildURL, nop } = require_util(); + var { STATUS_CODES } = require("http"); + var { + types: { + isPromise + } + } = require("util"); + function matchValue(match, value) { + if (typeof match === "string") { + return match === value; + } + if (match instanceof RegExp) { + return match.test(value); + } + if (typeof match === "function") { + return match(value) === true; + } + return false; + } + function lowerCaseEntries(headers) { + return Object.fromEntries( + Object.entries(headers).map(([headerName, headerValue]) => { + return [headerName.toLocaleLowerCase(), headerValue]; + }) + ); + } + function getHeaderByName(headers, key) { + if (Array.isArray(headers)) { + for (let i = 0; i < headers.length; i += 2) { + if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) { + return headers[i + 1]; + } + } + return void 0; + } else if (typeof headers.get === "function") { + return headers.get(key); + } else { + return lowerCaseEntries(headers)[key.toLocaleLowerCase()]; + } + } + function buildHeadersFromArray(headers) { + const clone = headers.slice(); + const entries = []; + for (let index = 0; index < clone.length; index += 2) { + entries.push([clone[index], clone[index + 1]]); + } + return Object.fromEntries(entries); + } + function matchHeaders(mockDispatch2, headers) { + if (typeof mockDispatch2.headers === "function") { + if (Array.isArray(headers)) { + headers = buildHeadersFromArray(headers); + } + return mockDispatch2.headers(headers ? lowerCaseEntries(headers) : {}); + } + if (typeof mockDispatch2.headers === "undefined") { + return true; + } + if (typeof headers !== "object" || typeof mockDispatch2.headers !== "object") { + return false; + } + for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch2.headers)) { + const headerValue = getHeaderByName(headers, matchHeaderName); + if (!matchValue(matchHeaderValue, headerValue)) { + return false; + } + } + return true; + } + function safeUrl(path) { + if (typeof path !== "string") { + return path; + } + const pathSegments = path.split("?"); + if (pathSegments.length !== 2) { + return path; + } + const qp = new URLSearchParams(pathSegments.pop()); + qp.sort(); + return [...pathSegments, qp.toString()].join("?"); + } + function matchKey(mockDispatch2, { path, method, body, headers }) { + const pathMatch = matchValue(mockDispatch2.path, path); + const methodMatch = matchValue(mockDispatch2.method, method); + const bodyMatch = typeof mockDispatch2.body !== "undefined" ? matchValue(mockDispatch2.body, body) : true; + const headersMatch = matchHeaders(mockDispatch2, headers); + return pathMatch && methodMatch && bodyMatch && headersMatch; + } + function getResponseData(data) { + if (Buffer.isBuffer(data)) { + return data; + } else if (typeof data === "object") { + return JSON.stringify(data); + } else { + return data.toString(); + } + } + function getMockDispatch(mockDispatches, key) { + const basePath = key.query ? buildURL(key.path, key.query) : key.path; + const resolvedPath = typeof basePath === "string" ? safeUrl(basePath) : basePath; + let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path }) => matchValue(safeUrl(path), resolvedPath)); + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`); + } + matchedMockDispatches = matchedMockDispatches.filter(({ method }) => matchValue(method, key.method)); + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}'`); + } + matchedMockDispatches = matchedMockDispatches.filter(({ body }) => typeof body !== "undefined" ? matchValue(body, key.body) : true); + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}'`); + } + matchedMockDispatches = matchedMockDispatches.filter((mockDispatch2) => matchHeaders(mockDispatch2, key.headers)); + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for headers '${typeof key.headers === "object" ? JSON.stringify(key.headers) : key.headers}'`); + } + return matchedMockDispatches[0]; + } + function addMockDispatch(mockDispatches, key, data) { + const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false }; + const replyData = typeof data === "function" ? { callback: data } : { ...data }; + const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } }; + mockDispatches.push(newMockDispatch); + return newMockDispatch; + } + function deleteMockDispatch(mockDispatches, key) { + const index = mockDispatches.findIndex((dispatch) => { + if (!dispatch.consumed) { + return false; + } + return matchKey(dispatch, key); + }); + if (index !== -1) { + mockDispatches.splice(index, 1); + } + } + function buildKey(opts) { + const { path, method, body, headers, query } = opts; + return { + path, + method, + body, + headers, + query + }; + } + function generateKeyValues(data) { + return Object.entries(data).reduce((keyValuePairs, [key, value]) => [ + ...keyValuePairs, + Buffer.from(`${key}`), + Array.isArray(value) ? value.map((x) => Buffer.from(`${x}`)) : Buffer.from(`${value}`) + ], []); + } + function getStatusText(statusCode) { + return STATUS_CODES[statusCode] || "unknown"; + } + async function getResponse(body) { + const buffers = []; + for await (const data of body) { + buffers.push(data); + } + return Buffer.concat(buffers).toString("utf8"); + } + function mockDispatch(opts, handler) { + const key = buildKey(opts); + const mockDispatch2 = getMockDispatch(this[kDispatches], key); + mockDispatch2.timesInvoked++; + if (mockDispatch2.data.callback) { + mockDispatch2.data = { ...mockDispatch2.data, ...mockDispatch2.data.callback(opts) }; + } + const { data: { statusCode, data, headers, trailers, error }, delay, persist } = mockDispatch2; + const { timesInvoked, times } = mockDispatch2; + mockDispatch2.consumed = !persist && timesInvoked >= times; + mockDispatch2.pending = timesInvoked < times; + if (error !== null) { + deleteMockDispatch(this[kDispatches], key); + handler.onError(error); + return true; + } + if (typeof delay === "number" && delay > 0) { + setTimeout(() => { + handleReply(this[kDispatches]); + }, delay); + } else { + handleReply(this[kDispatches]); + } + function handleReply(mockDispatches, _data = data) { + const optsHeaders = Array.isArray(opts.headers) ? buildHeadersFromArray(opts.headers) : opts.headers; + const body = typeof _data === "function" ? _data({ ...opts, headers: optsHeaders }) : _data; + if (isPromise(body)) { + body.then((newData) => handleReply(mockDispatches, newData)); + return; + } + const responseData = getResponseData(body); + const responseHeaders = generateKeyValues(headers); + const responseTrailers = generateKeyValues(trailers); + handler.abort = nop; + handler.onHeaders(statusCode, responseHeaders, resume, getStatusText(statusCode)); + handler.onData(Buffer.from(responseData)); + handler.onComplete(responseTrailers); + deleteMockDispatch(mockDispatches, key); + } + function resume() { + } + return true; + } + function buildMockDispatch() { + const agent = this[kMockAgent]; + const origin = this[kOrigin]; + const originalDispatch = this[kOriginalDispatch]; + return function dispatch(opts, handler) { + if (agent.isMockActive) { + try { + mockDispatch.call(this, opts, handler); + } catch (error) { + if (error instanceof MockNotMatchedError) { + const netConnect = agent[kGetNetConnect](); + if (netConnect === false) { + throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`); + } + if (checkNetConnect(netConnect, origin)) { + originalDispatch.call(this, opts, handler); + } else { + throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)`); + } + } else { + throw error; + } + } + } else { + originalDispatch.call(this, opts, handler); + } + }; + } + function checkNetConnect(netConnect, origin) { + const url = new URL(origin); + if (netConnect === true) { + return true; + } else if (Array.isArray(netConnect) && netConnect.some((matcher) => matchValue(matcher, url.host))) { + return true; + } + return false; + } + function buildMockOptions(opts) { + if (opts) { + const { agent, ...mockOptions } = opts; + return mockOptions; + } + } + module2.exports = { + getResponseData, + getMockDispatch, + addMockDispatch, + deleteMockDispatch, + buildKey, + generateKeyValues, + matchValue, + getResponse, + getStatusText, + mockDispatch, + buildMockDispatch, + checkNetConnect, + buildMockOptions, + getHeaderByName + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-interceptor.js +var require_mock_interceptor = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-interceptor.js"(exports, module2) { + "use strict"; + var { getResponseData, buildKey, addMockDispatch } = require_mock_utils(); + var { + kDispatches, + kDispatchKey, + kDefaultHeaders, + kDefaultTrailers, + kContentLength, + kMockDispatch + } = require_mock_symbols(); + var { InvalidArgumentError } = require_errors(); + var { buildURL } = require_util(); + var MockScope = class { + constructor(mockDispatch) { + this[kMockDispatch] = mockDispatch; + } + /** + * Delay a reply by a set amount in ms. + */ + delay(waitInMs) { + if (typeof waitInMs !== "number" || !Number.isInteger(waitInMs) || waitInMs <= 0) { + throw new InvalidArgumentError("waitInMs must be a valid integer > 0"); + } + this[kMockDispatch].delay = waitInMs; + return this; + } + /** + * For a defined reply, never mark as consumed. + */ + persist() { + this[kMockDispatch].persist = true; + return this; + } + /** + * Allow one to define a reply for a set amount of matching requests. + */ + times(repeatTimes) { + if (typeof repeatTimes !== "number" || !Number.isInteger(repeatTimes) || repeatTimes <= 0) { + throw new InvalidArgumentError("repeatTimes must be a valid integer > 0"); + } + this[kMockDispatch].times = repeatTimes; + return this; + } + }; + var MockInterceptor = class { + constructor(opts, mockDispatches) { + if (typeof opts !== "object") { + throw new InvalidArgumentError("opts must be an object"); + } + if (typeof opts.path === "undefined") { + throw new InvalidArgumentError("opts.path must be defined"); + } + if (typeof opts.method === "undefined") { + opts.method = "GET"; + } + if (typeof opts.path === "string") { + if (opts.query) { + opts.path = buildURL(opts.path, opts.query); + } else { + const parsedURL = new URL(opts.path, "data://"); + opts.path = parsedURL.pathname + parsedURL.search; + } + } + if (typeof opts.method === "string") { + opts.method = opts.method.toUpperCase(); + } + this[kDispatchKey] = buildKey(opts); + this[kDispatches] = mockDispatches; + this[kDefaultHeaders] = {}; + this[kDefaultTrailers] = {}; + this[kContentLength] = false; + } + createMockScopeDispatchData(statusCode, data, responseOptions = {}) { + const responseData = getResponseData(data); + const contentLength = this[kContentLength] ? { "content-length": responseData.length } : {}; + const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers }; + const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers }; + return { statusCode, data, headers, trailers }; + } + validateReplyParameters(statusCode, data, responseOptions) { + if (typeof statusCode === "undefined") { + throw new InvalidArgumentError("statusCode must be defined"); + } + if (typeof data === "undefined") { + throw new InvalidArgumentError("data must be defined"); + } + if (typeof responseOptions !== "object") { + throw new InvalidArgumentError("responseOptions must be an object"); + } + } + /** + * Mock an undici request with a defined reply. + */ + reply(replyData) { + if (typeof replyData === "function") { + const wrappedDefaultsCallback = (opts) => { + const resolvedData = replyData(opts); + if (typeof resolvedData !== "object") { + throw new InvalidArgumentError("reply options callback must return an object"); + } + const { statusCode: statusCode2, data: data2 = "", responseOptions: responseOptions2 = {} } = resolvedData; + this.validateReplyParameters(statusCode2, data2, responseOptions2); + return { + ...this.createMockScopeDispatchData(statusCode2, data2, responseOptions2) + }; + }; + const newMockDispatch2 = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback); + return new MockScope(newMockDispatch2); + } + const [statusCode, data = "", responseOptions = {}] = [...arguments]; + this.validateReplyParameters(statusCode, data, responseOptions); + const dispatchData = this.createMockScopeDispatchData(statusCode, data, responseOptions); + const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], dispatchData); + return new MockScope(newMockDispatch); + } + /** + * Mock an undici request with a defined error. + */ + replyWithError(error) { + if (typeof error === "undefined") { + throw new InvalidArgumentError("error must be defined"); + } + const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error }); + return new MockScope(newMockDispatch); + } + /** + * Set default reply headers on the interceptor for subsequent replies + */ + defaultReplyHeaders(headers) { + if (typeof headers === "undefined") { + throw new InvalidArgumentError("headers must be defined"); + } + this[kDefaultHeaders] = headers; + return this; + } + /** + * Set default reply trailers on the interceptor for subsequent replies + */ + defaultReplyTrailers(trailers) { + if (typeof trailers === "undefined") { + throw new InvalidArgumentError("trailers must be defined"); + } + this[kDefaultTrailers] = trailers; + return this; + } + /** + * Set reply content length header for replies on the interceptor + */ + replyContentLength() { + this[kContentLength] = true; + return this; + } + }; + module2.exports.MockInterceptor = MockInterceptor; + module2.exports.MockScope = MockScope; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-client.js +var require_mock_client = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-client.js"(exports, module2) { + "use strict"; + var { promisify } = require("util"); + var Client = require_client(); + var { buildMockDispatch } = require_mock_utils(); + var { + kDispatches, + kMockAgent, + kClose, + kOriginalClose, + kOrigin, + kOriginalDispatch, + kConnected + } = require_mock_symbols(); + var { MockInterceptor } = require_mock_interceptor(); + var Symbols = require_symbols(); + var { InvalidArgumentError } = require_errors(); + var MockClient = class extends Client { + constructor(origin, opts) { + super(origin, opts); + if (!opts || !opts.agent || typeof opts.agent.dispatch !== "function") { + throw new InvalidArgumentError("Argument opts.agent must implement Agent"); + } + this[kMockAgent] = opts.agent; + this[kOrigin] = origin; + this[kDispatches] = []; + this[kConnected] = 1; + this[kOriginalDispatch] = this.dispatch; + this[kOriginalClose] = this.close.bind(this); + this.dispatch = buildMockDispatch.call(this); + this.close = this[kClose]; + } + get [Symbols.kConnected]() { + return this[kConnected]; + } + /** + * Sets up the base interceptor for mocking replies from undici. + */ + intercept(opts) { + return new MockInterceptor(opts, this[kDispatches]); + } + async [kClose]() { + await promisify(this[kOriginalClose])(); + this[kConnected] = 0; + this[kMockAgent][Symbols.kClients].delete(this[kOrigin]); + } + }; + module2.exports = MockClient; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-pool.js +var require_mock_pool = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-pool.js"(exports, module2) { + "use strict"; + var { promisify } = require("util"); + var Pool = require_pool(); + var { buildMockDispatch } = require_mock_utils(); + var { + kDispatches, + kMockAgent, + kClose, + kOriginalClose, + kOrigin, + kOriginalDispatch, + kConnected + } = require_mock_symbols(); + var { MockInterceptor } = require_mock_interceptor(); + var Symbols = require_symbols(); + var { InvalidArgumentError } = require_errors(); + var MockPool = class extends Pool { + constructor(origin, opts) { + super(origin, opts); + if (!opts || !opts.agent || typeof opts.agent.dispatch !== "function") { + throw new InvalidArgumentError("Argument opts.agent must implement Agent"); + } + this[kMockAgent] = opts.agent; + this[kOrigin] = origin; + this[kDispatches] = []; + this[kConnected] = 1; + this[kOriginalDispatch] = this.dispatch; + this[kOriginalClose] = this.close.bind(this); + this.dispatch = buildMockDispatch.call(this); + this.close = this[kClose]; + } + get [Symbols.kConnected]() { + return this[kConnected]; + } + /** + * Sets up the base interceptor for mocking replies from undici. + */ + intercept(opts) { + return new MockInterceptor(opts, this[kDispatches]); + } + async [kClose]() { + await promisify(this[kOriginalClose])(); + this[kConnected] = 0; + this[kMockAgent][Symbols.kClients].delete(this[kOrigin]); + } + }; + module2.exports = MockPool; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/pluralizer.js +var require_pluralizer = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/pluralizer.js"(exports, module2) { + "use strict"; + var singulars = { + pronoun: "it", + is: "is", + was: "was", + this: "this" + }; + var plurals = { + pronoun: "they", + is: "are", + was: "were", + this: "these" + }; + module2.exports = class Pluralizer { + constructor(singular, plural) { + this.singular = singular; + this.plural = plural; + } + pluralize(count) { + const one = count === 1; + const keys = one ? singulars : plurals; + const noun = one ? this.singular : this.plural; + return { ...keys, count, noun }; + } + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/pending-interceptors-formatter.js +var require_pending_interceptors_formatter = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/pending-interceptors-formatter.js"(exports, module2) { + "use strict"; + var { Transform } = require("stream"); + var { Console } = require("console"); + module2.exports = class PendingInterceptorsFormatter { + constructor({ disableColors } = {}) { + this.transform = new Transform({ + transform(chunk, _enc, cb) { + cb(null, chunk); + } + }); + this.logger = new Console({ + stdout: this.transform, + inspectOptions: { + colors: !disableColors && !process.env.CI + } + }); + } + format(pendingInterceptors) { + const withPrettyHeaders = pendingInterceptors.map( + ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({ + Method: method, + Origin: origin, + Path: path, + "Status code": statusCode, + Persistent: persist ? "\u2705" : "\u274C", + Invocations: timesInvoked, + Remaining: persist ? Infinity : times - timesInvoked + }) + ); + this.logger.table(withPrettyHeaders); + return this.transform.read().toString(); + } + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-agent.js +var require_mock_agent = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-agent.js"(exports, module2) { + "use strict"; + var { kClients } = require_symbols(); + var Agent = require_agent(); + var { + kAgent, + kMockAgentSet, + kMockAgentGet, + kDispatches, + kIsMockActive, + kNetConnect, + kGetNetConnect, + kOptions, + kFactory + } = require_mock_symbols(); + var MockClient = require_mock_client(); + var MockPool = require_mock_pool(); + var { matchValue, buildMockOptions } = require_mock_utils(); + var { InvalidArgumentError, UndiciError } = require_errors(); + var Dispatcher = require_dispatcher(); + var Pluralizer = require_pluralizer(); + var PendingInterceptorsFormatter = require_pending_interceptors_formatter(); + var FakeWeakRef = class { + constructor(value) { + this.value = value; + } + deref() { + return this.value; + } + }; + var MockAgent = class extends Dispatcher { + constructor(opts) { + super(opts); + this[kNetConnect] = true; + this[kIsMockActive] = true; + if (opts && opts.agent && typeof opts.agent.dispatch !== "function") { + throw new InvalidArgumentError("Argument opts.agent must implement Agent"); + } + const agent = opts && opts.agent ? opts.agent : new Agent(opts); + this[kAgent] = agent; + this[kClients] = agent[kClients]; + this[kOptions] = buildMockOptions(opts); + } + get(origin) { + let dispatcher = this[kMockAgentGet](origin); + if (!dispatcher) { + dispatcher = this[kFactory](origin); + this[kMockAgentSet](origin, dispatcher); + } + return dispatcher; + } + dispatch(opts, handler) { + this.get(opts.origin); + return this[kAgent].dispatch(opts, handler); + } + async close() { + await this[kAgent].close(); + this[kClients].clear(); + } + deactivate() { + this[kIsMockActive] = false; + } + activate() { + this[kIsMockActive] = true; + } + enableNetConnect(matcher) { + if (typeof matcher === "string" || typeof matcher === "function" || matcher instanceof RegExp) { + if (Array.isArray(this[kNetConnect])) { + this[kNetConnect].push(matcher); + } else { + this[kNetConnect] = [matcher]; + } + } else if (typeof matcher === "undefined") { + this[kNetConnect] = true; + } else { + throw new InvalidArgumentError("Unsupported matcher. Must be one of String|Function|RegExp."); + } + } + disableNetConnect() { + this[kNetConnect] = false; + } + // This is required to bypass issues caused by using global symbols - see: + // https://github.com/nodejs/undici/issues/1447 + get isMockActive() { + return this[kIsMockActive]; + } + [kMockAgentSet](origin, dispatcher) { + this[kClients].set(origin, new FakeWeakRef(dispatcher)); + } + [kFactory](origin) { + const mockOptions = Object.assign({ agent: this }, this[kOptions]); + return this[kOptions] && this[kOptions].connections === 1 ? new MockClient(origin, mockOptions) : new MockPool(origin, mockOptions); + } + [kMockAgentGet](origin) { + const ref = this[kClients].get(origin); + if (ref) { + return ref.deref(); + } + if (typeof origin !== "string") { + const dispatcher = this[kFactory]("http://localhost:9999"); + this[kMockAgentSet](origin, dispatcher); + return dispatcher; + } + for (const [keyMatcher, nonExplicitRef] of Array.from(this[kClients])) { + const nonExplicitDispatcher = nonExplicitRef.deref(); + if (nonExplicitDispatcher && typeof keyMatcher !== "string" && matchValue(keyMatcher, origin)) { + const dispatcher = this[kFactory](origin); + this[kMockAgentSet](origin, dispatcher); + dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches]; + return dispatcher; + } + } + } + [kGetNetConnect]() { + return this[kNetConnect]; + } + pendingInterceptors() { + const mockAgentClients = this[kClients]; + return Array.from(mockAgentClients.entries()).flatMap(([origin, scope]) => scope.deref()[kDispatches].map((dispatch) => ({ ...dispatch, origin }))).filter(({ pending }) => pending); + } + assertNoPendingInterceptors({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) { + const pending = this.pendingInterceptors(); + if (pending.length === 0) { + return; + } + const pluralizer = new Pluralizer("interceptor", "interceptors").pluralize(pending.length); + throw new UndiciError(` +${pluralizer.count} ${pluralizer.noun} ${pluralizer.is} pending: + +${pendingInterceptorsFormatter.format(pending)} +`.trim()); + } + }; + module2.exports = MockAgent; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/proxy-agent.js +var require_proxy_agent = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/proxy-agent.js"(exports, module2) { + "use strict"; + var { kProxy, kClose, kDestroy, kInterceptors } = require_symbols(); + var { URL: URL2 } = require("url"); + var Agent = require_agent(); + var Pool = require_pool(); + var DispatcherBase = require_dispatcher_base(); + var { InvalidArgumentError, RequestAbortedError } = require_errors(); + var buildConnector = require_connect(); + var kAgent = Symbol("proxy agent"); + var kClient = Symbol("proxy client"); + var kProxyHeaders = Symbol("proxy headers"); + var kRequestTls = Symbol("request tls settings"); + var kProxyTls = Symbol("proxy tls settings"); + var kConnectEndpoint = Symbol("connect endpoint function"); + function defaultProtocolPort(protocol) { + return protocol === "https:" ? 443 : 80; + } + function buildProxyOptions(opts) { + if (typeof opts === "string") { + opts = { uri: opts }; + } + if (!opts || !opts.uri) { + throw new InvalidArgumentError("Proxy opts.uri is mandatory"); + } + return { + uri: opts.uri, + protocol: opts.protocol || "https" + }; + } + function defaultFactory(origin, opts) { + return new Pool(origin, opts); + } + var ProxyAgent = class extends DispatcherBase { + constructor(opts) { + super(opts); + this[kProxy] = buildProxyOptions(opts); + this[kAgent] = new Agent(opts); + this[kInterceptors] = opts.interceptors && opts.interceptors.ProxyAgent && Array.isArray(opts.interceptors.ProxyAgent) ? opts.interceptors.ProxyAgent : []; + if (typeof opts === "string") { + opts = { uri: opts }; + } + if (!opts || !opts.uri) { + throw new InvalidArgumentError("Proxy opts.uri is mandatory"); + } + const { clientFactory = defaultFactory } = opts; + if (typeof clientFactory !== "function") { + throw new InvalidArgumentError("Proxy opts.clientFactory must be a function."); + } + this[kRequestTls] = opts.requestTls; + this[kProxyTls] = opts.proxyTls; + this[kProxyHeaders] = opts.headers || {}; + if (opts.auth && opts.token) { + throw new InvalidArgumentError("opts.auth cannot be used in combination with opts.token"); + } else if (opts.auth) { + this[kProxyHeaders]["proxy-authorization"] = `Basic ${opts.auth}`; + } else if (opts.token) { + this[kProxyHeaders]["proxy-authorization"] = opts.token; + } + const resolvedUrl = new URL2(opts.uri); + const { origin, port, host } = resolvedUrl; + const connect = buildConnector({ ...opts.proxyTls }); + this[kConnectEndpoint] = buildConnector({ ...opts.requestTls }); + this[kClient] = clientFactory(resolvedUrl, { connect }); + this[kAgent] = new Agent({ + ...opts, + connect: async (opts2, callback) => { + let requestedHost = opts2.host; + if (!opts2.port) { + requestedHost += `:${defaultProtocolPort(opts2.protocol)}`; + } + try { + const { socket, statusCode } = await this[kClient].connect({ + origin, + port, + path: requestedHost, + signal: opts2.signal, + headers: { + ...this[kProxyHeaders], + host + } + }); + if (statusCode !== 200) { + socket.on("error", () => { + }).destroy(); + callback(new RequestAbortedError("Proxy response !== 200 when HTTP Tunneling")); + } + if (opts2.protocol !== "https:") { + callback(null, socket); + return; + } + let servername; + if (this[kRequestTls]) { + servername = this[kRequestTls].servername; + } else { + servername = opts2.servername; + } + this[kConnectEndpoint]({ ...opts2, servername, httpSocket: socket }, callback); + } catch (err) { + callback(err); + } + } + }); + } + dispatch(opts, handler) { + const { host } = new URL2(opts.origin); + const headers = buildHeaders(opts.headers); + throwIfProxyAuthIsSent(headers); + return this[kAgent].dispatch( + { + ...opts, + headers: { + ...headers, + host + } + }, + handler + ); + } + async [kClose]() { + await this[kAgent].close(); + await this[kClient].close(); + } + async [kDestroy]() { + await this[kAgent].destroy(); + await this[kClient].destroy(); + } + }; + function buildHeaders(headers) { + if (Array.isArray(headers)) { + const headersPair = {}; + for (let i = 0; i < headers.length; i += 2) { + headersPair[headers[i]] = headers[i + 1]; + } + return headersPair; + } + return headers; + } + function throwIfProxyAuthIsSent(headers) { + const existProxyAuth = headers && Object.keys(headers).find((key) => key.toLowerCase() === "proxy-authorization"); + if (existProxyAuth) { + throw new InvalidArgumentError("Proxy-Authorization should be sent in ProxyAgent constructor"); + } + } + module2.exports = ProxyAgent; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/global.js +var require_global2 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/global.js"(exports, module2) { + "use strict"; + var globalDispatcher = Symbol.for("undici.globalDispatcher.1"); + var { InvalidArgumentError } = require_errors(); + var Agent = require_agent(); + if (getGlobalDispatcher() === void 0) { + setGlobalDispatcher(new Agent()); + } + function setGlobalDispatcher(agent) { + if (!agent || typeof agent.dispatch !== "function") { + throw new InvalidArgumentError("Argument agent must implement Agent"); + } + Object.defineProperty(globalThis, globalDispatcher, { + value: agent, + writable: true, + enumerable: false, + configurable: false + }); + } + function getGlobalDispatcher() { + return globalThis[globalDispatcher]; + } + module2.exports = { + setGlobalDispatcher, + getGlobalDispatcher + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/handler/DecoratorHandler.js +var require_DecoratorHandler = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/handler/DecoratorHandler.js"(exports, module2) { + "use strict"; + module2.exports = class DecoratorHandler { + constructor(handler) { + this.handler = handler; + } + onConnect(...args) { + return this.handler.onConnect(...args); + } + onError(...args) { + return this.handler.onError(...args); + } + onUpgrade(...args) { + return this.handler.onUpgrade(...args); + } + onHeaders(...args) { + return this.handler.onHeaders(...args); + } + onData(...args) { + return this.handler.onData(...args); + } + onComplete(...args) { + return this.handler.onComplete(...args); + } + onBodySent(...args) { + return this.handler.onBodySent(...args); + } + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/headers.js +var require_headers = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/headers.js"(exports, module2) { + "use strict"; + var { kHeadersList } = require_symbols(); + var { kGuard } = require_symbols2(); + var { kEnumerableProperty } = require_util(); + var { + makeIterator, + isValidHeaderName, + isValidHeaderValue + } = require_util2(); + var { webidl } = require_webidl(); + var assert = require("assert"); + var kHeadersMap = Symbol("headers map"); + var kHeadersSortedMap = Symbol("headers map sorted"); + function headerValueNormalize(potentialValue) { + let i = potentialValue.length; + while (/[\r\n\t ]/.test(potentialValue.charAt(--i))) + ; + return potentialValue.slice(0, i + 1).replace(/^[\r\n\t ]+/, ""); + } + function fill(headers, object) { + if (Array.isArray(object)) { + for (const header of object) { + if (header.length !== 2) { + throw webidl.errors.exception({ + header: "Headers constructor", + message: `expected name/value pair to be length 2, found ${header.length}.` + }); + } + headers.append(header[0], header[1]); + } + } else if (typeof object === "object" && object !== null) { + for (const [key, value] of Object.entries(object)) { + headers.append(key, value); + } + } else { + throw webidl.errors.conversionFailed({ + prefix: "Headers constructor", + argument: "Argument 1", + types: ["sequence>", "record"] + }); + } + } + var HeadersList = class _HeadersList { + /** @type {[string, string][]|null} */ + cookies = null; + constructor(init) { + if (init instanceof _HeadersList) { + this[kHeadersMap] = new Map(init[kHeadersMap]); + this[kHeadersSortedMap] = init[kHeadersSortedMap]; + this.cookies = init.cookies; + } else { + this[kHeadersMap] = new Map(init); + this[kHeadersSortedMap] = null; + } + } + // https://fetch.spec.whatwg.org/#header-list-contains + contains(name) { + name = name.toLowerCase(); + return this[kHeadersMap].has(name); + } + clear() { + this[kHeadersMap].clear(); + this[kHeadersSortedMap] = null; + this.cookies = null; + } + // https://fetch.spec.whatwg.org/#concept-header-list-append + append(name, value) { + this[kHeadersSortedMap] = null; + const lowercaseName = name.toLowerCase(); + const exists = this[kHeadersMap].get(lowercaseName); + if (exists) { + const delimiter = lowercaseName === "cookie" ? "; " : ", "; + this[kHeadersMap].set(lowercaseName, { + name: exists.name, + value: `${exists.value}${delimiter}${value}` + }); + } else { + this[kHeadersMap].set(lowercaseName, { name, value }); + } + if (lowercaseName === "set-cookie") { + this.cookies ?? (this.cookies = []); + this.cookies.push(value); + } + } + // https://fetch.spec.whatwg.org/#concept-header-list-set + set(name, value) { + this[kHeadersSortedMap] = null; + const lowercaseName = name.toLowerCase(); + if (lowercaseName === "set-cookie") { + this.cookies = [value]; + } + return this[kHeadersMap].set(lowercaseName, { name, value }); + } + // https://fetch.spec.whatwg.org/#concept-header-list-delete + delete(name) { + this[kHeadersSortedMap] = null; + name = name.toLowerCase(); + if (name === "set-cookie") { + this.cookies = null; + } + return this[kHeadersMap].delete(name); + } + // https://fetch.spec.whatwg.org/#concept-header-list-get + get(name) { + var _a; + if (!this.contains(name)) { + return null; + } + return ((_a = this[kHeadersMap].get(name.toLowerCase())) == null ? void 0 : _a.value) ?? null; + } + *[Symbol.iterator]() { + for (const [name, { value }] of this[kHeadersMap]) { + yield [name, value]; + } + } + get entries() { + const headers = {}; + if (this[kHeadersMap].size) { + for (const { name, value } of this[kHeadersMap].values()) { + headers[name] = value; + } + } + return headers; + } + }; + var Headers = class _Headers { + constructor(init = void 0) { + this[kHeadersList] = new HeadersList(); + this[kGuard] = "none"; + if (init !== void 0) { + init = webidl.converters.HeadersInit(init); + fill(this, init); + } + } + // https://fetch.spec.whatwg.org/#dom-headers-append + append(name, value) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 2, { header: "Headers.append" }); + name = webidl.converters.ByteString(name); + value = webidl.converters.ByteString(value); + value = headerValueNormalize(value); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: "Headers.append", + value: name, + type: "header name" + }); + } else if (!isValidHeaderValue(value)) { + throw webidl.errors.invalidArgument({ + prefix: "Headers.append", + value, + type: "header value" + }); + } + if (this[kGuard] === "immutable") { + throw new TypeError("immutable"); + } else if (this[kGuard] === "request-no-cors") { + } + return this[kHeadersList].append(name, value); + } + // https://fetch.spec.whatwg.org/#dom-headers-delete + delete(name) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 1, { header: "Headers.delete" }); + name = webidl.converters.ByteString(name); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: "Headers.delete", + value: name, + type: "header name" + }); + } + if (this[kGuard] === "immutable") { + throw new TypeError("immutable"); + } else if (this[kGuard] === "request-no-cors") { + } + if (!this[kHeadersList].contains(name)) { + return; + } + return this[kHeadersList].delete(name); + } + // https://fetch.spec.whatwg.org/#dom-headers-get + get(name) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 1, { header: "Headers.get" }); + name = webidl.converters.ByteString(name); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: "Headers.get", + value: name, + type: "header name" + }); + } + return this[kHeadersList].get(name); + } + // https://fetch.spec.whatwg.org/#dom-headers-has + has(name) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 1, { header: "Headers.has" }); + name = webidl.converters.ByteString(name); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: "Headers.has", + value: name, + type: "header name" + }); + } + return this[kHeadersList].contains(name); + } + // https://fetch.spec.whatwg.org/#dom-headers-set + set(name, value) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 2, { header: "Headers.set" }); + name = webidl.converters.ByteString(name); + value = webidl.converters.ByteString(value); + value = headerValueNormalize(value); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: "Headers.set", + value: name, + type: "header name" + }); + } else if (!isValidHeaderValue(value)) { + throw webidl.errors.invalidArgument({ + prefix: "Headers.set", + value, + type: "header value" + }); + } + if (this[kGuard] === "immutable") { + throw new TypeError("immutable"); + } else if (this[kGuard] === "request-no-cors") { + } + return this[kHeadersList].set(name, value); + } + // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie + getSetCookie() { + webidl.brandCheck(this, _Headers); + const list = this[kHeadersList].cookies; + if (list) { + return [...list]; + } + return []; + } + // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine + get [kHeadersSortedMap]() { + if (this[kHeadersList][kHeadersSortedMap]) { + return this[kHeadersList][kHeadersSortedMap]; + } + const headers = []; + const names = [...this[kHeadersList]].sort((a, b) => a[0] < b[0] ? -1 : 1); + const cookies = this[kHeadersList].cookies; + for (const [name, value] of names) { + if (name === "set-cookie") { + for (const value2 of cookies) { + headers.push([name, value2]); + } + } else { + assert(value !== null); + headers.push([name, value]); + } + } + this[kHeadersList][kHeadersSortedMap] = headers; + return headers; + } + keys() { + webidl.brandCheck(this, _Headers); + return makeIterator( + () => [...this[kHeadersSortedMap].values()], + "Headers", + "key" + ); + } + values() { + webidl.brandCheck(this, _Headers); + return makeIterator( + () => [...this[kHeadersSortedMap].values()], + "Headers", + "value" + ); + } + entries() { + webidl.brandCheck(this, _Headers); + return makeIterator( + () => [...this[kHeadersSortedMap].values()], + "Headers", + "key+value" + ); + } + /** + * @param {(value: string, key: string, self: Headers) => void} callbackFn + * @param {unknown} thisArg + */ + forEach(callbackFn, thisArg = globalThis) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 1, { header: "Headers.forEach" }); + if (typeof callbackFn !== "function") { + throw new TypeError( + "Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'." + ); + } + for (const [key, value] of this) { + callbackFn.apply(thisArg, [value, key, this]); + } + } + [Symbol.for("nodejs.util.inspect.custom")]() { + webidl.brandCheck(this, _Headers); + return this[kHeadersList]; + } + }; + Headers.prototype[Symbol.iterator] = Headers.prototype.entries; + Object.defineProperties(Headers.prototype, { + append: kEnumerableProperty, + delete: kEnumerableProperty, + get: kEnumerableProperty, + has: kEnumerableProperty, + set: kEnumerableProperty, + getSetCookie: kEnumerableProperty, + keys: kEnumerableProperty, + values: kEnumerableProperty, + entries: kEnumerableProperty, + forEach: kEnumerableProperty, + [Symbol.iterator]: { enumerable: false }, + [Symbol.toStringTag]: { + value: "Headers", + configurable: true + } + }); + webidl.converters.HeadersInit = function(V) { + if (webidl.util.Type(V) === "Object") { + if (V[Symbol.iterator]) { + return webidl.converters["sequence>"](V); + } + return webidl.converters["record"](V); + } + throw webidl.errors.conversionFailed({ + prefix: "Headers constructor", + argument: "Argument 1", + types: ["sequence>", "record"] + }); + }; + module2.exports = { + fill, + Headers, + HeadersList + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/response.js +var require_response = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/response.js"(exports, module2) { + "use strict"; + var { Headers, HeadersList, fill } = require_headers(); + var { extractBody, cloneBody, mixinBody } = require_body(); + var util = require_util(); + var { kEnumerableProperty } = util; + var { + isValidReasonPhrase, + isCancelled, + isAborted, + isBlobLike, + serializeJavascriptValueToJSONString, + isErrorLike, + isomorphicEncode + } = require_util2(); + var { + redirectStatusSet, + nullBodyStatus, + DOMException: DOMException2 + } = require_constants(); + var { kState, kHeaders, kGuard, kRealm } = require_symbols2(); + var { webidl } = require_webidl(); + var { FormData } = require_formdata(); + var { getGlobalOrigin } = require_global(); + var { URLSerializer } = require_dataURL(); + var { kHeadersList } = require_symbols(); + var assert = require("assert"); + var { types } = require("util"); + var ReadableStream = globalThis.ReadableStream || require("stream/web").ReadableStream; + var textEncoder = new TextEncoder("utf-8"); + var Response = class _Response { + // Creates network error Response. + static error() { + const relevantRealm = { settingsObject: {} }; + const responseObject = new _Response(); + responseObject[kState] = makeNetworkError(); + responseObject[kRealm] = relevantRealm; + responseObject[kHeaders][kHeadersList] = responseObject[kState].headersList; + responseObject[kHeaders][kGuard] = "immutable"; + responseObject[kHeaders][kRealm] = relevantRealm; + return responseObject; + } + // https://fetch.spec.whatwg.org/#dom-response-json + static json(data, init = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: "Response.json" }); + if (init !== null) { + init = webidl.converters.ResponseInit(init); + } + const bytes = textEncoder.encode( + serializeJavascriptValueToJSONString(data) + ); + const body = extractBody(bytes); + const relevantRealm = { settingsObject: {} }; + const responseObject = new _Response(); + responseObject[kRealm] = relevantRealm; + responseObject[kHeaders][kGuard] = "response"; + responseObject[kHeaders][kRealm] = relevantRealm; + initializeResponse(responseObject, init, { body: body[0], type: "application/json" }); + return responseObject; + } + // Creates a redirect Response that redirects to url with status status. + static redirect(url, status = 302) { + const relevantRealm = { settingsObject: {} }; + webidl.argumentLengthCheck(arguments, 1, { header: "Response.redirect" }); + url = webidl.converters.USVString(url); + status = webidl.converters["unsigned short"](status); + let parsedURL; + try { + parsedURL = new URL(url, getGlobalOrigin()); + } catch (err) { + throw Object.assign(new TypeError("Failed to parse URL from " + url), { + cause: err + }); + } + if (!redirectStatusSet.has(status)) { + throw new RangeError("Invalid status code " + status); + } + const responseObject = new _Response(); + responseObject[kRealm] = relevantRealm; + responseObject[kHeaders][kGuard] = "immutable"; + responseObject[kHeaders][kRealm] = relevantRealm; + responseObject[kState].status = status; + const value = isomorphicEncode(URLSerializer(parsedURL)); + responseObject[kState].headersList.append("location", value); + return responseObject; + } + // https://fetch.spec.whatwg.org/#dom-response + constructor(body = null, init = {}) { + if (body !== null) { + body = webidl.converters.BodyInit(body); + } + init = webidl.converters.ResponseInit(init); + this[kRealm] = { settingsObject: {} }; + this[kState] = makeResponse({}); + this[kHeaders] = new Headers(); + this[kHeaders][kGuard] = "response"; + this[kHeaders][kHeadersList] = this[kState].headersList; + this[kHeaders][kRealm] = this[kRealm]; + let bodyWithType = null; + if (body != null) { + const [extractedBody, type] = extractBody(body); + bodyWithType = { body: extractedBody, type }; + } + initializeResponse(this, init, bodyWithType); + } + // Returns response’s type, e.g., "cors". + get type() { + webidl.brandCheck(this, _Response); + return this[kState].type; + } + // Returns response’s URL, if it has one; otherwise the empty string. + get url() { + webidl.brandCheck(this, _Response); + const urlList = this[kState].urlList; + const url = urlList[urlList.length - 1] ?? null; + if (url === null) { + return ""; + } + return URLSerializer(url, true); + } + // Returns whether response was obtained through a redirect. + get redirected() { + webidl.brandCheck(this, _Response); + return this[kState].urlList.length > 1; + } + // Returns response’s status. + get status() { + webidl.brandCheck(this, _Response); + return this[kState].status; + } + // Returns whether response’s status is an ok status. + get ok() { + webidl.brandCheck(this, _Response); + return this[kState].status >= 200 && this[kState].status <= 299; + } + // Returns response’s status message. + get statusText() { + webidl.brandCheck(this, _Response); + return this[kState].statusText; + } + // Returns response’s headers as Headers. + get headers() { + webidl.brandCheck(this, _Response); + return this[kHeaders]; + } + get body() { + webidl.brandCheck(this, _Response); + return this[kState].body ? this[kState].body.stream : null; + } + get bodyUsed() { + webidl.brandCheck(this, _Response); + return !!this[kState].body && util.isDisturbed(this[kState].body.stream); + } + // Returns a clone of response. + clone() { + webidl.brandCheck(this, _Response); + if (this.bodyUsed || this.body && this.body.locked) { + throw webidl.errors.exception({ + header: "Response.clone", + message: "Body has already been consumed." + }); + } + const clonedResponse = cloneResponse(this[kState]); + const clonedResponseObject = new _Response(); + clonedResponseObject[kState] = clonedResponse; + clonedResponseObject[kRealm] = this[kRealm]; + clonedResponseObject[kHeaders][kHeadersList] = clonedResponse.headersList; + clonedResponseObject[kHeaders][kGuard] = this[kHeaders][kGuard]; + clonedResponseObject[kHeaders][kRealm] = this[kHeaders][kRealm]; + return clonedResponseObject; + } + }; + mixinBody(Response); + Object.defineProperties(Response.prototype, { + type: kEnumerableProperty, + url: kEnumerableProperty, + status: kEnumerableProperty, + ok: kEnumerableProperty, + redirected: kEnumerableProperty, + statusText: kEnumerableProperty, + headers: kEnumerableProperty, + clone: kEnumerableProperty, + body: kEnumerableProperty, + bodyUsed: kEnumerableProperty, + [Symbol.toStringTag]: { + value: "Response", + configurable: true + } + }); + Object.defineProperties(Response, { + json: kEnumerableProperty, + redirect: kEnumerableProperty, + error: kEnumerableProperty + }); + function cloneResponse(response) { + if (response.internalResponse) { + return filterResponse( + cloneResponse(response.internalResponse), + response.type + ); + } + const newResponse = makeResponse({ ...response, body: null }); + if (response.body != null) { + newResponse.body = cloneBody(response.body); + } + return newResponse; + } + function makeResponse(init) { + return { + aborted: false, + rangeRequested: false, + timingAllowPassed: false, + requestIncludesCredentials: false, + type: "default", + status: 200, + timingInfo: null, + cacheState: "", + statusText: "", + ...init, + headersList: init.headersList ? new HeadersList(init.headersList) : new HeadersList(), + urlList: init.urlList ? [...init.urlList] : [] + }; + } + function makeNetworkError(reason) { + const isError = isErrorLike(reason); + return makeResponse({ + type: "error", + status: 0, + error: isError ? reason : new Error(reason ? String(reason) : reason), + aborted: reason && reason.name === "AbortError" + }); + } + function makeFilteredResponse(response, state) { + state = { + internalResponse: response, + ...state + }; + return new Proxy(response, { + get(target, p) { + return p in state ? state[p] : target[p]; + }, + set(target, p, value) { + assert(!(p in state)); + target[p] = value; + return true; + } + }); + } + function filterResponse(response, type) { + if (type === "basic") { + return makeFilteredResponse(response, { + type: "basic", + headersList: response.headersList + }); + } else if (type === "cors") { + return makeFilteredResponse(response, { + type: "cors", + headersList: response.headersList + }); + } else if (type === "opaque") { + return makeFilteredResponse(response, { + type: "opaque", + urlList: Object.freeze([]), + status: 0, + statusText: "", + body: null + }); + } else if (type === "opaqueredirect") { + return makeFilteredResponse(response, { + type: "opaqueredirect", + status: 0, + statusText: "", + headersList: [], + body: null + }); + } else { + assert(false); + } + } + function makeAppropriateNetworkError(fetchParams, err = null) { + assert(isCancelled(fetchParams)); + return isAborted(fetchParams) ? makeNetworkError(Object.assign(new DOMException2("The operation was aborted.", "AbortError"), { cause: err })) : makeNetworkError(Object.assign(new DOMException2("Request was cancelled."), { cause: err })); + } + function initializeResponse(response, init, body) { + if (init.status !== null && (init.status < 200 || init.status > 599)) { + throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.'); + } + if ("statusText" in init && init.statusText != null) { + if (!isValidReasonPhrase(String(init.statusText))) { + throw new TypeError("Invalid statusText"); + } + } + if ("status" in init && init.status != null) { + response[kState].status = init.status; + } + if ("statusText" in init && init.statusText != null) { + response[kState].statusText = init.statusText; + } + if ("headers" in init && init.headers != null) { + fill(response[kHeaders], init.headers); + } + if (body) { + if (nullBodyStatus.includes(response.status)) { + throw webidl.errors.exception({ + header: "Response constructor", + message: "Invalid response status code " + response.status + }); + } + response[kState].body = body.body; + if (body.type != null && !response[kState].headersList.contains("Content-Type")) { + response[kState].headersList.append("content-type", body.type); + } + } + } + webidl.converters.ReadableStream = webidl.interfaceConverter( + ReadableStream + ); + webidl.converters.FormData = webidl.interfaceConverter( + FormData + ); + webidl.converters.URLSearchParams = webidl.interfaceConverter( + URLSearchParams + ); + webidl.converters.XMLHttpRequestBodyInit = function(V) { + if (typeof V === "string") { + return webidl.converters.USVString(V); + } + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }); + } + if (types.isAnyArrayBuffer(V) || types.isTypedArray(V) || types.isDataView(V)) { + return webidl.converters.BufferSource(V); + } + if (util.isFormDataLike(V)) { + return webidl.converters.FormData(V, { strict: false }); + } + if (V instanceof URLSearchParams) { + return webidl.converters.URLSearchParams(V); + } + return webidl.converters.DOMString(V); + }; + webidl.converters.BodyInit = function(V) { + if (V instanceof ReadableStream) { + return webidl.converters.ReadableStream(V); + } + if (V == null ? void 0 : V[Symbol.asyncIterator]) { + return V; + } + return webidl.converters.XMLHttpRequestBodyInit(V); + }; + webidl.converters.ResponseInit = webidl.dictionaryConverter([ + { + key: "status", + converter: webidl.converters["unsigned short"], + defaultValue: 200 + }, + { + key: "statusText", + converter: webidl.converters.ByteString, + defaultValue: "" + }, + { + key: "headers", + converter: webidl.converters.HeadersInit + } + ]); + module2.exports = { + makeNetworkError, + makeResponse, + makeAppropriateNetworkError, + filterResponse, + Response, + cloneResponse + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/request.js +var require_request2 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/request.js"(exports, module2) { + "use strict"; + var { extractBody, mixinBody, cloneBody } = require_body(); + var { Headers, fill: fillHeaders, HeadersList } = require_headers(); + var { FinalizationRegistry } = require_dispatcher_weakref()(); + var util = require_util(); + var { + isValidHTTPToken, + sameOrigin, + normalizeMethod, + makePolicyContainer + } = require_util2(); + var { + forbiddenMethodsSet, + corsSafeListedMethodsSet, + referrerPolicy, + requestRedirect, + requestMode, + requestCredentials, + requestCache, + requestDuplex + } = require_constants(); + var { kEnumerableProperty } = util; + var { kHeaders, kSignal, kState, kGuard, kRealm } = require_symbols2(); + var { webidl } = require_webidl(); + var { getGlobalOrigin } = require_global(); + var { URLSerializer } = require_dataURL(); + var { kHeadersList } = require_symbols(); + var assert = require("assert"); + var { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = require("events"); + var TransformStream = globalThis.TransformStream; + var kInit = Symbol("init"); + var kAbortController = Symbol("abortController"); + var requestFinalizer = new FinalizationRegistry(({ signal, abort }) => { + signal.removeEventListener("abort", abort); + }); + var Request = class _Request { + // https://fetch.spec.whatwg.org/#dom-request + constructor(input, init = {}) { + var _a, _b; + if (input === kInit) { + return; + } + webidl.argumentLengthCheck(arguments, 1, { header: "Request constructor" }); + input = webidl.converters.RequestInfo(input); + init = webidl.converters.RequestInit(init); + this[kRealm] = { + settingsObject: { + baseUrl: getGlobalOrigin(), + get origin() { + var _a2; + return (_a2 = this.baseUrl) == null ? void 0 : _a2.origin; + }, + policyContainer: makePolicyContainer() + } + }; + let request3 = null; + let fallbackMode = null; + const baseUrl = this[kRealm].settingsObject.baseUrl; + let signal = null; + if (typeof input === "string") { + let parsedURL; + try { + parsedURL = new URL(input, baseUrl); + } catch (err) { + throw new TypeError("Failed to parse URL from " + input, { cause: err }); + } + if (parsedURL.username || parsedURL.password) { + throw new TypeError( + "Request cannot be constructed from a URL that includes credentials: " + input + ); + } + request3 = makeRequest({ urlList: [parsedURL] }); + fallbackMode = "cors"; + } else { + assert(input instanceof _Request); + request3 = input[kState]; + signal = input[kSignal]; + } + const origin = this[kRealm].settingsObject.origin; + let window = "client"; + if (((_b = (_a = request3.window) == null ? void 0 : _a.constructor) == null ? void 0 : _b.name) === "EnvironmentSettingsObject" && sameOrigin(request3.window, origin)) { + window = request3.window; + } + if (init.window != null) { + throw new TypeError(`'window' option '${window}' must be null`); + } + if ("window" in init) { + window = "no-window"; + } + request3 = makeRequest({ + // URL request’s URL. + // undici implementation note: this is set as the first item in request's urlList in makeRequest + // method request’s method. + method: request3.method, + // header list A copy of request’s header list. + // undici implementation note: headersList is cloned in makeRequest + headersList: request3.headersList, + // unsafe-request flag Set. + unsafeRequest: request3.unsafeRequest, + // client This’s relevant settings object. + client: this[kRealm].settingsObject, + // window window. + window, + // priority request’s priority. + priority: request3.priority, + // origin request’s origin. The propagation of the origin is only significant for navigation requests + // being handled by a service worker. In this scenario a request can have an origin that is different + // from the current client. + origin: request3.origin, + // referrer request’s referrer. + referrer: request3.referrer, + // referrer policy request’s referrer policy. + referrerPolicy: request3.referrerPolicy, + // mode request’s mode. + mode: request3.mode, + // credentials mode request’s credentials mode. + credentials: request3.credentials, + // cache mode request’s cache mode. + cache: request3.cache, + // redirect mode request’s redirect mode. + redirect: request3.redirect, + // integrity metadata request’s integrity metadata. + integrity: request3.integrity, + // keepalive request’s keepalive. + keepalive: request3.keepalive, + // reload-navigation flag request’s reload-navigation flag. + reloadNavigation: request3.reloadNavigation, + // history-navigation flag request’s history-navigation flag. + historyNavigation: request3.historyNavigation, + // URL list A clone of request’s URL list. + urlList: [...request3.urlList] + }); + if (Object.keys(init).length > 0) { + if (request3.mode === "navigate") { + request3.mode = "same-origin"; + } + request3.reloadNavigation = false; + request3.historyNavigation = false; + request3.origin = "client"; + request3.referrer = "client"; + request3.referrerPolicy = ""; + request3.url = request3.urlList[request3.urlList.length - 1]; + request3.urlList = [request3.url]; + } + if (init.referrer !== void 0) { + const referrer = init.referrer; + if (referrer === "") { + request3.referrer = "no-referrer"; + } else { + let parsedReferrer; + try { + parsedReferrer = new URL(referrer, baseUrl); + } catch (err) { + throw new TypeError(`Referrer "${referrer}" is not a valid URL.`, { cause: err }); + } + if (parsedReferrer.protocol === "about:" && parsedReferrer.hostname === "client" || origin && !sameOrigin(parsedReferrer, this[kRealm].settingsObject.baseUrl)) { + request3.referrer = "client"; + } else { + request3.referrer = parsedReferrer; + } + } + } + if (init.referrerPolicy !== void 0) { + request3.referrerPolicy = init.referrerPolicy; + } + let mode; + if (init.mode !== void 0) { + mode = init.mode; + } else { + mode = fallbackMode; + } + if (mode === "navigate") { + throw webidl.errors.exception({ + header: "Request constructor", + message: "invalid request mode navigate." + }); + } + if (mode != null) { + request3.mode = mode; + } + if (init.credentials !== void 0) { + request3.credentials = init.credentials; + } + if (init.cache !== void 0) { + request3.cache = init.cache; + } + if (request3.cache === "only-if-cached" && request3.mode !== "same-origin") { + throw new TypeError( + "'only-if-cached' can be set only with 'same-origin' mode" + ); + } + if (init.redirect !== void 0) { + request3.redirect = init.redirect; + } + if (init.integrity !== void 0 && init.integrity != null) { + request3.integrity = String(init.integrity); + } + if (init.keepalive !== void 0) { + request3.keepalive = Boolean(init.keepalive); + } + if (init.method !== void 0) { + let method = init.method; + if (!isValidHTTPToken(init.method)) { + throw TypeError(`'${init.method}' is not a valid HTTP method.`); + } + if (forbiddenMethodsSet.has(method.toUpperCase())) { + throw TypeError(`'${init.method}' HTTP method is unsupported.`); + } + method = normalizeMethod(init.method); + request3.method = method; + } + if (init.signal !== void 0) { + signal = init.signal; + } + this[kState] = request3; + const ac = new AbortController(); + this[kSignal] = ac.signal; + this[kSignal][kRealm] = this[kRealm]; + if (signal != null) { + if (!signal || typeof signal.aborted !== "boolean" || typeof signal.addEventListener !== "function") { + throw new TypeError( + "Failed to construct 'Request': member signal is not of type AbortSignal." + ); + } + if (signal.aborted) { + ac.abort(signal.reason); + } else { + this[kAbortController] = ac; + const acRef = new WeakRef(ac); + const abort = function() { + const ac2 = acRef.deref(); + if (ac2 !== void 0) { + ac2.abort(this.reason); + } + }; + try { + if (typeof getMaxListeners === "function" && getMaxListeners(signal) === defaultMaxListeners) { + setMaxListeners(100, signal); + } else if (getEventListeners(signal, "abort").length >= defaultMaxListeners) { + setMaxListeners(100, signal); + } + } catch { + } + util.addAbortListener(signal, abort); + requestFinalizer.register(ac, { signal, abort }); + } + } + this[kHeaders] = new Headers(); + this[kHeaders][kHeadersList] = request3.headersList; + this[kHeaders][kGuard] = "request"; + this[kHeaders][kRealm] = this[kRealm]; + if (mode === "no-cors") { + if (!corsSafeListedMethodsSet.has(request3.method)) { + throw new TypeError( + `'${request3.method} is unsupported in no-cors mode.` + ); + } + this[kHeaders][kGuard] = "request-no-cors"; + } + if (Object.keys(init).length !== 0) { + let headers = new Headers(this[kHeaders]); + if (init.headers !== void 0) { + headers = init.headers; + } + this[kHeaders][kHeadersList].clear(); + if (headers.constructor.name === "Headers") { + for (const [key, val] of headers) { + this[kHeaders].append(key, val); + } + } else { + fillHeaders(this[kHeaders], headers); + } + } + const inputBody = input instanceof _Request ? input[kState].body : null; + if ((init.body != null || inputBody != null) && (request3.method === "GET" || request3.method === "HEAD")) { + throw new TypeError("Request with GET/HEAD method cannot have body."); + } + let initBody = null; + if (init.body != null) { + const [extractedBody, contentType] = extractBody( + init.body, + request3.keepalive + ); + initBody = extractedBody; + if (contentType && !this[kHeaders][kHeadersList].contains("content-type")) { + this[kHeaders].append("content-type", contentType); + } + } + const inputOrInitBody = initBody ?? inputBody; + if (inputOrInitBody != null && inputOrInitBody.source == null) { + if (initBody != null && init.duplex == null) { + throw new TypeError("RequestInit: duplex option is required when sending a body."); + } + if (request3.mode !== "same-origin" && request3.mode !== "cors") { + throw new TypeError( + 'If request is made from ReadableStream, mode should be "same-origin" or "cors"' + ); + } + request3.useCORSPreflightFlag = true; + } + let finalBody = inputOrInitBody; + if (initBody == null && inputBody != null) { + if (util.isDisturbed(inputBody.stream) || inputBody.stream.locked) { + throw new TypeError( + "Cannot construct a Request with a Request object that has already been used." + ); + } + if (!TransformStream) { + TransformStream = require("stream/web").TransformStream; + } + const identityTransform = new TransformStream(); + inputBody.stream.pipeThrough(identityTransform); + finalBody = { + source: inputBody.source, + length: inputBody.length, + stream: identityTransform.readable + }; + } + this[kState].body = finalBody; + } + // Returns request’s HTTP method, which is "GET" by default. + get method() { + webidl.brandCheck(this, _Request); + return this[kState].method; + } + // Returns the URL of request as a string. + get url() { + webidl.brandCheck(this, _Request); + return URLSerializer(this[kState].url); + } + // Returns a Headers object consisting of the headers associated with request. + // Note that headers added in the network layer by the user agent will not + // be accounted for in this object, e.g., the "Host" header. + get headers() { + webidl.brandCheck(this, _Request); + return this[kHeaders]; + } + // Returns the kind of resource requested by request, e.g., "document" + // or "script". + get destination() { + webidl.brandCheck(this, _Request); + return this[kState].destination; + } + // Returns the referrer of request. Its value can be a same-origin URL if + // explicitly set in init, the empty string to indicate no referrer, and + // "about:client" when defaulting to the global’s default. This is used + // during fetching to determine the value of the `Referer` header of the + // request being made. + get referrer() { + webidl.brandCheck(this, _Request); + if (this[kState].referrer === "no-referrer") { + return ""; + } + if (this[kState].referrer === "client") { + return "about:client"; + } + return this[kState].referrer.toString(); + } + // Returns the referrer policy associated with request. + // This is used during fetching to compute the value of the request’s + // referrer. + get referrerPolicy() { + webidl.brandCheck(this, _Request); + return this[kState].referrerPolicy; + } + // Returns the mode associated with request, which is a string indicating + // whether the request will use CORS, or will be restricted to same-origin + // URLs. + get mode() { + webidl.brandCheck(this, _Request); + return this[kState].mode; + } + // Returns the credentials mode associated with request, + // which is a string indicating whether credentials will be sent with the + // request always, never, or only when sent to a same-origin URL. + get credentials() { + return this[kState].credentials; + } + // Returns the cache mode associated with request, + // which is a string indicating how the request will + // interact with the browser’s cache when fetching. + get cache() { + webidl.brandCheck(this, _Request); + return this[kState].cache; + } + // Returns the redirect mode associated with request, + // which is a string indicating how redirects for the + // request will be handled during fetching. A request + // will follow redirects by default. + get redirect() { + webidl.brandCheck(this, _Request); + return this[kState].redirect; + } + // Returns request’s subresource integrity metadata, which is a + // cryptographic hash of the resource being fetched. Its value + // consists of multiple hashes separated by whitespace. [SRI] + get integrity() { + webidl.brandCheck(this, _Request); + return this[kState].integrity; + } + // Returns a boolean indicating whether or not request can outlive the + // global in which it was created. + get keepalive() { + webidl.brandCheck(this, _Request); + return this[kState].keepalive; + } + // Returns a boolean indicating whether or not request is for a reload + // navigation. + get isReloadNavigation() { + webidl.brandCheck(this, _Request); + return this[kState].reloadNavigation; + } + // Returns a boolean indicating whether or not request is for a history + // navigation (a.k.a. back-foward navigation). + get isHistoryNavigation() { + webidl.brandCheck(this, _Request); + return this[kState].historyNavigation; + } + // Returns the signal associated with request, which is an AbortSignal + // object indicating whether or not request has been aborted, and its + // abort event handler. + get signal() { + webidl.brandCheck(this, _Request); + return this[kSignal]; + } + get body() { + webidl.brandCheck(this, _Request); + return this[kState].body ? this[kState].body.stream : null; + } + get bodyUsed() { + webidl.brandCheck(this, _Request); + return !!this[kState].body && util.isDisturbed(this[kState].body.stream); + } + get duplex() { + webidl.brandCheck(this, _Request); + return "half"; + } + // Returns a clone of request. + clone() { + var _a; + webidl.brandCheck(this, _Request); + if (this.bodyUsed || ((_a = this.body) == null ? void 0 : _a.locked)) { + throw new TypeError("unusable"); + } + const clonedRequest = cloneRequest(this[kState]); + const clonedRequestObject = new _Request(kInit); + clonedRequestObject[kState] = clonedRequest; + clonedRequestObject[kRealm] = this[kRealm]; + clonedRequestObject[kHeaders] = new Headers(); + clonedRequestObject[kHeaders][kHeadersList] = clonedRequest.headersList; + clonedRequestObject[kHeaders][kGuard] = this[kHeaders][kGuard]; + clonedRequestObject[kHeaders][kRealm] = this[kHeaders][kRealm]; + const ac = new AbortController(); + if (this.signal.aborted) { + ac.abort(this.signal.reason); + } else { + util.addAbortListener( + this.signal, + () => { + ac.abort(this.signal.reason); + } + ); + } + clonedRequestObject[kSignal] = ac.signal; + return clonedRequestObject; + } + }; + mixinBody(Request); + function makeRequest(init) { + const request3 = { + method: "GET", + localURLsOnly: false, + unsafeRequest: false, + body: null, + client: null, + reservedClient: null, + replacesClientId: "", + window: "client", + keepalive: false, + serviceWorkers: "all", + initiator: "", + destination: "", + priority: null, + origin: "client", + policyContainer: "client", + referrer: "client", + referrerPolicy: "", + mode: "no-cors", + useCORSPreflightFlag: false, + credentials: "same-origin", + useCredentials: false, + cache: "default", + redirect: "follow", + integrity: "", + cryptoGraphicsNonceMetadata: "", + parserMetadata: "", + reloadNavigation: false, + historyNavigation: false, + userActivation: false, + taintedOrigin: false, + redirectCount: 0, + responseTainting: "basic", + preventNoCacheCacheControlHeaderModification: false, + done: false, + timingAllowFailed: false, + ...init, + headersList: init.headersList ? new HeadersList(init.headersList) : new HeadersList() + }; + request3.url = request3.urlList[0]; + return request3; + } + function cloneRequest(request3) { + const newRequest = makeRequest({ ...request3, body: null }); + if (request3.body != null) { + newRequest.body = cloneBody(request3.body); + } + return newRequest; + } + Object.defineProperties(Request.prototype, { + method: kEnumerableProperty, + url: kEnumerableProperty, + headers: kEnumerableProperty, + redirect: kEnumerableProperty, + clone: kEnumerableProperty, + signal: kEnumerableProperty, + duplex: kEnumerableProperty, + destination: kEnumerableProperty, + body: kEnumerableProperty, + bodyUsed: kEnumerableProperty, + isHistoryNavigation: kEnumerableProperty, + isReloadNavigation: kEnumerableProperty, + keepalive: kEnumerableProperty, + integrity: kEnumerableProperty, + cache: kEnumerableProperty, + credentials: kEnumerableProperty, + attribute: kEnumerableProperty, + referrerPolicy: kEnumerableProperty, + referrer: kEnumerableProperty, + mode: kEnumerableProperty, + [Symbol.toStringTag]: { + value: "Request", + configurable: true + } + }); + webidl.converters.Request = webidl.interfaceConverter( + Request + ); + webidl.converters.RequestInfo = function(V) { + if (typeof V === "string") { + return webidl.converters.USVString(V); + } + if (V instanceof Request) { + return webidl.converters.Request(V); + } + return webidl.converters.USVString(V); + }; + webidl.converters.AbortSignal = webidl.interfaceConverter( + AbortSignal + ); + webidl.converters.RequestInit = webidl.dictionaryConverter([ + { + key: "method", + converter: webidl.converters.ByteString + }, + { + key: "headers", + converter: webidl.converters.HeadersInit + }, + { + key: "body", + converter: webidl.nullableConverter( + webidl.converters.BodyInit + ) + }, + { + key: "referrer", + converter: webidl.converters.USVString + }, + { + key: "referrerPolicy", + converter: webidl.converters.DOMString, + // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy + allowedValues: referrerPolicy + }, + { + key: "mode", + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#concept-request-mode + allowedValues: requestMode + }, + { + key: "credentials", + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestcredentials + allowedValues: requestCredentials + }, + { + key: "cache", + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestcache + allowedValues: requestCache + }, + { + key: "redirect", + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestredirect + allowedValues: requestRedirect + }, + { + key: "integrity", + converter: webidl.converters.DOMString + }, + { + key: "keepalive", + converter: webidl.converters.boolean + }, + { + key: "signal", + converter: webidl.nullableConverter( + (signal) => webidl.converters.AbortSignal( + signal, + { strict: false } + ) + ) + }, + { + key: "window", + converter: webidl.converters.any + }, + { + key: "duplex", + converter: webidl.converters.DOMString, + allowedValues: requestDuplex + } + ]); + module2.exports = { Request, makeRequest }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/index.js +var require_fetch = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/index.js"(exports, module2) { + "use strict"; + var { + Response, + makeNetworkError, + makeAppropriateNetworkError, + filterResponse, + makeResponse + } = require_response(); + var { Headers } = require_headers(); + var { Request, makeRequest } = require_request2(); + var zlib = require("zlib"); + var { + bytesMatch, + makePolicyContainer, + clonePolicyContainer, + requestBadPort, + TAOCheck, + appendRequestOriginHeader, + responseLocationURL, + requestCurrentURL, + setRequestReferrerPolicyOnRedirect, + tryUpgradeRequestToAPotentiallyTrustworthyURL, + createOpaqueTimingInfo, + appendFetchMetadata, + corsCheck, + crossOriginResourcePolicyCheck, + determineRequestsReferrer, + coarsenedSharedCurrentTime, + createDeferredPromise, + isBlobLike, + sameOrigin, + isCancelled, + isAborted, + isErrorLike, + fullyReadBody, + readableStreamClose, + isomorphicEncode, + urlIsLocal, + urlIsHttpHttpsScheme, + urlHasHttpsScheme + } = require_util2(); + var { kState, kHeaders, kGuard, kRealm } = require_symbols2(); + var assert = require("assert"); + var { safelyExtractBody } = require_body(); + var { + redirectStatusSet, + nullBodyStatus, + safeMethodsSet, + requestBodyHeader, + subresourceSet, + DOMException: DOMException2 + } = require_constants(); + var { kHeadersList } = require_symbols(); + var EE = require("events"); + var { Readable, pipeline } = require("stream"); + var { addAbortListener, isErrored, isReadable, nodeMajor, nodeMinor } = require_util(); + var { dataURLProcessor, serializeAMimeType } = require_dataURL(); + var { TransformStream } = require("stream/web"); + var { getGlobalDispatcher } = require_global2(); + var { webidl } = require_webidl(); + var { STATUS_CODES } = require("http"); + var GET_OR_HEAD = ["GET", "HEAD"]; + var resolveObjectURL; + var ReadableStream = globalThis.ReadableStream; + var Fetch = class extends EE { + constructor(dispatcher) { + super(); + this.dispatcher = dispatcher; + this.connection = null; + this.dump = false; + this.state = "ongoing"; + this.setMaxListeners(21); + } + terminate(reason) { + var _a; + if (this.state !== "ongoing") { + return; + } + this.state = "terminated"; + (_a = this.connection) == null ? void 0 : _a.destroy(reason); + this.emit("terminated", reason); + } + // https://fetch.spec.whatwg.org/#fetch-controller-abort + abort(error) { + var _a; + if (this.state !== "ongoing") { + return; + } + this.state = "aborted"; + if (!error) { + error = new DOMException2("The operation was aborted.", "AbortError"); + } + this.serializedAbortReason = error; + (_a = this.connection) == null ? void 0 : _a.destroy(error); + this.emit("terminated", error); + } + }; + function fetch(input, init = {}) { + var _a; + webidl.argumentLengthCheck(arguments, 1, { header: "globalThis.fetch" }); + const p = createDeferredPromise(); + let requestObject; + try { + requestObject = new Request(input, init); + } catch (e) { + p.reject(e); + return p.promise; + } + const request3 = requestObject[kState]; + if (requestObject.signal.aborted) { + abortFetch(p, request3, null, requestObject.signal.reason); + return p.promise; + } + const globalObject = request3.client.globalObject; + if (((_a = globalObject == null ? void 0 : globalObject.constructor) == null ? void 0 : _a.name) === "ServiceWorkerGlobalScope") { + request3.serviceWorkers = "none"; + } + let responseObject = null; + const relevantRealm = null; + let locallyAborted = false; + let controller = null; + addAbortListener( + requestObject.signal, + () => { + locallyAborted = true; + assert(controller != null); + controller.abort(requestObject.signal.reason); + abortFetch(p, request3, responseObject, requestObject.signal.reason); + } + ); + const handleFetchDone = (response) => finalizeAndReportTiming(response, "fetch"); + const processResponse = (response) => { + if (locallyAborted) { + return Promise.resolve(); + } + if (response.aborted) { + abortFetch(p, request3, responseObject, controller.serializedAbortReason); + return Promise.resolve(); + } + if (response.type === "error") { + p.reject( + Object.assign(new TypeError("fetch failed"), { cause: response.error }) + ); + return Promise.resolve(); + } + responseObject = new Response(); + responseObject[kState] = response; + responseObject[kRealm] = relevantRealm; + responseObject[kHeaders][kHeadersList] = response.headersList; + responseObject[kHeaders][kGuard] = "immutable"; + responseObject[kHeaders][kRealm] = relevantRealm; + p.resolve(responseObject); + }; + controller = fetching({ + request: request3, + processResponseEndOfBody: handleFetchDone, + processResponse, + dispatcher: init.dispatcher ?? getGlobalDispatcher() + // undici + }); + return p.promise; + } + function finalizeAndReportTiming(response, initiatorType = "other") { + var _a; + if (response.type === "error" && response.aborted) { + return; + } + if (!((_a = response.urlList) == null ? void 0 : _a.length)) { + return; + } + const originalURL = response.urlList[0]; + let timingInfo = response.timingInfo; + let cacheState = response.cacheState; + if (!urlIsHttpHttpsScheme(originalURL)) { + return; + } + if (timingInfo === null) { + return; + } + if (!timingInfo.timingAllowPassed) { + timingInfo = createOpaqueTimingInfo({ + startTime: timingInfo.startTime + }); + cacheState = ""; + } + timingInfo.endTime = coarsenedSharedCurrentTime(); + response.timingInfo = timingInfo; + markResourceTiming( + timingInfo, + originalURL, + initiatorType, + globalThis, + cacheState + ); + } + function markResourceTiming(timingInfo, originalURL, initiatorType, globalThis2, cacheState) { + if (nodeMajor > 18 || nodeMajor === 18 && nodeMinor >= 2) { + performance.markResourceTiming(timingInfo, originalURL.href, initiatorType, globalThis2, cacheState); + } + } + function abortFetch(p, request3, responseObject, error) { + var _a, _b; + if (!error) { + error = new DOMException2("The operation was aborted.", "AbortError"); + } + p.reject(error); + if (request3.body != null && isReadable((_a = request3.body) == null ? void 0 : _a.stream)) { + request3.body.stream.cancel(error).catch((err) => { + if (err.code === "ERR_INVALID_STATE") { + return; + } + throw err; + }); + } + if (responseObject == null) { + return; + } + const response = responseObject[kState]; + if (response.body != null && isReadable((_b = response.body) == null ? void 0 : _b.stream)) { + response.body.stream.cancel(error).catch((err) => { + if (err.code === "ERR_INVALID_STATE") { + return; + } + throw err; + }); + } + } + function fetching({ + request: request3, + processRequestBodyChunkLength, + processRequestEndOfBody, + processResponse, + processResponseEndOfBody, + processResponseConsumeBody, + useParallelQueue = false, + dispatcher + // undici + }) { + var _a, _b, _c, _d; + let taskDestination = null; + let crossOriginIsolatedCapability = false; + if (request3.client != null) { + taskDestination = request3.client.globalObject; + crossOriginIsolatedCapability = request3.client.crossOriginIsolatedCapability; + } + const currenTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability); + const timingInfo = createOpaqueTimingInfo({ + startTime: currenTime + }); + const fetchParams = { + controller: new Fetch(dispatcher), + request: request3, + timingInfo, + processRequestBodyChunkLength, + processRequestEndOfBody, + processResponse, + processResponseConsumeBody, + processResponseEndOfBody, + taskDestination, + crossOriginIsolatedCapability + }; + assert(!request3.body || request3.body.stream); + if (request3.window === "client") { + request3.window = ((_c = (_b = (_a = request3.client) == null ? void 0 : _a.globalObject) == null ? void 0 : _b.constructor) == null ? void 0 : _c.name) === "Window" ? request3.client : "no-window"; + } + if (request3.origin === "client") { + request3.origin = (_d = request3.client) == null ? void 0 : _d.origin; + } + if (request3.policyContainer === "client") { + if (request3.client != null) { + request3.policyContainer = clonePolicyContainer( + request3.client.policyContainer + ); + } else { + request3.policyContainer = makePolicyContainer(); + } + } + if (!request3.headersList.contains("accept")) { + const value = "*/*"; + request3.headersList.append("accept", value); + } + if (!request3.headersList.contains("accept-language")) { + request3.headersList.append("accept-language", "*"); + } + if (request3.priority === null) { + } + if (subresourceSet.has(request3.destination)) { + } + mainFetch(fetchParams).catch((err) => { + fetchParams.controller.terminate(err); + }); + return fetchParams.controller; + } + async function mainFetch(fetchParams, recursive = false) { + const request3 = fetchParams.request; + let response = null; + if (request3.localURLsOnly && !urlIsLocal(requestCurrentURL(request3))) { + response = makeNetworkError("local URLs only"); + } + tryUpgradeRequestToAPotentiallyTrustworthyURL(request3); + if (requestBadPort(request3) === "blocked") { + response = makeNetworkError("bad port"); + } + if (request3.referrerPolicy === "") { + request3.referrerPolicy = request3.policyContainer.referrerPolicy; + } + if (request3.referrer !== "no-referrer") { + request3.referrer = determineRequestsReferrer(request3); + } + if (response === null) { + response = await (async () => { + const currentURL = requestCurrentURL(request3); + if ( + // - request’s current URL’s origin is same origin with request’s origin, + // and request’s response tainting is "basic" + sameOrigin(currentURL, request3.url) && request3.responseTainting === "basic" || // request’s current URL’s scheme is "data" + currentURL.protocol === "data:" || // - request’s mode is "navigate" or "websocket" + (request3.mode === "navigate" || request3.mode === "websocket") + ) { + request3.responseTainting = "basic"; + return await schemeFetch(fetchParams); + } + if (request3.mode === "same-origin") { + return makeNetworkError('request mode cannot be "same-origin"'); + } + if (request3.mode === "no-cors") { + if (request3.redirect !== "follow") { + return makeNetworkError( + 'redirect mode cannot be "follow" for "no-cors" request' + ); + } + request3.responseTainting = "opaque"; + return await schemeFetch(fetchParams); + } + if (!urlIsHttpHttpsScheme(requestCurrentURL(request3))) { + return makeNetworkError("URL scheme must be a HTTP(S) scheme"); + } + request3.responseTainting = "cors"; + return await httpFetch(fetchParams); + })(); + } + if (recursive) { + return response; + } + if (response.status !== 0 && !response.internalResponse) { + if (request3.responseTainting === "cors") { + } + if (request3.responseTainting === "basic") { + response = filterResponse(response, "basic"); + } else if (request3.responseTainting === "cors") { + response = filterResponse(response, "cors"); + } else if (request3.responseTainting === "opaque") { + response = filterResponse(response, "opaque"); + } else { + assert(false); + } + } + let internalResponse = response.status === 0 ? response : response.internalResponse; + if (internalResponse.urlList.length === 0) { + internalResponse.urlList.push(...request3.urlList); + } + if (!request3.timingAllowFailed) { + response.timingAllowPassed = true; + } + if (response.type === "opaque" && internalResponse.status === 206 && internalResponse.rangeRequested && !request3.headers.contains("range")) { + response = internalResponse = makeNetworkError(); + } + if (response.status !== 0 && (request3.method === "HEAD" || request3.method === "CONNECT" || nullBodyStatus.includes(internalResponse.status))) { + internalResponse.body = null; + fetchParams.controller.dump = true; + } + if (request3.integrity) { + const processBodyError = (reason) => fetchFinale(fetchParams, makeNetworkError(reason)); + if (request3.responseTainting === "opaque" || response.body == null) { + processBodyError(response.error); + return; + } + const processBody = (bytes) => { + if (!bytesMatch(bytes, request3.integrity)) { + processBodyError("integrity mismatch"); + return; + } + response.body = safelyExtractBody(bytes)[0]; + fetchFinale(fetchParams, response); + }; + await fullyReadBody(response.body, processBody, processBodyError); + } else { + fetchFinale(fetchParams, response); + } + } + function schemeFetch(fetchParams) { + if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) { + return Promise.resolve(makeAppropriateNetworkError(fetchParams)); + } + const { request: request3 } = fetchParams; + const { protocol: scheme } = requestCurrentURL(request3); + switch (scheme) { + case "about:": { + return Promise.resolve(makeNetworkError("about scheme is not supported")); + } + case "blob:": { + if (!resolveObjectURL) { + resolveObjectURL = require("buffer").resolveObjectURL; + } + const blobURLEntry = requestCurrentURL(request3); + if (blobURLEntry.search.length !== 0) { + return Promise.resolve(makeNetworkError("NetworkError when attempting to fetch resource.")); + } + const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString()); + if (request3.method !== "GET" || !isBlobLike(blobURLEntryObject)) { + return Promise.resolve(makeNetworkError("invalid method")); + } + const bodyWithType = safelyExtractBody(blobURLEntryObject); + const body = bodyWithType[0]; + const length = isomorphicEncode(`${body.length}`); + const type = bodyWithType[1] ?? ""; + const response = makeResponse({ + statusText: "OK", + headersList: [ + ["content-length", { name: "Content-Length", value: length }], + ["content-type", { name: "Content-Type", value: type }] + ] + }); + response.body = body; + return Promise.resolve(response); + } + case "data:": { + const currentURL = requestCurrentURL(request3); + const dataURLStruct = dataURLProcessor(currentURL); + if (dataURLStruct === "failure") { + return Promise.resolve(makeNetworkError("failed to fetch the data URL")); + } + const mimeType = serializeAMimeType(dataURLStruct.mimeType); + return Promise.resolve(makeResponse({ + statusText: "OK", + headersList: [ + ["content-type", { name: "Content-Type", value: mimeType }] + ], + body: safelyExtractBody(dataURLStruct.body)[0] + })); + } + case "file:": { + return Promise.resolve(makeNetworkError("not implemented... yet...")); + } + case "http:": + case "https:": { + return httpFetch(fetchParams).catch((err) => makeNetworkError(err)); + } + default: { + return Promise.resolve(makeNetworkError("unknown scheme")); + } + } + } + function finalizeResponse(fetchParams, response) { + fetchParams.request.done = true; + if (fetchParams.processResponseDone != null) { + queueMicrotask(() => fetchParams.processResponseDone(response)); + } + } + function fetchFinale(fetchParams, response) { + if (response.type === "error") { + response.urlList = [fetchParams.request.urlList[0]]; + response.timingInfo = createOpaqueTimingInfo({ + startTime: fetchParams.timingInfo.startTime + }); + } + const processResponseEndOfBody = () => { + fetchParams.request.done = true; + if (fetchParams.processResponseEndOfBody != null) { + queueMicrotask(() => fetchParams.processResponseEndOfBody(response)); + } + }; + if (fetchParams.processResponse != null) { + queueMicrotask(() => fetchParams.processResponse(response)); + } + if (response.body == null) { + processResponseEndOfBody(); + } else { + const identityTransformAlgorithm = (chunk, controller) => { + controller.enqueue(chunk); + }; + const transformStream = new TransformStream({ + start() { + }, + transform: identityTransformAlgorithm, + flush: processResponseEndOfBody + }, { + size() { + return 1; + } + }, { + size() { + return 1; + } + }); + response.body = { stream: response.body.stream.pipeThrough(transformStream) }; + } + if (fetchParams.processResponseConsumeBody != null) { + const processBody = (nullOrBytes) => fetchParams.processResponseConsumeBody(response, nullOrBytes); + const processBodyError = (failure) => fetchParams.processResponseConsumeBody(response, failure); + if (response.body == null) { + queueMicrotask(() => processBody(null)); + } else { + return fullyReadBody(response.body, processBody, processBodyError); + } + return Promise.resolve(); + } + } + async function httpFetch(fetchParams) { + const request3 = fetchParams.request; + let response = null; + let actualResponse = null; + const timingInfo = fetchParams.timingInfo; + if (request3.serviceWorkers === "all") { + } + if (response === null) { + if (request3.redirect === "follow") { + request3.serviceWorkers = "none"; + } + actualResponse = response = await httpNetworkOrCacheFetch(fetchParams); + if (request3.responseTainting === "cors" && corsCheck(request3, response) === "failure") { + return makeNetworkError("cors failure"); + } + if (TAOCheck(request3, response) === "failure") { + request3.timingAllowFailed = true; + } + } + if ((request3.responseTainting === "opaque" || response.type === "opaque") && crossOriginResourcePolicyCheck( + request3.origin, + request3.client, + request3.destination, + actualResponse + ) === "blocked") { + return makeNetworkError("blocked"); + } + if (redirectStatusSet.has(actualResponse.status)) { + if (request3.redirect !== "manual") { + fetchParams.controller.connection.destroy(); + } + if (request3.redirect === "error") { + response = makeNetworkError("unexpected redirect"); + } else if (request3.redirect === "manual") { + response = actualResponse; + } else if (request3.redirect === "follow") { + response = await httpRedirectFetch(fetchParams, response); + } else { + assert(false); + } + } + response.timingInfo = timingInfo; + return response; + } + function httpRedirectFetch(fetchParams, response) { + const request3 = fetchParams.request; + const actualResponse = response.internalResponse ? response.internalResponse : response; + let locationURL; + try { + locationURL = responseLocationURL( + actualResponse, + requestCurrentURL(request3).hash + ); + if (locationURL == null) { + return response; + } + } catch (err) { + return Promise.resolve(makeNetworkError(err)); + } + if (!urlIsHttpHttpsScheme(locationURL)) { + return Promise.resolve(makeNetworkError("URL scheme must be a HTTP(S) scheme")); + } + if (request3.redirectCount === 20) { + return Promise.resolve(makeNetworkError("redirect count exceeded")); + } + request3.redirectCount += 1; + if (request3.mode === "cors" && (locationURL.username || locationURL.password) && !sameOrigin(request3, locationURL)) { + return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"')); + } + if (request3.responseTainting === "cors" && (locationURL.username || locationURL.password)) { + return Promise.resolve(makeNetworkError( + 'URL cannot contain credentials for request mode "cors"' + )); + } + if (actualResponse.status !== 303 && request3.body != null && request3.body.source == null) { + return Promise.resolve(makeNetworkError()); + } + if ([301, 302].includes(actualResponse.status) && request3.method === "POST" || actualResponse.status === 303 && !GET_OR_HEAD.includes(request3.method)) { + request3.method = "GET"; + request3.body = null; + for (const headerName of requestBodyHeader) { + request3.headersList.delete(headerName); + } + } + if (!sameOrigin(requestCurrentURL(request3), locationURL)) { + request3.headersList.delete("authorization"); + request3.headersList.delete("cookie"); + request3.headersList.delete("host"); + } + if (request3.body != null) { + assert(request3.body.source != null); + request3.body = safelyExtractBody(request3.body.source)[0]; + } + const timingInfo = fetchParams.timingInfo; + timingInfo.redirectEndTime = timingInfo.postRedirectStartTime = coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability); + if (timingInfo.redirectStartTime === 0) { + timingInfo.redirectStartTime = timingInfo.startTime; + } + request3.urlList.push(locationURL); + setRequestReferrerPolicyOnRedirect(request3, actualResponse); + return mainFetch(fetchParams, true); + } + async function httpNetworkOrCacheFetch(fetchParams, isAuthenticationFetch = false, isNewConnectionFetch = false) { + const request3 = fetchParams.request; + let httpFetchParams = null; + let httpRequest = null; + let response = null; + const httpCache = null; + const revalidatingFlag = false; + if (request3.window === "no-window" && request3.redirect === "error") { + httpFetchParams = fetchParams; + httpRequest = request3; + } else { + httpRequest = makeRequest(request3); + httpFetchParams = { ...fetchParams }; + httpFetchParams.request = httpRequest; + } + const includeCredentials = request3.credentials === "include" || request3.credentials === "same-origin" && request3.responseTainting === "basic"; + const contentLength = httpRequest.body ? httpRequest.body.length : null; + let contentLengthHeaderValue = null; + if (httpRequest.body == null && ["POST", "PUT"].includes(httpRequest.method)) { + contentLengthHeaderValue = "0"; + } + if (contentLength != null) { + contentLengthHeaderValue = isomorphicEncode(`${contentLength}`); + } + if (contentLengthHeaderValue != null) { + httpRequest.headersList.append("content-length", contentLengthHeaderValue); + } + if (contentLength != null && httpRequest.keepalive) { + } + if (httpRequest.referrer instanceof URL) { + httpRequest.headersList.append("referer", isomorphicEncode(httpRequest.referrer.href)); + } + appendRequestOriginHeader(httpRequest); + appendFetchMetadata(httpRequest); + if (!httpRequest.headersList.contains("user-agent")) { + httpRequest.headersList.append("user-agent", typeof esbuildDetection === "undefined" ? "undici" : "node"); + } + if (httpRequest.cache === "default" && (httpRequest.headersList.contains("if-modified-since") || httpRequest.headersList.contains("if-none-match") || httpRequest.headersList.contains("if-unmodified-since") || httpRequest.headersList.contains("if-match") || httpRequest.headersList.contains("if-range"))) { + httpRequest.cache = "no-store"; + } + if (httpRequest.cache === "no-cache" && !httpRequest.preventNoCacheCacheControlHeaderModification && !httpRequest.headersList.contains("cache-control")) { + httpRequest.headersList.append("cache-control", "max-age=0"); + } + if (httpRequest.cache === "no-store" || httpRequest.cache === "reload") { + if (!httpRequest.headersList.contains("pragma")) { + httpRequest.headersList.append("pragma", "no-cache"); + } + if (!httpRequest.headersList.contains("cache-control")) { + httpRequest.headersList.append("cache-control", "no-cache"); + } + } + if (httpRequest.headersList.contains("range")) { + httpRequest.headersList.append("accept-encoding", "identity"); + } + if (!httpRequest.headersList.contains("accept-encoding")) { + if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) { + httpRequest.headersList.append("accept-encoding", "br, gzip, deflate"); + } else { + httpRequest.headersList.append("accept-encoding", "gzip, deflate"); + } + } + httpRequest.headersList.delete("host"); + if (includeCredentials) { + } + if (httpCache == null) { + httpRequest.cache = "no-store"; + } + if (httpRequest.mode !== "no-store" && httpRequest.mode !== "reload") { + } + if (response == null) { + if (httpRequest.mode === "only-if-cached") { + return makeNetworkError("only if cached"); + } + const forwardResponse = await httpNetworkFetch( + httpFetchParams, + includeCredentials, + isNewConnectionFetch + ); + if (!safeMethodsSet.has(httpRequest.method) && forwardResponse.status >= 200 && forwardResponse.status <= 399) { + } + if (revalidatingFlag && forwardResponse.status === 304) { + } + if (response == null) { + response = forwardResponse; + } + } + response.urlList = [...httpRequest.urlList]; + if (httpRequest.headersList.contains("range")) { + response.rangeRequested = true; + } + response.requestIncludesCredentials = includeCredentials; + if (response.status === 407) { + if (request3.window === "no-window") { + return makeNetworkError(); + } + if (isCancelled(fetchParams)) { + return makeAppropriateNetworkError(fetchParams); + } + return makeNetworkError("proxy authentication required"); + } + if ( + // response’s status is 421 + response.status === 421 && // isNewConnectionFetch is false + !isNewConnectionFetch && // request’s body is null, or request’s body is non-null and request’s body’s source is non-null + (request3.body == null || request3.body.source != null) + ) { + if (isCancelled(fetchParams)) { + return makeAppropriateNetworkError(fetchParams); + } + fetchParams.controller.connection.destroy(); + response = await httpNetworkOrCacheFetch( + fetchParams, + isAuthenticationFetch, + true + ); + } + if (isAuthenticationFetch) { + } + return response; + } + async function httpNetworkFetch(fetchParams, includeCredentials = false, forceNewConnection = false) { + assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed); + fetchParams.controller.connection = { + abort: null, + destroyed: false, + destroy(err) { + var _a; + if (!this.destroyed) { + this.destroyed = true; + (_a = this.abort) == null ? void 0 : _a.call(this, err ?? new DOMException2("The operation was aborted.", "AbortError")); + } + } + }; + const request3 = fetchParams.request; + let response = null; + const timingInfo = fetchParams.timingInfo; + const httpCache = null; + if (httpCache == null) { + request3.cache = "no-store"; + } + const newConnection = forceNewConnection ? "yes" : "no"; + if (request3.mode === "websocket") { + } else { + } + let requestBody = null; + if (request3.body == null && fetchParams.processRequestEndOfBody) { + queueMicrotask(() => fetchParams.processRequestEndOfBody()); + } else if (request3.body != null) { + const processBodyChunk = async function* (bytes) { + var _a; + if (isCancelled(fetchParams)) { + return; + } + yield bytes; + (_a = fetchParams.processRequestBodyChunkLength) == null ? void 0 : _a.call(fetchParams, bytes.byteLength); + }; + const processEndOfBody = () => { + if (isCancelled(fetchParams)) { + return; + } + if (fetchParams.processRequestEndOfBody) { + fetchParams.processRequestEndOfBody(); + } + }; + const processBodyError = (e) => { + if (isCancelled(fetchParams)) { + return; + } + if (e.name === "AbortError") { + fetchParams.controller.abort(); + } else { + fetchParams.controller.terminate(e); + } + }; + requestBody = async function* () { + try { + for await (const bytes of request3.body.stream) { + yield* processBodyChunk(bytes); + } + processEndOfBody(); + } catch (err) { + processBodyError(err); + } + }(); + } + try { + const { body, status, statusText, headersList, socket } = await dispatch({ body: requestBody }); + if (socket) { + response = makeResponse({ status, statusText, headersList, socket }); + } else { + const iterator = body[Symbol.asyncIterator](); + fetchParams.controller.next = () => iterator.next(); + response = makeResponse({ status, statusText, headersList }); + } + } catch (err) { + if (err.name === "AbortError") { + fetchParams.controller.connection.destroy(); + return makeAppropriateNetworkError(fetchParams, err); + } + return makeNetworkError(err); + } + const pullAlgorithm = () => { + fetchParams.controller.resume(); + }; + const cancelAlgorithm = (reason) => { + fetchParams.controller.abort(reason); + }; + if (!ReadableStream) { + ReadableStream = require("stream/web").ReadableStream; + } + const stream = new ReadableStream( + { + async start(controller) { + fetchParams.controller.controller = controller; + }, + async pull(controller) { + await pullAlgorithm(controller); + }, + async cancel(reason) { + await cancelAlgorithm(reason); + } + }, + { + highWaterMark: 0, + size() { + return 1; + } + } + ); + response.body = { stream }; + fetchParams.controller.on("terminated", onAborted); + fetchParams.controller.resume = async () => { + while (true) { + let bytes; + let isFailure; + try { + const { done, value } = await fetchParams.controller.next(); + if (isAborted(fetchParams)) { + break; + } + bytes = done ? void 0 : value; + } catch (err) { + if (fetchParams.controller.ended && !timingInfo.encodedBodySize) { + bytes = void 0; + } else { + bytes = err; + isFailure = true; + } + } + if (bytes === void 0) { + readableStreamClose(fetchParams.controller.controller); + finalizeResponse(fetchParams, response); + return; + } + timingInfo.decodedBodySize += (bytes == null ? void 0 : bytes.byteLength) ?? 0; + if (isFailure) { + fetchParams.controller.terminate(bytes); + return; + } + fetchParams.controller.controller.enqueue(new Uint8Array(bytes)); + if (isErrored(stream)) { + fetchParams.controller.terminate(); + return; + } + if (!fetchParams.controller.controller.desiredSize) { + return; + } + } + }; + function onAborted(reason) { + if (isAborted(fetchParams)) { + response.aborted = true; + if (isReadable(stream)) { + fetchParams.controller.controller.error( + fetchParams.controller.serializedAbortReason + ); + } + } else { + if (isReadable(stream)) { + fetchParams.controller.controller.error(new TypeError("terminated", { + cause: isErrorLike(reason) ? reason : void 0 + })); + } + } + fetchParams.controller.connection.destroy(); + } + return response; + async function dispatch({ body }) { + const url = requestCurrentURL(request3); + const agent = fetchParams.controller.dispatcher; + return new Promise((resolve, reject) => agent.dispatch( + { + path: url.pathname + url.search, + origin: url.origin, + method: request3.method, + body: fetchParams.controller.dispatcher.isMockActive ? request3.body && request3.body.source : body, + headers: request3.headersList.entries, + maxRedirections: 0, + upgrade: request3.mode === "websocket" ? "websocket" : void 0 + }, + { + body: null, + abort: null, + onConnect(abort) { + const { connection } = fetchParams.controller; + if (connection.destroyed) { + abort(new DOMException2("The operation was aborted.", "AbortError")); + } else { + fetchParams.controller.on("terminated", abort); + this.abort = connection.abort = abort; + } + }, + onHeaders(status, headersList, resume, statusText) { + if (status < 200) { + return; + } + let codings = []; + let location = ""; + const headers = new Headers(); + if (Array.isArray(headersList)) { + for (let n = 0; n < headersList.length; n += 2) { + const key = headersList[n + 0].toString("latin1"); + const val = headersList[n + 1].toString("latin1"); + if (key.toLowerCase() === "content-encoding") { + codings = val.toLowerCase().split(",").map((x) => x.trim()); + } else if (key.toLowerCase() === "location") { + location = val; + } + headers.append(key, val); + } + } else { + const keys = Object.keys(headersList); + for (const key of keys) { + const val = headersList[key]; + if (key.toLowerCase() === "content-encoding") { + codings = val.toLowerCase().split(",").map((x) => x.trim()).reverse(); + } else if (key.toLowerCase() === "location") { + location = val; + } + headers.append(key, val); + } + } + this.body = new Readable({ read: resume }); + const decoders = []; + const willFollow = request3.redirect === "follow" && location && redirectStatusSet.has(status); + if (request3.method !== "HEAD" && request3.method !== "CONNECT" && !nullBodyStatus.includes(status) && !willFollow) { + for (const coding of codings) { + if (coding === "x-gzip" || coding === "gzip") { + decoders.push(zlib.createGunzip({ + // Be less strict when decoding compressed responses, since sometimes + // servers send slightly invalid responses that are still accepted + // by common browsers. + // Always using Z_SYNC_FLUSH is what cURL does. + flush: zlib.constants.Z_SYNC_FLUSH, + finishFlush: zlib.constants.Z_SYNC_FLUSH + })); + } else if (coding === "deflate") { + decoders.push(zlib.createInflate()); + } else if (coding === "br") { + decoders.push(zlib.createBrotliDecompress()); + } else { + decoders.length = 0; + break; + } + } + } + resolve({ + status, + statusText, + headersList: headers[kHeadersList], + body: decoders.length ? pipeline(this.body, ...decoders, () => { + }) : this.body.on("error", () => { + }) + }); + return true; + }, + onData(chunk) { + if (fetchParams.controller.dump) { + return; + } + const bytes = chunk; + timingInfo.encodedBodySize += bytes.byteLength; + return this.body.push(bytes); + }, + onComplete() { + if (this.abort) { + fetchParams.controller.off("terminated", this.abort); + } + fetchParams.controller.ended = true; + this.body.push(null); + }, + onError(error) { + var _a; + if (this.abort) { + fetchParams.controller.off("terminated", this.abort); + } + (_a = this.body) == null ? void 0 : _a.destroy(error); + fetchParams.controller.terminate(error); + reject(error); + }, + onUpgrade(status, headersList, socket) { + if (status !== 101) { + return; + } + const headers = new Headers(); + for (let n = 0; n < headersList.length; n += 2) { + const key = headersList[n + 0].toString("latin1"); + const val = headersList[n + 1].toString("latin1"); + headers.append(key, val); + } + resolve({ + status, + statusText: STATUS_CODES[status], + headersList: headers[kHeadersList], + socket + }); + return true; + } + } + )); + } + } + module2.exports = { + fetch, + Fetch, + fetching, + finalizeAndReportTiming + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/symbols.js +var require_symbols3 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/symbols.js"(exports, module2) { + "use strict"; + module2.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") + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/progressevent.js +var require_progressevent = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/progressevent.js"(exports, module2) { + "use strict"; + var { webidl } = require_webidl(); + var kState = Symbol("ProgressEvent state"); + var ProgressEvent = class _ProgressEvent extends Event { + constructor(type, eventInitDict = {}) { + type = webidl.converters.DOMString(type); + eventInitDict = webidl.converters.ProgressEventInit(eventInitDict ?? {}); + super(type, eventInitDict); + this[kState] = { + lengthComputable: eventInitDict.lengthComputable, + loaded: eventInitDict.loaded, + total: eventInitDict.total + }; + } + get lengthComputable() { + webidl.brandCheck(this, _ProgressEvent); + return this[kState].lengthComputable; + } + get loaded() { + webidl.brandCheck(this, _ProgressEvent); + return this[kState].loaded; + } + get total() { + webidl.brandCheck(this, _ProgressEvent); + return this[kState].total; + } + }; + webidl.converters.ProgressEventInit = webidl.dictionaryConverter([ + { + key: "lengthComputable", + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: "loaded", + converter: webidl.converters["unsigned long long"], + defaultValue: 0 + }, + { + key: "total", + converter: webidl.converters["unsigned long long"], + defaultValue: 0 + }, + { + key: "bubbles", + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: "cancelable", + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: "composed", + converter: webidl.converters.boolean, + defaultValue: false + } + ]); + module2.exports = { + ProgressEvent + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/encoding.js +var require_encoding = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/encoding.js"(exports, module2) { + "use strict"; + function getEncoding(label) { + if (!label) { + return "failure"; + } + switch (label.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"; + } + } + module2.exports = { + getEncoding + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/util.js +var require_util4 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/util.js"(exports, module2) { + "use strict"; + var { + kState, + kError, + kResult, + kAborted, + kLastProgressEventFired + } = require_symbols3(); + var { ProgressEvent } = require_progressevent(); + var { getEncoding } = require_encoding(); + var { DOMException: DOMException2 } = require_constants(); + var { serializeAMimeType, parseMIMEType } = require_dataURL(); + var { types } = require("util"); + var { StringDecoder } = require("string_decoder"); + var { btoa } = require("buffer"); + var staticPropertyDescriptors = { + enumerable: true, + writable: false, + configurable: false + }; + function readOperation(fr, blob, type, encodingName) { + if (fr[kState] === "loading") { + throw new DOMException2("Invalid state", "InvalidStateError"); + } + fr[kState] = "loading"; + fr[kResult] = null; + fr[kError] = null; + const stream = blob.stream(); + const reader = stream.getReader(); + const bytes = []; + let chunkPromise = reader.read(); + let isFirstChunk = true; + (async () => { + while (!fr[kAborted]) { + try { + const { done, value } = await chunkPromise; + if (isFirstChunk && !fr[kAborted]) { + queueMicrotask(() => { + fireAProgressEvent("loadstart", fr); + }); + } + isFirstChunk = false; + if (!done && types.isUint8Array(value)) { + bytes.push(value); + if ((fr[kLastProgressEventFired] === void 0 || Date.now() - fr[kLastProgressEventFired] >= 50) && !fr[kAborted]) { + fr[kLastProgressEventFired] = Date.now(); + queueMicrotask(() => { + fireAProgressEvent("progress", fr); + }); + } + chunkPromise = reader.read(); + } else if (done) { + queueMicrotask(() => { + fr[kState] = "done"; + try { + const result = packageData(bytes, type, blob.type, encodingName); + if (fr[kAborted]) { + return; + } + fr[kResult] = result; + fireAProgressEvent("load", fr); + } catch (error) { + fr[kError] = error; + fireAProgressEvent("error", fr); + } + if (fr[kState] !== "loading") { + fireAProgressEvent("loadend", fr); + } + }); + break; + } + } catch (error) { + if (fr[kAborted]) { + return; + } + queueMicrotask(() => { + fr[kState] = "done"; + fr[kError] = error; + fireAProgressEvent("error", fr); + if (fr[kState] !== "loading") { + fireAProgressEvent("loadend", fr); + } + }); + break; + } + } + })(); + } + function fireAProgressEvent(e, reader) { + const event = new ProgressEvent(e, { + bubbles: false, + cancelable: false + }); + reader.dispatchEvent(event); + } + function packageData(bytes, type, mimeType, encodingName) { + switch (type) { + case "DataURL": { + let dataURL = "data:"; + const parsed = parseMIMEType(mimeType || "application/octet-stream"); + if (parsed !== "failure") { + dataURL += serializeAMimeType(parsed); + } + dataURL += ";base64,"; + const decoder = new StringDecoder("latin1"); + for (const chunk of bytes) { + dataURL += btoa(decoder.write(chunk)); + } + dataURL += btoa(decoder.end()); + return dataURL; + } + case "Text": { + let encoding = "failure"; + if (encodingName) { + encoding = getEncoding(encodingName); + } + if (encoding === "failure" && mimeType) { + const type2 = parseMIMEType(mimeType); + if (type2 !== "failure") { + encoding = getEncoding(type2.parameters.get("charset")); + } + } + if (encoding === "failure") { + encoding = "UTF-8"; + } + return decode(bytes, encoding); + } + case "ArrayBuffer": { + const sequence = combineByteSequences(bytes); + return sequence.buffer; + } + case "BinaryString": { + let binaryString = ""; + const decoder = new StringDecoder("latin1"); + for (const chunk of bytes) { + binaryString += decoder.write(chunk); + } + binaryString += decoder.end(); + return binaryString; + } + } + } + function decode(ioQueue, encoding) { + const bytes = combineByteSequences(ioQueue); + const BOMEncoding = BOMSniffing(bytes); + let slice = 0; + if (BOMEncoding !== null) { + encoding = BOMEncoding; + slice = BOMEncoding === "UTF-8" ? 3 : 2; + } + const sliced = bytes.slice(slice); + return new TextDecoder(encoding).decode(sliced); + } + function BOMSniffing(ioQueue) { + const [a, b, c] = ioQueue; + if (a === 239 && b === 187 && c === 191) { + return "UTF-8"; + } else if (a === 254 && b === 255) { + return "UTF-16BE"; + } else if (a === 255 && b === 254) { + return "UTF-16LE"; + } + return null; + } + function combineByteSequences(sequences) { + const size = sequences.reduce((a, b) => { + return a + b.byteLength; + }, 0); + let offset = 0; + return sequences.reduce((a, b) => { + a.set(b, offset); + offset += b.byteLength; + return a; + }, new Uint8Array(size)); + } + module2.exports = { + staticPropertyDescriptors, + readOperation, + fireAProgressEvent + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/filereader.js +var require_filereader = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/filereader.js"(exports, module2) { + "use strict"; + var { + staticPropertyDescriptors, + readOperation, + fireAProgressEvent + } = require_util4(); + var { + kState, + kError, + kResult, + kEvents, + kAborted + } = require_symbols3(); + var { webidl } = require_webidl(); + var { kEnumerableProperty } = require_util(); + var FileReader = class _FileReader extends EventTarget { + constructor() { + super(); + this[kState] = "empty"; + this[kResult] = null; + this[kError] = null; + this[kEvents] = { + loadend: null, + error: null, + abort: null, + load: null, + progress: null, + loadstart: null + }; + } + /** + * @see https://w3c.github.io/FileAPI/#dfn-readAsArrayBuffer + * @param {import('buffer').Blob} blob + */ + readAsArrayBuffer(blob) { + webidl.brandCheck(this, _FileReader); + webidl.argumentLengthCheck(arguments, 1, { header: "FileReader.readAsArrayBuffer" }); + blob = webidl.converters.Blob(blob, { strict: false }); + readOperation(this, blob, "ArrayBuffer"); + } + /** + * @see https://w3c.github.io/FileAPI/#readAsBinaryString + * @param {import('buffer').Blob} blob + */ + readAsBinaryString(blob) { + webidl.brandCheck(this, _FileReader); + webidl.argumentLengthCheck(arguments, 1, { header: "FileReader.readAsBinaryString" }); + blob = webidl.converters.Blob(blob, { strict: false }); + readOperation(this, blob, "BinaryString"); + } + /** + * @see https://w3c.github.io/FileAPI/#readAsDataText + * @param {import('buffer').Blob} blob + * @param {string?} encoding + */ + readAsText(blob, encoding = void 0) { + webidl.brandCheck(this, _FileReader); + webidl.argumentLengthCheck(arguments, 1, { header: "FileReader.readAsText" }); + blob = webidl.converters.Blob(blob, { strict: false }); + if (encoding !== void 0) { + encoding = webidl.converters.DOMString(encoding); + } + readOperation(this, blob, "Text", encoding); + } + /** + * @see https://w3c.github.io/FileAPI/#dfn-readAsDataURL + * @param {import('buffer').Blob} blob + */ + readAsDataURL(blob) { + webidl.brandCheck(this, _FileReader); + webidl.argumentLengthCheck(arguments, 1, { header: "FileReader.readAsDataURL" }); + blob = webidl.converters.Blob(blob, { strict: false }); + readOperation(this, blob, "DataURL"); + } + /** + * @see https://w3c.github.io/FileAPI/#dfn-abort + */ + abort() { + if (this[kState] === "empty" || this[kState] === "done") { + this[kResult] = null; + return; + } + if (this[kState] === "loading") { + this[kState] = "done"; + this[kResult] = null; + } + this[kAborted] = true; + fireAProgressEvent("abort", this); + if (this[kState] !== "loading") { + fireAProgressEvent("loadend", this); + } + } + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-readystate + */ + get readyState() { + webidl.brandCheck(this, _FileReader); + switch (this[kState]) { + case "empty": + return this.EMPTY; + case "loading": + return this.LOADING; + case "done": + return this.DONE; + } + } + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-result + */ + get result() { + webidl.brandCheck(this, _FileReader); + return this[kResult]; + } + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-error + */ + get error() { + webidl.brandCheck(this, _FileReader); + return this[kError]; + } + get onloadend() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].loadend; + } + set onloadend(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].loadend) { + this.removeEventListener("loadend", this[kEvents].loadend); + } + if (typeof fn === "function") { + this[kEvents].loadend = fn; + this.addEventListener("loadend", fn); + } else { + this[kEvents].loadend = null; + } + } + get onerror() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].error; + } + set onerror(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].error) { + this.removeEventListener("error", this[kEvents].error); + } + if (typeof fn === "function") { + this[kEvents].error = fn; + this.addEventListener("error", fn); + } else { + this[kEvents].error = null; + } + } + get onloadstart() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].loadstart; + } + set onloadstart(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].loadstart) { + this.removeEventListener("loadstart", this[kEvents].loadstart); + } + if (typeof fn === "function") { + this[kEvents].loadstart = fn; + this.addEventListener("loadstart", fn); + } else { + this[kEvents].loadstart = null; + } + } + get onprogress() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].progress; + } + set onprogress(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].progress) { + this.removeEventListener("progress", this[kEvents].progress); + } + if (typeof fn === "function") { + this[kEvents].progress = fn; + this.addEventListener("progress", fn); + } else { + this[kEvents].progress = null; + } + } + get onload() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].load; + } + set onload(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].load) { + this.removeEventListener("load", this[kEvents].load); + } + if (typeof fn === "function") { + this[kEvents].load = fn; + this.addEventListener("load", fn); + } else { + this[kEvents].load = null; + } + } + get onabort() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].abort; + } + set onabort(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].abort) { + this.removeEventListener("abort", this[kEvents].abort); + } + if (typeof fn === "function") { + this[kEvents].abort = fn; + this.addEventListener("abort", fn); + } else { + this[kEvents].abort = null; + } + } + }; + FileReader.EMPTY = FileReader.prototype.EMPTY = 0; + FileReader.LOADING = FileReader.prototype.LOADING = 1; + FileReader.DONE = FileReader.prototype.DONE = 2; + Object.defineProperties(FileReader.prototype, { + EMPTY: staticPropertyDescriptors, + LOADING: staticPropertyDescriptors, + DONE: staticPropertyDescriptors, + readAsArrayBuffer: kEnumerableProperty, + readAsBinaryString: kEnumerableProperty, + readAsText: kEnumerableProperty, + readAsDataURL: kEnumerableProperty, + abort: kEnumerableProperty, + readyState: kEnumerableProperty, + result: kEnumerableProperty, + error: kEnumerableProperty, + onloadstart: kEnumerableProperty, + onprogress: kEnumerableProperty, + onload: kEnumerableProperty, + onabort: kEnumerableProperty, + onerror: kEnumerableProperty, + onloadend: kEnumerableProperty, + [Symbol.toStringTag]: { + value: "FileReader", + writable: false, + enumerable: false, + configurable: true + } + }); + Object.defineProperties(FileReader, { + EMPTY: staticPropertyDescriptors, + LOADING: staticPropertyDescriptors, + DONE: staticPropertyDescriptors + }); + module2.exports = { + FileReader + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cache/symbols.js +var require_symbols4 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cache/symbols.js"(exports, module2) { + "use strict"; + module2.exports = { + kConstruct: Symbol("constructable") + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cache/util.js +var require_util5 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cache/util.js"(exports, module2) { + "use strict"; + var assert = require("assert"); + var { URLSerializer } = require_dataURL(); + var { isValidHeaderName } = require_util2(); + function urlEquals(A, B, excludeFragment = false) { + const serializedA = URLSerializer(A, excludeFragment); + const serializedB = URLSerializer(B, excludeFragment); + return serializedA === serializedB; + } + function fieldValues(header) { + assert(header !== null); + const values = []; + for (let value of header.split(",")) { + value = value.trim(); + if (!value.length) { + continue; + } else if (!isValidHeaderName(value)) { + continue; + } + values.push(value); + } + return values; + } + module2.exports = { + urlEquals, + fieldValues + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cache/cache.js +var require_cache = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cache/cache.js"(exports, module2) { + "use strict"; + var { kConstruct } = require_symbols4(); + var { urlEquals, fieldValues: getFieldValues } = require_util5(); + var { kEnumerableProperty, isDisturbed } = require_util(); + var { kHeadersList } = require_symbols(); + var { webidl } = require_webidl(); + var { Response, cloneResponse } = require_response(); + var { Request } = require_request2(); + var { kState, kHeaders, kGuard, kRealm } = require_symbols2(); + var { fetching } = require_fetch(); + var { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = require_util2(); + var assert = require("assert"); + var { getGlobalDispatcher } = require_global2(); + var _relevantRequestResponseList, _batchCacheOperations, batchCacheOperations_fn, _queryCache, queryCache_fn, _requestMatchesCachedItem, requestMatchesCachedItem_fn; + var _Cache = class _Cache { + constructor() { + /** + * @see https://w3c.github.io/ServiceWorker/#batch-cache-operations-algorithm + * @param {CacheBatchOperation[]} operations + * @returns {requestResponseList} + */ + __privateAdd(this, _batchCacheOperations); + /** + * @see https://w3c.github.io/ServiceWorker/#query-cache + * @param {any} requestQuery + * @param {import('../../types/cache').CacheQueryOptions} options + * @param {requestResponseList} targetStorage + * @returns {requestResponseList} + */ + __privateAdd(this, _queryCache); + /** + * @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm + * @param {any} requestQuery + * @param {any} request + * @param {any | null} response + * @param {import('../../types/cache').CacheQueryOptions | undefined} options + * @returns {boolean} + */ + __privateAdd(this, _requestMatchesCachedItem); + /** + * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list + * @type {requestResponseList} + */ + __privateAdd(this, _relevantRequestResponseList, void 0); + if (arguments[0] !== kConstruct) { + webidl.illegalConstructor(); + } + __privateSet(this, _relevantRequestResponseList, arguments[1]); + } + async match(request3, options = {}) { + webidl.brandCheck(this, _Cache); + webidl.argumentLengthCheck(arguments, 1, { header: "Cache.match" }); + request3 = webidl.converters.RequestInfo(request3); + options = webidl.converters.CacheQueryOptions(options); + const p = await this.matchAll(request3, options); + if (p.length === 0) { + return; + } + return p[0]; + } + async matchAll(request3 = void 0, options = {}) { + var _a; + webidl.brandCheck(this, _Cache); + if (request3 !== void 0) + request3 = webidl.converters.RequestInfo(request3); + options = webidl.converters.CacheQueryOptions(options); + let r = null; + if (request3 !== void 0) { + if (request3 instanceof Request) { + r = request3[kState]; + if (r.method !== "GET" && !options.ignoreMethod) { + return []; + } + } else if (typeof request3 === "string") { + r = new Request(request3)[kState]; + } + } + const responses = []; + if (request3 === void 0) { + for (const requestResponse of __privateGet(this, _relevantRequestResponseList)) { + responses.push(requestResponse[1]); + } + } else { + const requestResponses = __privateMethod(this, _queryCache, queryCache_fn).call(this, r, options); + for (const requestResponse of requestResponses) { + responses.push(requestResponse[1]); + } + } + const responseList = []; + for (const response of responses) { + const responseObject = new Response(((_a = response.body) == null ? void 0 : _a.source) ?? null); + const body = responseObject[kState].body; + responseObject[kState] = response; + responseObject[kState].body = body; + responseObject[kHeaders][kHeadersList] = response.headersList; + responseObject[kHeaders][kGuard] = "immutable"; + responseList.push(responseObject); + } + return Object.freeze(responseList); + } + async add(request3) { + webidl.brandCheck(this, _Cache); + webidl.argumentLengthCheck(arguments, 1, { header: "Cache.add" }); + request3 = webidl.converters.RequestInfo(request3); + const requests = [request3]; + const responseArrayPromise = this.addAll(requests); + return await responseArrayPromise; + } + async addAll(requests) { + webidl.brandCheck(this, _Cache); + webidl.argumentLengthCheck(arguments, 1, { header: "Cache.addAll" }); + requests = webidl.converters["sequence"](requests); + const responsePromises = []; + const requestList = []; + for (const request3 of requests) { + if (typeof request3 === "string") { + continue; + } + const r = request3[kState]; + if (!urlIsHttpHttpsScheme(r.url) || r.method !== "GET") { + throw webidl.errors.exception({ + header: "Cache.addAll", + message: "Expected http/s scheme when method is not GET." + }); + } + } + const fetchControllers = []; + for (const request3 of requests) { + const r = new Request(request3)[kState]; + if (!urlIsHttpHttpsScheme(r.url)) { + throw webidl.errors.exception({ + header: "Cache.addAll", + message: "Expected http/s scheme." + }); + } + r.initiator = "fetch"; + r.destination = "subresource"; + requestList.push(r); + const responsePromise = createDeferredPromise(); + fetchControllers.push(fetching({ + request: r, + dispatcher: getGlobalDispatcher(), + processResponse(response) { + if (response.type === "error" || response.status === 206 || response.status < 200 || response.status > 299) { + responsePromise.reject(webidl.errors.exception({ + header: "Cache.addAll", + message: "Received an invalid status code or the request failed." + })); + } else if (response.headersList.contains("vary")) { + const fieldValues = getFieldValues(response.headersList.get("vary")); + for (const fieldValue of fieldValues) { + if (fieldValue === "*") { + responsePromise.reject(webidl.errors.exception({ + header: "Cache.addAll", + message: "invalid vary field value" + })); + for (const controller of fetchControllers) { + controller.abort(); + } + return; + } + } + } + }, + processResponseEndOfBody(response) { + if (response.aborted) { + responsePromise.reject(new DOMException("aborted", "AbortError")); + return; + } + responsePromise.resolve(response); + } + })); + responsePromises.push(responsePromise.promise); + } + const p = Promise.all(responsePromises); + const responses = await p; + const operations = []; + let index = 0; + for (const response of responses) { + const operation = { + type: "put", + // 7.3.2 + request: requestList[index], + // 7.3.3 + response + // 7.3.4 + }; + operations.push(operation); + index++; + } + const cacheJobPromise = createDeferredPromise(); + let errorData = null; + try { + __privateMethod(this, _batchCacheOperations, batchCacheOperations_fn).call(this, operations); + } catch (e) { + errorData = e; + } + queueMicrotask(() => { + if (errorData === null) { + cacheJobPromise.resolve(void 0); + } else { + cacheJobPromise.reject(errorData); + } + }); + return cacheJobPromise.promise; + } + async put(request3, response) { + webidl.brandCheck(this, _Cache); + webidl.argumentLengthCheck(arguments, 2, { header: "Cache.put" }); + request3 = webidl.converters.RequestInfo(request3); + response = webidl.converters.Response(response); + let innerRequest = null; + if (request3 instanceof Request) { + innerRequest = request3[kState]; + } else { + innerRequest = new Request(request3)[kState]; + } + if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== "GET") { + throw webidl.errors.exception({ + header: "Cache.put", + message: "Expected an http/s scheme when method is not GET" + }); + } + const innerResponse = response[kState]; + if (innerResponse.status === 206) { + throw webidl.errors.exception({ + header: "Cache.put", + message: "Got 206 status" + }); + } + if (innerResponse.headersList.contains("vary")) { + const fieldValues = getFieldValues(innerResponse.headersList.get("vary")); + for (const fieldValue of fieldValues) { + if (fieldValue === "*") { + throw webidl.errors.exception({ + header: "Cache.put", + message: "Got * vary field value" + }); + } + } + } + if (innerResponse.body && (isDisturbed(innerResponse.body.stream) || innerResponse.body.stream.locked)) { + throw webidl.errors.exception({ + header: "Cache.put", + message: "Response body is locked or disturbed" + }); + } + const clonedResponse = cloneResponse(innerResponse); + const bodyReadPromise = createDeferredPromise(); + if (innerResponse.body != null) { + const stream = innerResponse.body.stream; + const reader = stream.getReader(); + readAllBytes(reader).then(bodyReadPromise.resolve, bodyReadPromise.reject); + } else { + bodyReadPromise.resolve(void 0); + } + const operations = []; + const operation = { + type: "put", + // 14. + request: innerRequest, + // 15. + response: clonedResponse + // 16. + }; + operations.push(operation); + const bytes = await bodyReadPromise.promise; + if (clonedResponse.body != null) { + clonedResponse.body.source = bytes; + } + const cacheJobPromise = createDeferredPromise(); + let errorData = null; + try { + __privateMethod(this, _batchCacheOperations, batchCacheOperations_fn).call(this, operations); + } catch (e) { + errorData = e; + } + queueMicrotask(() => { + if (errorData === null) { + cacheJobPromise.resolve(); + } else { + cacheJobPromise.reject(errorData); + } + }); + return cacheJobPromise.promise; + } + async delete(request3, options = {}) { + webidl.brandCheck(this, _Cache); + webidl.argumentLengthCheck(arguments, 1, { header: "Cache.delete" }); + request3 = webidl.converters.RequestInfo(request3); + options = webidl.converters.CacheQueryOptions(options); + let r = null; + if (request3 instanceof Request) { + r = request3[kState]; + if (r.method !== "GET" && !options.ignoreMethod) { + return false; + } + } else { + assert(typeof request3 === "string"); + r = new Request(request3)[kState]; + } + const operations = []; + const operation = { + type: "delete", + request: r, + options + }; + operations.push(operation); + const cacheJobPromise = createDeferredPromise(); + let errorData = null; + let requestResponses; + try { + requestResponses = __privateMethod(this, _batchCacheOperations, batchCacheOperations_fn).call(this, operations); + } catch (e) { + errorData = e; + } + queueMicrotask(() => { + if (errorData === null) { + cacheJobPromise.resolve(!!(requestResponses == null ? void 0 : requestResponses.length)); + } else { + cacheJobPromise.reject(errorData); + } + }); + return cacheJobPromise.promise; + } + /** + * @see https://w3c.github.io/ServiceWorker/#dom-cache-keys + * @param {any} request + * @param {import('../../types/cache').CacheQueryOptions} options + * @returns {readonly Request[]} + */ + async keys(request3 = void 0, options = {}) { + webidl.brandCheck(this, _Cache); + if (request3 !== void 0) + request3 = webidl.converters.RequestInfo(request3); + options = webidl.converters.CacheQueryOptions(options); + let r = null; + if (request3 !== void 0) { + if (request3 instanceof Request) { + r = request3[kState]; + if (r.method !== "GET" && !options.ignoreMethod) { + return []; + } + } else if (typeof request3 === "string") { + r = new Request(request3)[kState]; + } + } + const promise = createDeferredPromise(); + const requests = []; + if (request3 === void 0) { + for (const requestResponse of __privateGet(this, _relevantRequestResponseList)) { + requests.push(requestResponse[0]); + } + } else { + const requestResponses = __privateMethod(this, _queryCache, queryCache_fn).call(this, r, options); + for (const requestResponse of requestResponses) { + requests.push(requestResponse[0]); + } + } + queueMicrotask(() => { + const requestList = []; + for (const request4 of requests) { + const requestObject = new Request("https://a"); + requestObject[kState] = request4; + requestObject[kHeaders][kHeadersList] = request4.headersList; + requestObject[kHeaders][kGuard] = "immutable"; + requestObject[kRealm] = request4.client; + requestList.push(requestObject); + } + promise.resolve(Object.freeze(requestList)); + }); + return promise.promise; + } + }; + _relevantRequestResponseList = new WeakMap(); + _batchCacheOperations = new WeakSet(); + batchCacheOperations_fn = function(operations) { + const cache = __privateGet(this, _relevantRequestResponseList); + const backupCache = [...cache]; + const addedItems = []; + const resultList = []; + try { + for (const operation of operations) { + if (operation.type !== "delete" && operation.type !== "put") { + throw webidl.errors.exception({ + header: "Cache.#batchCacheOperations", + message: 'operation type does not match "delete" or "put"' + }); + } + if (operation.type === "delete" && operation.response != null) { + throw webidl.errors.exception({ + header: "Cache.#batchCacheOperations", + message: "delete operation should not have an associated response" + }); + } + if (__privateMethod(this, _queryCache, queryCache_fn).call(this, operation.request, operation.options, addedItems).length) { + throw new DOMException("???", "InvalidStateError"); + } + let requestResponses; + if (operation.type === "delete") { + requestResponses = __privateMethod(this, _queryCache, queryCache_fn).call(this, operation.request, operation.options); + if (requestResponses.length === 0) { + return []; + } + for (const requestResponse of requestResponses) { + const idx = cache.indexOf(requestResponse); + assert(idx !== -1); + cache.splice(idx, 1); + } + } else if (operation.type === "put") { + if (operation.response == null) { + throw webidl.errors.exception({ + header: "Cache.#batchCacheOperations", + message: "put operation should have an associated response" + }); + } + const r = operation.request; + if (!urlIsHttpHttpsScheme(r.url)) { + throw webidl.errors.exception({ + header: "Cache.#batchCacheOperations", + message: "expected http or https scheme" + }); + } + if (r.method !== "GET") { + throw webidl.errors.exception({ + header: "Cache.#batchCacheOperations", + message: "not get method" + }); + } + if (operation.options != null) { + throw webidl.errors.exception({ + header: "Cache.#batchCacheOperations", + message: "options must not be defined" + }); + } + requestResponses = __privateMethod(this, _queryCache, queryCache_fn).call(this, operation.request); + for (const requestResponse of requestResponses) { + const idx = cache.indexOf(requestResponse); + assert(idx !== -1); + cache.splice(idx, 1); + } + cache.push([operation.request, operation.response]); + addedItems.push([operation.request, operation.response]); + } + resultList.push([operation.request, operation.response]); + } + return resultList; + } catch (e) { + __privateGet(this, _relevantRequestResponseList).length = 0; + __privateSet(this, _relevantRequestResponseList, backupCache); + throw e; + } + }; + _queryCache = new WeakSet(); + queryCache_fn = function(requestQuery, options, targetStorage) { + const resultList = []; + const storage = targetStorage ?? __privateGet(this, _relevantRequestResponseList); + for (const requestResponse of storage) { + const [cachedRequest, cachedResponse] = requestResponse; + if (__privateMethod(this, _requestMatchesCachedItem, requestMatchesCachedItem_fn).call(this, requestQuery, cachedRequest, cachedResponse, options)) { + resultList.push(requestResponse); + } + } + return resultList; + }; + _requestMatchesCachedItem = new WeakSet(); + requestMatchesCachedItem_fn = function(requestQuery, request3, response = null, options) { + const queryURL = new URL(requestQuery.url); + const cachedURL = new URL(request3.url); + if (options == null ? void 0 : options.ignoreSearch) { + cachedURL.search = ""; + queryURL.search = ""; + } + if (!urlEquals(queryURL, cachedURL, true)) { + return false; + } + if (response == null || (options == null ? void 0 : options.ignoreVary) || !response.headersList.contains("vary")) { + return true; + } + const fieldValues = getFieldValues(response.headersList.get("vary")); + for (const fieldValue of fieldValues) { + if (fieldValue === "*") { + return false; + } + const requestValue = request3.headersList.get(fieldValue); + const queryValue = requestQuery.headersList.get(fieldValue); + if (requestValue !== queryValue) { + return false; + } + } + return true; + }; + var Cache = _Cache; + Object.defineProperties(Cache.prototype, { + [Symbol.toStringTag]: { + value: "Cache", + configurable: true + }, + match: kEnumerableProperty, + matchAll: kEnumerableProperty, + add: kEnumerableProperty, + addAll: kEnumerableProperty, + put: kEnumerableProperty, + delete: kEnumerableProperty, + keys: kEnumerableProperty + }); + var cacheQueryOptionConverters = [ + { + key: "ignoreSearch", + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: "ignoreMethod", + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: "ignoreVary", + converter: webidl.converters.boolean, + defaultValue: false + } + ]; + webidl.converters.CacheQueryOptions = webidl.dictionaryConverter(cacheQueryOptionConverters); + webidl.converters.MultiCacheQueryOptions = webidl.dictionaryConverter([ + ...cacheQueryOptionConverters, + { + key: "cacheName", + converter: webidl.converters.DOMString + } + ]); + webidl.converters.Response = webidl.interfaceConverter(Response); + webidl.converters["sequence"] = webidl.sequenceConverter( + webidl.converters.RequestInfo + ); + module2.exports = { + Cache + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cache/cachestorage.js +var require_cachestorage = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cache/cachestorage.js"(exports, module2) { + "use strict"; + var { kConstruct } = require_symbols4(); + var { Cache } = require_cache(); + var { webidl } = require_webidl(); + var { kEnumerableProperty } = require_util(); + var _caches; + var _CacheStorage = class _CacheStorage { + constructor() { + /** + * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-name-to-cache-map + * @type {Map} + */ + async has(cacheName) { + webidl.brandCheck(this, _CacheStorage); + webidl.argumentLengthCheck(arguments, 1, { header: "CacheStorage.has" }); + cacheName = webidl.converters.DOMString(cacheName); + return __privateGet(this, _caches).has(cacheName); + } + /** + * @see https://w3c.github.io/ServiceWorker/#dom-cachestorage-open + * @param {string} cacheName + * @returns {Promise} + */ + async open(cacheName) { + webidl.brandCheck(this, _CacheStorage); + webidl.argumentLengthCheck(arguments, 1, { header: "CacheStorage.open" }); + cacheName = webidl.converters.DOMString(cacheName); + if (__privateGet(this, _caches).has(cacheName)) { + const cache2 = __privateGet(this, _caches).get(cacheName); + return new Cache(kConstruct, cache2); + } + const cache = []; + __privateGet(this, _caches).set(cacheName, cache); + return new Cache(kConstruct, cache); + } + /** + * @see https://w3c.github.io/ServiceWorker/#cache-storage-delete + * @param {string} cacheName + * @returns {Promise} + */ + async delete(cacheName) { + webidl.brandCheck(this, _CacheStorage); + webidl.argumentLengthCheck(arguments, 1, { header: "CacheStorage.delete" }); + cacheName = webidl.converters.DOMString(cacheName); + return __privateGet(this, _caches).delete(cacheName); + } + /** + * @see https://w3c.github.io/ServiceWorker/#cache-storage-keys + * @returns {string[]} + */ + async keys() { + webidl.brandCheck(this, _CacheStorage); + const keys = __privateGet(this, _caches).keys(); + return [...keys]; + } + }; + _caches = new WeakMap(); + var CacheStorage = _CacheStorage; + Object.defineProperties(CacheStorage.prototype, { + [Symbol.toStringTag]: { + value: "CacheStorage", + configurable: true + }, + match: kEnumerableProperty, + has: kEnumerableProperty, + open: kEnumerableProperty, + delete: kEnumerableProperty, + keys: kEnumerableProperty + }); + module2.exports = { + CacheStorage + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cookies/constants.js +var require_constants3 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cookies/constants.js"(exports, module2) { + "use strict"; + var maxAttributeValueSize = 1024; + var maxNameValuePairSize = 4096; + module2.exports = { + maxAttributeValueSize, + maxNameValuePairSize + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cookies/util.js +var require_util6 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cookies/util.js"(exports, module2) { + "use strict"; + var assert = require("assert"); + var { kHeadersList } = require_symbols(); + function isCTLExcludingHtab(value) { + if (value.length === 0) { + return false; + } + for (const char of value) { + const code = char.charCodeAt(0); + if (code >= 0 || code <= 8 || (code >= 10 || code <= 31) || code === 127) { + return false; + } + } + } + function validateCookieName(name) { + for (const char of name) { + const code = char.charCodeAt(0); + if (code <= 32 || code > 127 || char === "(" || char === ")" || char === ">" || char === "<" || char === "@" || char === "," || char === ";" || char === ":" || char === "\\" || char === '"' || char === "/" || char === "[" || char === "]" || char === "?" || char === "=" || char === "{" || char === "}") { + throw new Error("Invalid cookie name"); + } + } + } + function validateCookieValue(value) { + for (const char of value) { + const code = char.charCodeAt(0); + if (code < 33 || // exclude CTLs (0-31) + code === 34 || code === 44 || code === 59 || code === 92 || code > 126) { + throw new Error("Invalid header value"); + } + } + } + function validateCookiePath(path) { + for (const char of path) { + const code = char.charCodeAt(0); + if (code < 33 || char === ";") { + throw new Error("Invalid cookie path"); + } + } + } + function validateCookieDomain(domain) { + if (domain.startsWith("-") || domain.endsWith(".") || domain.endsWith("-")) { + throw new Error("Invalid cookie domain"); + } + } + function toIMFDate(date) { + if (typeof date === "number") { + date = new Date(date); + } + const days = [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ]; + const months = [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ]; + const dayName = days[date.getUTCDay()]; + const day = date.getUTCDate().toString().padStart(2, "0"); + const month = months[date.getUTCMonth()]; + const year = date.getUTCFullYear(); + const hour = date.getUTCHours().toString().padStart(2, "0"); + const minute = date.getUTCMinutes().toString().padStart(2, "0"); + const second = date.getUTCSeconds().toString().padStart(2, "0"); + return `${dayName}, ${day} ${month} ${year} ${hour}:${minute}:${second} GMT`; + } + function validateCookieMaxAge(maxAge) { + if (maxAge < 0) { + throw new Error("Invalid cookie max-age"); + } + } + function stringify(cookie) { + if (cookie.name.length === 0) { + return null; + } + validateCookieName(cookie.name); + validateCookieValue(cookie.value); + const out = [`${cookie.name}=${cookie.value}`]; + if (cookie.name.startsWith("__Secure-")) { + cookie.secure = true; + } + if (cookie.name.startsWith("__Host-")) { + cookie.secure = true; + cookie.domain = null; + cookie.path = "/"; + } + if (cookie.secure) { + out.push("Secure"); + } + if (cookie.httpOnly) { + out.push("HttpOnly"); + } + if (typeof cookie.maxAge === "number") { + validateCookieMaxAge(cookie.maxAge); + out.push(`Max-Age=${cookie.maxAge}`); + } + if (cookie.domain) { + validateCookieDomain(cookie.domain); + out.push(`Domain=${cookie.domain}`); + } + if (cookie.path) { + validateCookiePath(cookie.path); + out.push(`Path=${cookie.path}`); + } + if (cookie.expires && cookie.expires.toString() !== "Invalid Date") { + out.push(`Expires=${toIMFDate(cookie.expires)}`); + } + if (cookie.sameSite) { + out.push(`SameSite=${cookie.sameSite}`); + } + for (const part of cookie.unparsed) { + if (!part.includes("=")) { + throw new Error("Invalid unparsed"); + } + const [key, ...value] = part.split("="); + out.push(`${key.trim()}=${value.join("=")}`); + } + return out.join("; "); + } + var kHeadersListNode; + function getHeadersList(headers) { + if (headers[kHeadersList]) { + return headers[kHeadersList]; + } + if (!kHeadersListNode) { + kHeadersListNode = Object.getOwnPropertySymbols(headers).find( + (symbol) => symbol.description === "headers list" + ); + assert(kHeadersListNode, "Headers cannot be parsed"); + } + const headersList = headers[kHeadersListNode]; + assert(headersList); + return headersList; + } + module2.exports = { + isCTLExcludingHtab, + stringify, + getHeadersList + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cookies/parse.js +var require_parse = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cookies/parse.js"(exports, module2) { + "use strict"; + var { maxNameValuePairSize, maxAttributeValueSize } = require_constants3(); + var { isCTLExcludingHtab } = require_util6(); + var { collectASequenceOfCodePointsFast } = require_dataURL(); + var assert = require("assert"); + function parseSetCookie(header) { + if (isCTLExcludingHtab(header)) { + return null; + } + let nameValuePair = ""; + let unparsedAttributes = ""; + let name = ""; + let value = ""; + if (header.includes(";")) { + const position = { position: 0 }; + nameValuePair = collectASequenceOfCodePointsFast(";", header, position); + unparsedAttributes = header.slice(position.position); + } else { + nameValuePair = header; + } + if (!nameValuePair.includes("=")) { + value = nameValuePair; + } else { + const position = { position: 0 }; + name = collectASequenceOfCodePointsFast( + "=", + nameValuePair, + position + ); + value = nameValuePair.slice(position.position + 1); + } + name = name.trim(); + value = value.trim(); + if (name.length + value.length > maxNameValuePairSize) { + return null; + } + return { + name, + value, + ...parseUnparsedAttributes(unparsedAttributes) + }; + } + function parseUnparsedAttributes(unparsedAttributes, cookieAttributeList = {}) { + if (unparsedAttributes.length === 0) { + return cookieAttributeList; + } + assert(unparsedAttributes[0] === ";"); + unparsedAttributes = unparsedAttributes.slice(1); + let cookieAv = ""; + if (unparsedAttributes.includes(";")) { + cookieAv = collectASequenceOfCodePointsFast( + ";", + unparsedAttributes, + { position: 0 } + ); + unparsedAttributes = unparsedAttributes.slice(cookieAv.length); + } else { + cookieAv = unparsedAttributes; + unparsedAttributes = ""; + } + let attributeName = ""; + let attributeValue = ""; + if (cookieAv.includes("=")) { + const position = { position: 0 }; + attributeName = collectASequenceOfCodePointsFast( + "=", + cookieAv, + position + ); + attributeValue = cookieAv.slice(position.position + 1); + } else { + attributeName = cookieAv; + } + attributeName = attributeName.trim(); + attributeValue = attributeValue.trim(); + if (attributeValue.length > maxAttributeValueSize) { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); + } + const attributeNameLowercase = attributeName.toLowerCase(); + if (attributeNameLowercase === "expires") { + const expiryTime = new Date(attributeValue); + cookieAttributeList.expires = expiryTime; + } else if (attributeNameLowercase === "max-age") { + const charCode = attributeValue.charCodeAt(0); + if ((charCode < 48 || charCode > 57) && attributeValue[0] !== "-") { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); + } + if (!/^\d+$/.test(attributeValue)) { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); + } + const deltaSeconds = Number(attributeValue); + cookieAttributeList.maxAge = deltaSeconds; + } else if (attributeNameLowercase === "domain") { + let cookieDomain = attributeValue; + if (cookieDomain[0] === ".") { + cookieDomain = cookieDomain.slice(1); + } + cookieDomain = cookieDomain.toLowerCase(); + cookieAttributeList.domain = cookieDomain; + } else if (attributeNameLowercase === "path") { + let cookiePath = ""; + if (attributeValue.length === 0 || attributeValue[0] !== "/") { + cookiePath = "/"; + } else { + cookiePath = attributeValue; + } + cookieAttributeList.path = cookiePath; + } else if (attributeNameLowercase === "secure") { + cookieAttributeList.secure = true; + } else if (attributeNameLowercase === "httponly") { + cookieAttributeList.httpOnly = true; + } else if (attributeNameLowercase === "samesite") { + let enforcement = "Default"; + const attributeValueLowercase = attributeValue.toLowerCase(); + if (attributeValueLowercase.includes("none")) { + enforcement = "None"; + } + if (attributeValueLowercase.includes("strict")) { + enforcement = "Strict"; + } + if (attributeValueLowercase.includes("lax")) { + enforcement = "Lax"; + } + cookieAttributeList.sameSite = enforcement; + } else { + cookieAttributeList.unparsed ?? (cookieAttributeList.unparsed = []); + cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`); + } + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); + } + module2.exports = { + parseSetCookie, + parseUnparsedAttributes + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cookies/index.js +var require_cookies = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cookies/index.js"(exports, module2) { + "use strict"; + var { parseSetCookie } = require_parse(); + var { stringify, getHeadersList } = require_util6(); + var { webidl } = require_webidl(); + var { Headers } = require_headers(); + function getCookies(headers) { + webidl.argumentLengthCheck(arguments, 1, { header: "getCookies" }); + webidl.brandCheck(headers, Headers, { strict: false }); + const cookie = headers.get("cookie"); + const out = {}; + if (!cookie) { + return out; + } + for (const piece of cookie.split(";")) { + const [name, ...value] = piece.split("="); + out[name.trim()] = value.join("="); + } + return out; + } + function deleteCookie(headers, name, attributes) { + webidl.argumentLengthCheck(arguments, 2, { header: "deleteCookie" }); + webidl.brandCheck(headers, Headers, { strict: false }); + name = webidl.converters.DOMString(name); + attributes = webidl.converters.DeleteCookieAttributes(attributes); + setCookie(headers, { + name, + value: "", + expires: /* @__PURE__ */ new Date(0), + ...attributes + }); + } + function getSetCookies(headers) { + webidl.argumentLengthCheck(arguments, 1, { header: "getSetCookies" }); + webidl.brandCheck(headers, Headers, { strict: false }); + const cookies = getHeadersList(headers).cookies; + if (!cookies) { + return []; + } + return cookies.map((pair) => parseSetCookie(Array.isArray(pair) ? pair[1] : pair)); + } + function setCookie(headers, cookie) { + webidl.argumentLengthCheck(arguments, 2, { header: "setCookie" }); + webidl.brandCheck(headers, Headers, { strict: false }); + cookie = webidl.converters.Cookie(cookie); + const str = stringify(cookie); + if (str) { + headers.append("Set-Cookie", stringify(cookie)); + } + } + webidl.converters.DeleteCookieAttributes = webidl.dictionaryConverter([ + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: "path", + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: "domain", + defaultValue: null + } + ]); + webidl.converters.Cookie = webidl.dictionaryConverter([ + { + converter: webidl.converters.DOMString, + key: "name" + }, + { + converter: webidl.converters.DOMString, + key: "value" + }, + { + converter: webidl.nullableConverter((value) => { + if (typeof value === "number") { + return webidl.converters["unsigned long long"](value); + } + return new Date(value); + }), + key: "expires", + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters["long long"]), + key: "maxAge", + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: "domain", + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: "path", + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.boolean), + key: "secure", + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.boolean), + key: "httpOnly", + defaultValue: null + }, + { + converter: webidl.converters.USVString, + key: "sameSite", + allowedValues: ["Strict", "Lax", "None"] + }, + { + converter: webidl.sequenceConverter(webidl.converters.DOMString), + key: "unparsed", + defaultValue: [] + } + ]); + module2.exports = { + getCookies, + deleteCookie, + getSetCookies, + setCookie + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/constants.js +var require_constants4 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/constants.js"(exports, module2) { + "use strict"; + var uid = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"; + var staticPropertyDescriptors = { + enumerable: true, + writable: false, + configurable: false + }; + var states = { + CONNECTING: 0, + OPEN: 1, + CLOSING: 2, + CLOSED: 3 + }; + var opcodes = { + CONTINUATION: 0, + TEXT: 1, + BINARY: 2, + CLOSE: 8, + PING: 9, + PONG: 10 + }; + var maxUnsigned16Bit = 2 ** 16 - 1; + var parserStates = { + INFO: 0, + PAYLOADLENGTH_16: 2, + PAYLOADLENGTH_64: 3, + READ_DATA: 4 + }; + var emptyBuffer = Buffer.allocUnsafe(0); + module2.exports = { + uid, + staticPropertyDescriptors, + states, + opcodes, + maxUnsigned16Bit, + parserStates, + emptyBuffer + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/symbols.js +var require_symbols5 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/symbols.js"(exports, module2) { + "use strict"; + module2.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") + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/events.js +var require_events = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/events.js"(exports, module2) { + "use strict"; + var { webidl } = require_webidl(); + var { kEnumerableProperty } = require_util(); + var { MessagePort } = require("worker_threads"); + var _eventInit; + var _MessageEvent = class _MessageEvent extends Event { + constructor(type, eventInitDict = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: "MessageEvent constructor" }); + type = webidl.converters.DOMString(type); + eventInitDict = webidl.converters.MessageEventInit(eventInitDict); + super(type, eventInitDict); + __privateAdd(this, _eventInit, void 0); + __privateSet(this, _eventInit, eventInitDict); + } + get data() { + webidl.brandCheck(this, _MessageEvent); + return __privateGet(this, _eventInit).data; + } + get origin() { + webidl.brandCheck(this, _MessageEvent); + return __privateGet(this, _eventInit).origin; + } + get lastEventId() { + webidl.brandCheck(this, _MessageEvent); + return __privateGet(this, _eventInit).lastEventId; + } + get source() { + webidl.brandCheck(this, _MessageEvent); + return __privateGet(this, _eventInit).source; + } + get ports() { + webidl.brandCheck(this, _MessageEvent); + if (!Object.isFrozen(__privateGet(this, _eventInit).ports)) { + Object.freeze(__privateGet(this, _eventInit).ports); + } + return __privateGet(this, _eventInit).ports; + } + initMessageEvent(type, bubbles = false, cancelable = false, data = null, origin = "", lastEventId = "", source2 = null, ports = []) { + webidl.brandCheck(this, _MessageEvent); + webidl.argumentLengthCheck(arguments, 1, { header: "MessageEvent.initMessageEvent" }); + return new _MessageEvent(type, { + bubbles, + cancelable, + data, + origin, + lastEventId, + source: source2, + ports + }); + } + }; + _eventInit = new WeakMap(); + var MessageEvent = _MessageEvent; + var _eventInit2; + var _CloseEvent = class _CloseEvent extends Event { + constructor(type, eventInitDict = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: "CloseEvent constructor" }); + type = webidl.converters.DOMString(type); + eventInitDict = webidl.converters.CloseEventInit(eventInitDict); + super(type, eventInitDict); + __privateAdd(this, _eventInit2, void 0); + __privateSet(this, _eventInit2, eventInitDict); + } + get wasClean() { + webidl.brandCheck(this, _CloseEvent); + return __privateGet(this, _eventInit2).wasClean; + } + get code() { + webidl.brandCheck(this, _CloseEvent); + return __privateGet(this, _eventInit2).code; + } + get reason() { + webidl.brandCheck(this, _CloseEvent); + return __privateGet(this, _eventInit2).reason; + } + }; + _eventInit2 = new WeakMap(); + var CloseEvent = _CloseEvent; + var _eventInit3; + var _ErrorEvent = class _ErrorEvent extends Event { + constructor(type, eventInitDict) { + webidl.argumentLengthCheck(arguments, 1, { header: "ErrorEvent constructor" }); + super(type, eventInitDict); + __privateAdd(this, _eventInit3, void 0); + type = webidl.converters.DOMString(type); + eventInitDict = webidl.converters.ErrorEventInit(eventInitDict ?? {}); + __privateSet(this, _eventInit3, eventInitDict); + } + get message() { + webidl.brandCheck(this, _ErrorEvent); + return __privateGet(this, _eventInit3).message; + } + get filename() { + webidl.brandCheck(this, _ErrorEvent); + return __privateGet(this, _eventInit3).filename; + } + get lineno() { + webidl.brandCheck(this, _ErrorEvent); + return __privateGet(this, _eventInit3).lineno; + } + get colno() { + webidl.brandCheck(this, _ErrorEvent); + return __privateGet(this, _eventInit3).colno; + } + get error() { + webidl.brandCheck(this, _ErrorEvent); + return __privateGet(this, _eventInit3).error; + } + }; + _eventInit3 = new WeakMap(); + var ErrorEvent = _ErrorEvent; + Object.defineProperties(MessageEvent.prototype, { + [Symbol.toStringTag]: { + value: "MessageEvent", + configurable: true + }, + data: kEnumerableProperty, + origin: kEnumerableProperty, + lastEventId: kEnumerableProperty, + source: kEnumerableProperty, + ports: kEnumerableProperty, + initMessageEvent: kEnumerableProperty + }); + Object.defineProperties(CloseEvent.prototype, { + [Symbol.toStringTag]: { + value: "CloseEvent", + configurable: true + }, + reason: kEnumerableProperty, + code: kEnumerableProperty, + wasClean: kEnumerableProperty + }); + Object.defineProperties(ErrorEvent.prototype, { + [Symbol.toStringTag]: { + value: "ErrorEvent", + configurable: true + }, + message: kEnumerableProperty, + filename: kEnumerableProperty, + lineno: kEnumerableProperty, + colno: kEnumerableProperty, + error: kEnumerableProperty + }); + webidl.converters.MessagePort = webidl.interfaceConverter(MessagePort); + webidl.converters["sequence"] = webidl.sequenceConverter( + webidl.converters.MessagePort + ); + var eventInit = [ + { + key: "bubbles", + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: "cancelable", + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: "composed", + converter: webidl.converters.boolean, + defaultValue: false + } + ]; + webidl.converters.MessageEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: "data", + converter: webidl.converters.any, + defaultValue: null + }, + { + key: "origin", + converter: webidl.converters.USVString, + defaultValue: "" + }, + { + key: "lastEventId", + converter: webidl.converters.DOMString, + defaultValue: "" + }, + { + key: "source", + // Node doesn't implement WindowProxy or ServiceWorker, so the only + // valid value for source is a MessagePort. + converter: webidl.nullableConverter(webidl.converters.MessagePort), + defaultValue: null + }, + { + key: "ports", + converter: webidl.converters["sequence"], + get defaultValue() { + return []; + } + } + ]); + webidl.converters.CloseEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: "wasClean", + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: "code", + converter: webidl.converters["unsigned short"], + defaultValue: 0 + }, + { + key: "reason", + converter: webidl.converters.USVString, + defaultValue: "" + } + ]); + webidl.converters.ErrorEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: "message", + converter: webidl.converters.DOMString, + defaultValue: "" + }, + { + key: "filename", + converter: webidl.converters.USVString, + defaultValue: "" + }, + { + key: "lineno", + converter: webidl.converters["unsigned long"], + defaultValue: 0 + }, + { + key: "colno", + converter: webidl.converters["unsigned long"], + defaultValue: 0 + }, + { + key: "error", + converter: webidl.converters.any + } + ]); + module2.exports = { + MessageEvent, + CloseEvent, + ErrorEvent + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/util.js +var require_util7 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/util.js"(exports, module2) { + "use strict"; + var { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = require_symbols5(); + var { states, opcodes } = require_constants4(); + var { MessageEvent, ErrorEvent } = require_events(); + function isEstablished(ws) { + return ws[kReadyState] === states.OPEN; + } + function isClosing(ws) { + return ws[kReadyState] === states.CLOSING; + } + function isClosed(ws) { + return ws[kReadyState] === states.CLOSED; + } + function fireEvent(e, target, eventConstructor = Event, eventInitDict) { + const event = new eventConstructor(e, eventInitDict); + target.dispatchEvent(event); + } + function websocketMessageReceived(ws, type, data) { + if (ws[kReadyState] !== states.OPEN) { + return; + } + let dataForEvent; + if (type === opcodes.TEXT) { + try { + dataForEvent = new TextDecoder("utf-8", { fatal: true }).decode(data); + } catch { + failWebsocketConnection(ws, "Received invalid UTF-8 in text frame."); + return; + } + } else if (type === opcodes.BINARY) { + if (ws[kBinaryType] === "blob") { + dataForEvent = new Blob([data]); + } else { + dataForEvent = new Uint8Array(data).buffer; + } + } + fireEvent("message", ws, MessageEvent, { + origin: ws[kWebSocketURL].origin, + data: dataForEvent + }); + } + function isValidSubprotocol(protocol) { + if (protocol.length === 0) { + return false; + } + for (const char of protocol) { + const code = char.charCodeAt(0); + if (code < 33 || code > 126 || char === "(" || char === ")" || char === "<" || char === ">" || char === "@" || char === "," || char === ";" || char === ":" || char === "\\" || char === '"' || char === "/" || char === "[" || char === "]" || char === "?" || char === "=" || char === "{" || char === "}" || code === 32 || // SP + code === 9) { + return false; + } + } + return true; + } + function isValidStatusCode(code) { + if (code >= 1e3 && code < 1015) { + return code !== 1004 && // reserved + code !== 1005 && // "MUST NOT be set as a status code" + code !== 1006; + } + return code >= 3e3 && code <= 4999; + } + function failWebsocketConnection(ws, reason) { + const { [kController]: controller, [kResponse]: response } = ws; + controller.abort(); + if ((response == null ? void 0 : response.socket) && !response.socket.destroyed) { + response.socket.destroy(); + } + if (reason) { + fireEvent("error", ws, ErrorEvent, { + error: new Error(reason) + }); + } + } + module2.exports = { + isEstablished, + isClosing, + isClosed, + fireEvent, + isValidSubprotocol, + isValidStatusCode, + failWebsocketConnection, + websocketMessageReceived + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/connection.js +var require_connection = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/connection.js"(exports, module2) { + "use strict"; + var diagnosticsChannel = require("diagnostics_channel"); + var { uid, states } = require_constants4(); + var { + kReadyState, + kSentClose, + kByteParser, + kReceivedClose + } = require_symbols5(); + var { fireEvent, failWebsocketConnection } = require_util7(); + var { CloseEvent } = require_events(); + var { makeRequest } = require_request2(); + var { fetching } = require_fetch(); + var { Headers } = require_headers(); + var { getGlobalDispatcher } = require_global2(); + var { kHeadersList } = require_symbols(); + var channels = {}; + channels.open = diagnosticsChannel.channel("undici:websocket:open"); + channels.close = diagnosticsChannel.channel("undici:websocket:close"); + channels.socketError = diagnosticsChannel.channel("undici:websocket:socket_error"); + var crypto; + try { + crypto = require("crypto"); + } catch { + } + function establishWebSocketConnection(url, protocols, ws, onEstablish, options) { + const requestURL = url; + requestURL.protocol = url.protocol === "ws:" ? "http:" : "https:"; + const request3 = makeRequest({ + urlList: [requestURL], + serviceWorkers: "none", + referrer: "no-referrer", + mode: "websocket", + credentials: "include", + cache: "no-store", + redirect: "error" + }); + if (options.headers) { + const headersList = new Headers(options.headers)[kHeadersList]; + request3.headersList = headersList; + } + const keyValue = crypto.randomBytes(16).toString("base64"); + request3.headersList.append("sec-websocket-key", keyValue); + request3.headersList.append("sec-websocket-version", "13"); + for (const protocol of protocols) { + request3.headersList.append("sec-websocket-protocol", protocol); + } + const permessageDeflate = ""; + const controller = fetching({ + request: request3, + useParallelQueue: true, + dispatcher: options.dispatcher ?? getGlobalDispatcher(), + processResponse(response) { + var _a, _b; + if (response.type === "error" || response.status !== 101) { + failWebsocketConnection(ws, "Received network error or non-101 status code."); + return; + } + if (protocols.length !== 0 && !response.headersList.get("Sec-WebSocket-Protocol")) { + failWebsocketConnection(ws, "Server did not respond with sent protocols."); + return; + } + if (((_a = response.headersList.get("Upgrade")) == null ? void 0 : _a.toLowerCase()) !== "websocket") { + failWebsocketConnection(ws, 'Server did not set Upgrade header to "websocket".'); + return; + } + if (((_b = response.headersList.get("Connection")) == null ? void 0 : _b.toLowerCase()) !== "upgrade") { + failWebsocketConnection(ws, 'Server did not set Connection header to "upgrade".'); + return; + } + const secWSAccept = response.headersList.get("Sec-WebSocket-Accept"); + const digest = crypto.createHash("sha1").update(keyValue + uid).digest("base64"); + if (secWSAccept !== digest) { + failWebsocketConnection(ws, "Incorrect hash received in Sec-WebSocket-Accept header."); + return; + } + const secExtension = response.headersList.get("Sec-WebSocket-Extensions"); + if (secExtension !== null && secExtension !== permessageDeflate) { + failWebsocketConnection(ws, "Received different permessage-deflate than the one set."); + return; + } + const secProtocol = response.headersList.get("Sec-WebSocket-Protocol"); + if (secProtocol !== null && secProtocol !== request3.headersList.get("Sec-WebSocket-Protocol")) { + failWebsocketConnection(ws, "Protocol was not set in the opening handshake."); + return; + } + response.socket.on("data", onSocketData); + response.socket.on("close", onSocketClose); + response.socket.on("error", onSocketError); + if (channels.open.hasSubscribers) { + channels.open.publish({ + address: response.socket.address(), + protocol: secProtocol, + extensions: secExtension + }); + } + onEstablish(response); + } + }); + return controller; + } + function onSocketData(chunk) { + if (!this.ws[kByteParser].write(chunk)) { + this.pause(); + } + } + function onSocketClose() { + const { ws } = this; + const wasClean = ws[kSentClose] && ws[kReceivedClose]; + let code = 1005; + let reason = ""; + const result = ws[kByteParser].closingInfo; + if (result) { + code = result.code ?? 1005; + reason = result.reason; + } else if (!ws[kSentClose]) { + code = 1006; + } + ws[kReadyState] = states.CLOSED; + fireEvent("close", ws, CloseEvent, { + wasClean, + code, + reason + }); + if (channels.close.hasSubscribers) { + channels.close.publish({ + websocket: ws, + code, + reason + }); + } + } + function onSocketError(error) { + const { ws } = this; + ws[kReadyState] = states.CLOSING; + if (channels.socketError.hasSubscribers) { + channels.socketError.publish(error); + } + this.destroy(); + } + module2.exports = { + establishWebSocketConnection + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/frame.js +var require_frame = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/frame.js"(exports, module2) { + "use strict"; + var { maxUnsigned16Bit } = require_constants4(); + var crypto; + try { + crypto = require("crypto"); + } catch { + } + var WebsocketFrameSend = class { + /** + * @param {Buffer|undefined} data + */ + constructor(data) { + this.frameData = data; + this.maskKey = crypto.randomBytes(4); + } + createFrame(opcode) { + var _a; + const bodyLength = ((_a = this.frameData) == null ? void 0 : _a.byteLength) ?? 0; + let payloadLength = bodyLength; + let offset = 6; + if (bodyLength > maxUnsigned16Bit) { + offset += 8; + payloadLength = 127; + } else if (bodyLength > 125) { + offset += 2; + payloadLength = 126; + } + const buffer = Buffer.allocUnsafe(bodyLength + offset); + buffer[0] = buffer[1] = 0; + buffer[0] |= 128; + buffer[0] = (buffer[0] & 240) + opcode; + buffer[offset - 4] = this.maskKey[0]; + buffer[offset - 3] = this.maskKey[1]; + buffer[offset - 2] = this.maskKey[2]; + buffer[offset - 1] = this.maskKey[3]; + buffer[1] = payloadLength; + if (payloadLength === 126) { + buffer.writeUInt16BE(bodyLength, 2); + } else if (payloadLength === 127) { + buffer[2] = buffer[3] = 0; + buffer.writeUIntBE(bodyLength, 4, 6); + } + buffer[1] |= 128; + for (let i = 0; i < bodyLength; i++) { + buffer[offset + i] = this.frameData[i] ^ this.maskKey[i % 4]; + } + return buffer; + } + }; + module2.exports = { + WebsocketFrameSend + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/receiver.js +var require_receiver = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/receiver.js"(exports, module2) { + "use strict"; + var { Writable } = require("stream"); + var diagnosticsChannel = require("diagnostics_channel"); + var { parserStates, opcodes, states, emptyBuffer } = require_constants4(); + var { kReadyState, kSentClose, kResponse, kReceivedClose } = require_symbols5(); + var { isValidStatusCode, failWebsocketConnection, websocketMessageReceived } = require_util7(); + var { WebsocketFrameSend } = require_frame(); + var channels = {}; + channels.ping = diagnosticsChannel.channel("undici:websocket:ping"); + channels.pong = diagnosticsChannel.channel("undici:websocket:pong"); + var _buffers, _byteOffset, _state, _info, _fragments; + var ByteParser = class extends Writable { + constructor(ws) { + super(); + __privateAdd(this, _buffers, []); + __privateAdd(this, _byteOffset, 0); + __privateAdd(this, _state, parserStates.INFO); + __privateAdd(this, _info, {}); + __privateAdd(this, _fragments, []); + this.ws = ws; + } + /** + * @param {Buffer} chunk + * @param {() => void} callback + */ + _write(chunk, _, callback) { + __privateGet(this, _buffers).push(chunk); + __privateSet(this, _byteOffset, __privateGet(this, _byteOffset) + chunk.length); + this.run(callback); + } + /** + * Runs whenever a new chunk is received. + * Callback is called whenever there are no more chunks buffering, + * or not enough bytes are buffered to parse. + */ + run(callback) { + var _a; + while (true) { + if (__privateGet(this, _state) === parserStates.INFO) { + if (__privateGet(this, _byteOffset) < 2) { + return callback(); + } + const buffer = this.consume(2); + __privateGet(this, _info).fin = (buffer[0] & 128) !== 0; + __privateGet(this, _info).opcode = buffer[0] & 15; + (_a = __privateGet(this, _info)).originalOpcode ?? (_a.originalOpcode = __privateGet(this, _info).opcode); + __privateGet(this, _info).fragmented = !__privateGet(this, _info).fin && __privateGet(this, _info).opcode !== opcodes.CONTINUATION; + if (__privateGet(this, _info).fragmented && __privateGet(this, _info).opcode !== opcodes.BINARY && __privateGet(this, _info).opcode !== opcodes.TEXT) { + failWebsocketConnection(this.ws, "Invalid frame type was fragmented."); + return; + } + const payloadLength = buffer[1] & 127; + if (payloadLength <= 125) { + __privateGet(this, _info).payloadLength = payloadLength; + __privateSet(this, _state, parserStates.READ_DATA); + } else if (payloadLength === 126) { + __privateSet(this, _state, parserStates.PAYLOADLENGTH_16); + } else if (payloadLength === 127) { + __privateSet(this, _state, parserStates.PAYLOADLENGTH_64); + } + if (__privateGet(this, _info).fragmented && payloadLength > 125) { + failWebsocketConnection(this.ws, "Fragmented frame exceeded 125 bytes."); + return; + } else if ((__privateGet(this, _info).opcode === opcodes.PING || __privateGet(this, _info).opcode === opcodes.PONG || __privateGet(this, _info).opcode === opcodes.CLOSE) && payloadLength > 125) { + failWebsocketConnection(this.ws, "Payload length for control frame exceeded 125 bytes."); + return; + } else if (__privateGet(this, _info).opcode === opcodes.CLOSE) { + if (payloadLength === 1) { + failWebsocketConnection(this.ws, "Received close frame with a 1-byte body."); + return; + } + const body = this.consume(payloadLength); + __privateGet(this, _info).closeInfo = this.parseCloseBody(false, body); + if (!this.ws[kSentClose]) { + const body2 = Buffer.allocUnsafe(2); + body2.writeUInt16BE(__privateGet(this, _info).closeInfo.code, 0); + const closeFrame = new WebsocketFrameSend(body2); + this.ws[kResponse].socket.write( + closeFrame.createFrame(opcodes.CLOSE), + (err) => { + if (!err) { + this.ws[kSentClose] = true; + } + } + ); + } + this.ws[kReadyState] = states.CLOSING; + this.ws[kReceivedClose] = true; + this.end(); + return; + } else if (__privateGet(this, _info).opcode === opcodes.PING) { + const body = this.consume(payloadLength); + if (!this.ws[kReceivedClose]) { + const frame = new WebsocketFrameSend(body); + this.ws[kResponse].socket.write(frame.createFrame(opcodes.PONG)); + if (channels.ping.hasSubscribers) { + channels.ping.publish({ + payload: body + }); + } + } + __privateSet(this, _state, parserStates.INFO); + if (__privateGet(this, _byteOffset) > 0) { + continue; + } else { + callback(); + return; + } + } else if (__privateGet(this, _info).opcode === opcodes.PONG) { + const body = this.consume(payloadLength); + if (channels.pong.hasSubscribers) { + channels.pong.publish({ + payload: body + }); + } + if (__privateGet(this, _byteOffset) > 0) { + continue; + } else { + callback(); + return; + } + } + } else if (__privateGet(this, _state) === parserStates.PAYLOADLENGTH_16) { + if (__privateGet(this, _byteOffset) < 2) { + return callback(); + } + const buffer = this.consume(2); + __privateGet(this, _info).payloadLength = buffer.readUInt16BE(0); + __privateSet(this, _state, parserStates.READ_DATA); + } else if (__privateGet(this, _state) === parserStates.PAYLOADLENGTH_64) { + if (__privateGet(this, _byteOffset) < 8) { + return callback(); + } + const buffer = this.consume(8); + const upper = buffer.readUInt32BE(0); + if (upper > 2 ** 31 - 1) { + failWebsocketConnection(this.ws, "Received payload length > 2^31 bytes."); + return; + } + const lower = buffer.readUInt32BE(4); + __privateGet(this, _info).payloadLength = (upper << 8) + lower; + __privateSet(this, _state, parserStates.READ_DATA); + } else if (__privateGet(this, _state) === parserStates.READ_DATA) { + if (__privateGet(this, _byteOffset) < __privateGet(this, _info).payloadLength) { + return callback(); + } else if (__privateGet(this, _byteOffset) >= __privateGet(this, _info).payloadLength) { + const body = this.consume(__privateGet(this, _info).payloadLength); + __privateGet(this, _fragments).push(body); + if (!__privateGet(this, _info).fragmented || __privateGet(this, _info).fin && __privateGet(this, _info).opcode === opcodes.CONTINUATION) { + const fullMessage = Buffer.concat(__privateGet(this, _fragments)); + websocketMessageReceived(this.ws, __privateGet(this, _info).originalOpcode, fullMessage); + __privateSet(this, _info, {}); + __privateGet(this, _fragments).length = 0; + } + __privateSet(this, _state, parserStates.INFO); + } + } + if (__privateGet(this, _byteOffset) > 0) { + continue; + } else { + callback(); + break; + } + } + } + /** + * Take n bytes from the buffered Buffers + * @param {number} n + * @returns {Buffer|null} + */ + consume(n) { + if (n > __privateGet(this, _byteOffset)) { + return null; + } else if (n === 0) { + return emptyBuffer; + } + if (__privateGet(this, _buffers)[0].length === n) { + __privateSet(this, _byteOffset, __privateGet(this, _byteOffset) - __privateGet(this, _buffers)[0].length); + return __privateGet(this, _buffers).shift(); + } + const buffer = Buffer.allocUnsafe(n); + let offset = 0; + while (offset !== n) { + const next = __privateGet(this, _buffers)[0]; + const { length } = next; + if (length + offset === n) { + buffer.set(__privateGet(this, _buffers).shift(), offset); + break; + } else if (length + offset > n) { + buffer.set(next.subarray(0, n - offset), offset); + __privateGet(this, _buffers)[0] = next.subarray(n - offset); + break; + } else { + buffer.set(__privateGet(this, _buffers).shift(), offset); + offset += next.length; + } + } + __privateSet(this, _byteOffset, __privateGet(this, _byteOffset) - n); + return buffer; + } + parseCloseBody(onlyCode, data) { + let code; + if (data.length >= 2) { + code = data.readUInt16BE(0); + } + if (onlyCode) { + if (!isValidStatusCode(code)) { + return null; + } + return { code }; + } + let reason = data.subarray(2); + if (reason[0] === 239 && reason[1] === 187 && reason[2] === 191) { + reason = reason.subarray(3); + } + if (code !== void 0 && !isValidStatusCode(code)) { + return null; + } + try { + reason = new TextDecoder("utf-8", { fatal: true }).decode(reason); + } catch { + return null; + } + return { code, reason }; + } + get closingInfo() { + return __privateGet(this, _info).closeInfo; + } + }; + _buffers = new WeakMap(); + _byteOffset = new WeakMap(); + _state = new WeakMap(); + _info = new WeakMap(); + _fragments = new WeakMap(); + module2.exports = { + ByteParser + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/websocket.js +var require_websocket = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/websocket.js"(exports, module2) { + "use strict"; + var { webidl } = require_webidl(); + var { DOMException: DOMException2 } = require_constants(); + var { URLSerializer } = require_dataURL(); + var { getGlobalOrigin } = require_global(); + var { staticPropertyDescriptors, states, opcodes, emptyBuffer } = require_constants4(); + var { + kWebSocketURL, + kReadyState, + kController, + kBinaryType, + kResponse, + kSentClose, + kByteParser + } = require_symbols5(); + var { isEstablished, isClosing, isValidSubprotocol, failWebsocketConnection, fireEvent } = require_util7(); + var { establishWebSocketConnection } = require_connection(); + var { WebsocketFrameSend } = require_frame(); + var { ByteParser } = require_receiver(); + var { kEnumerableProperty, isBlobLike } = require_util(); + var { getGlobalDispatcher } = require_global2(); + var { types } = require("util"); + var experimentalWarned = false; + var _events, _bufferedAmount, _protocol, _extensions, _onConnectionEstablished, onConnectionEstablished_fn; + var _WebSocket = class _WebSocket extends EventTarget { + /** + * @param {string} url + * @param {string|string[]} protocols + */ + constructor(url, protocols = []) { + super(); + /** + * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol + */ + __privateAdd(this, _onConnectionEstablished); + __privateAdd(this, _events, { + open: null, + error: null, + close: null, + message: null + }); + __privateAdd(this, _bufferedAmount, 0); + __privateAdd(this, _protocol, ""); + __privateAdd(this, _extensions, ""); + webidl.argumentLengthCheck(arguments, 1, { header: "WebSocket constructor" }); + if (!experimentalWarned) { + experimentalWarned = true; + process.emitWarning("WebSockets are experimental, expect them to change at any time.", { + code: "UNDICI-WS" + }); + } + const options = webidl.converters["DOMString or sequence or WebSocketInit"](protocols); + url = webidl.converters.USVString(url); + protocols = options.protocols; + const baseURL = getGlobalOrigin(); + let urlRecord; + try { + urlRecord = new URL(url, baseURL); + } catch (e) { + throw new DOMException2(e, "SyntaxError"); + } + if (urlRecord.protocol === "http:") { + urlRecord.protocol = "ws:"; + } else if (urlRecord.protocol === "https:") { + urlRecord.protocol = "wss:"; + } + if (urlRecord.protocol !== "ws:" && urlRecord.protocol !== "wss:") { + throw new DOMException2( + `Expected a ws: or wss: protocol, got ${urlRecord.protocol}`, + "SyntaxError" + ); + } + if (urlRecord.hash || urlRecord.href.endsWith("#")) { + throw new DOMException2("Got fragment", "SyntaxError"); + } + if (typeof protocols === "string") { + protocols = [protocols]; + } + if (protocols.length !== new Set(protocols.map((p) => p.toLowerCase())).size) { + throw new DOMException2("Invalid Sec-WebSocket-Protocol value", "SyntaxError"); + } + if (protocols.length > 0 && !protocols.every((p) => isValidSubprotocol(p))) { + throw new DOMException2("Invalid Sec-WebSocket-Protocol value", "SyntaxError"); + } + this[kWebSocketURL] = new URL(urlRecord.href); + this[kController] = establishWebSocketConnection( + urlRecord, + protocols, + this, + (response) => __privateMethod(this, _onConnectionEstablished, onConnectionEstablished_fn).call(this, response), + options + ); + this[kReadyState] = _WebSocket.CONNECTING; + this[kBinaryType] = "blob"; + } + /** + * @see https://websockets.spec.whatwg.org/#dom-websocket-close + * @param {number|undefined} code + * @param {string|undefined} reason + */ + close(code = void 0, reason = void 0) { + webidl.brandCheck(this, _WebSocket); + if (code !== void 0) { + code = webidl.converters["unsigned short"](code, { clamp: true }); + } + if (reason !== void 0) { + reason = webidl.converters.USVString(reason); + } + if (code !== void 0) { + if (code !== 1e3 && (code < 3e3 || code > 4999)) { + throw new DOMException2("invalid code", "InvalidAccessError"); + } + } + let reasonByteLength = 0; + if (reason !== void 0) { + reasonByteLength = Buffer.byteLength(reason); + if (reasonByteLength > 123) { + throw new DOMException2( + `Reason must be less than 123 bytes; received ${reasonByteLength}`, + "SyntaxError" + ); + } + } + if (this[kReadyState] === _WebSocket.CLOSING || this[kReadyState] === _WebSocket.CLOSED) { + } else if (!isEstablished(this)) { + failWebsocketConnection(this, "Connection was closed before it was established."); + this[kReadyState] = _WebSocket.CLOSING; + } else if (!isClosing(this)) { + const frame = new WebsocketFrameSend(); + if (code !== void 0 && reason === void 0) { + frame.frameData = Buffer.allocUnsafe(2); + frame.frameData.writeUInt16BE(code, 0); + } else if (code !== void 0 && reason !== void 0) { + frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength); + frame.frameData.writeUInt16BE(code, 0); + frame.frameData.write(reason, 2, "utf-8"); + } else { + frame.frameData = emptyBuffer; + } + const socket = this[kResponse].socket; + socket.write(frame.createFrame(opcodes.CLOSE), (err) => { + if (!err) { + this[kSentClose] = true; + } + }); + this[kReadyState] = states.CLOSING; + } else { + this[kReadyState] = _WebSocket.CLOSING; + } + } + /** + * @see https://websockets.spec.whatwg.org/#dom-websocket-send + * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data + */ + send(data) { + webidl.brandCheck(this, _WebSocket); + webidl.argumentLengthCheck(arguments, 1, { header: "WebSocket.send" }); + data = webidl.converters.WebSocketSendData(data); + if (this[kReadyState] === _WebSocket.CONNECTING) { + throw new DOMException2("Sent before connected.", "InvalidStateError"); + } + if (!isEstablished(this) || isClosing(this)) { + return; + } + const socket = this[kResponse].socket; + if (typeof data === "string") { + const value = Buffer.from(data); + const frame = new WebsocketFrameSend(value); + const buffer = frame.createFrame(opcodes.TEXT); + __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) + value.byteLength); + socket.write(buffer, () => { + __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) - value.byteLength); + }); + } else if (types.isArrayBuffer(data)) { + const value = Buffer.from(data); + const frame = new WebsocketFrameSend(value); + const buffer = frame.createFrame(opcodes.BINARY); + __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) + value.byteLength); + socket.write(buffer, () => { + __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) - value.byteLength); + }); + } else if (ArrayBuffer.isView(data)) { + const ab = Buffer.from(data, data.byteOffset, data.byteLength); + const frame = new WebsocketFrameSend(ab); + const buffer = frame.createFrame(opcodes.BINARY); + __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) + ab.byteLength); + socket.write(buffer, () => { + __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) - ab.byteLength); + }); + } else if (isBlobLike(data)) { + const frame = new WebsocketFrameSend(); + data.arrayBuffer().then((ab) => { + const value = Buffer.from(ab); + frame.frameData = value; + const buffer = frame.createFrame(opcodes.BINARY); + __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) + value.byteLength); + socket.write(buffer, () => { + __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) - value.byteLength); + }); + }); + } + } + get readyState() { + webidl.brandCheck(this, _WebSocket); + return this[kReadyState]; + } + get bufferedAmount() { + webidl.brandCheck(this, _WebSocket); + return __privateGet(this, _bufferedAmount); + } + get url() { + webidl.brandCheck(this, _WebSocket); + return URLSerializer(this[kWebSocketURL]); + } + get extensions() { + webidl.brandCheck(this, _WebSocket); + return __privateGet(this, _extensions); + } + get protocol() { + webidl.brandCheck(this, _WebSocket); + return __privateGet(this, _protocol); + } + get onopen() { + webidl.brandCheck(this, _WebSocket); + return __privateGet(this, _events).open; + } + set onopen(fn) { + webidl.brandCheck(this, _WebSocket); + if (__privateGet(this, _events).open) { + this.removeEventListener("open", __privateGet(this, _events).open); + } + if (typeof fn === "function") { + __privateGet(this, _events).open = fn; + this.addEventListener("open", fn); + } else { + __privateGet(this, _events).open = null; + } + } + get onerror() { + webidl.brandCheck(this, _WebSocket); + return __privateGet(this, _events).error; + } + set onerror(fn) { + webidl.brandCheck(this, _WebSocket); + if (__privateGet(this, _events).error) { + this.removeEventListener("error", __privateGet(this, _events).error); + } + if (typeof fn === "function") { + __privateGet(this, _events).error = fn; + this.addEventListener("error", fn); + } else { + __privateGet(this, _events).error = null; + } + } + get onclose() { + webidl.brandCheck(this, _WebSocket); + return __privateGet(this, _events).close; + } + set onclose(fn) { + webidl.brandCheck(this, _WebSocket); + if (__privateGet(this, _events).close) { + this.removeEventListener("close", __privateGet(this, _events).close); + } + if (typeof fn === "function") { + __privateGet(this, _events).close = fn; + this.addEventListener("close", fn); + } else { + __privateGet(this, _events).close = null; + } + } + get onmessage() { + webidl.brandCheck(this, _WebSocket); + return __privateGet(this, _events).message; + } + set onmessage(fn) { + webidl.brandCheck(this, _WebSocket); + if (__privateGet(this, _events).message) { + this.removeEventListener("message", __privateGet(this, _events).message); + } + if (typeof fn === "function") { + __privateGet(this, _events).message = fn; + this.addEventListener("message", fn); + } else { + __privateGet(this, _events).message = null; + } + } + get binaryType() { + webidl.brandCheck(this, _WebSocket); + return this[kBinaryType]; + } + set binaryType(type) { + webidl.brandCheck(this, _WebSocket); + if (type !== "blob" && type !== "arraybuffer") { + this[kBinaryType] = "blob"; + } else { + this[kBinaryType] = type; + } + } + }; + _events = new WeakMap(); + _bufferedAmount = new WeakMap(); + _protocol = new WeakMap(); + _extensions = new WeakMap(); + _onConnectionEstablished = new WeakSet(); + onConnectionEstablished_fn = function(response) { + this[kResponse] = response; + const parser = new ByteParser(this); + parser.on("drain", function onParserDrain() { + this.ws[kResponse].socket.resume(); + }); + response.socket.ws = this; + this[kByteParser] = parser; + this[kReadyState] = states.OPEN; + const extensions = response.headersList.get("sec-websocket-extensions"); + if (extensions !== null) { + __privateSet(this, _extensions, extensions); + } + const protocol = response.headersList.get("sec-websocket-protocol"); + if (protocol !== null) { + __privateSet(this, _protocol, protocol); + } + fireEvent("open", this); + }; + var WebSocket = _WebSocket; + WebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING; + WebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN; + WebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING; + WebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED; + Object.defineProperties(WebSocket.prototype, { + CONNECTING: staticPropertyDescriptors, + OPEN: staticPropertyDescriptors, + CLOSING: staticPropertyDescriptors, + CLOSED: staticPropertyDescriptors, + url: kEnumerableProperty, + readyState: kEnumerableProperty, + bufferedAmount: kEnumerableProperty, + onopen: kEnumerableProperty, + onerror: kEnumerableProperty, + onclose: kEnumerableProperty, + close: kEnumerableProperty, + onmessage: kEnumerableProperty, + binaryType: kEnumerableProperty, + send: kEnumerableProperty, + extensions: kEnumerableProperty, + protocol: kEnumerableProperty, + [Symbol.toStringTag]: { + value: "WebSocket", + writable: false, + enumerable: false, + configurable: true + } + }); + Object.defineProperties(WebSocket, { + CONNECTING: staticPropertyDescriptors, + OPEN: staticPropertyDescriptors, + CLOSING: staticPropertyDescriptors, + CLOSED: staticPropertyDescriptors + }); + webidl.converters["sequence"] = webidl.sequenceConverter( + webidl.converters.DOMString + ); + webidl.converters["DOMString or sequence"] = function(V) { + if (webidl.util.Type(V) === "Object" && Symbol.iterator in V) { + return webidl.converters["sequence"](V); + } + return webidl.converters.DOMString(V); + }; + webidl.converters.WebSocketInit = webidl.dictionaryConverter([ + { + key: "protocols", + converter: webidl.converters["DOMString or sequence"], + get defaultValue() { + return []; + } + }, + { + key: "dispatcher", + converter: (V) => V, + get defaultValue() { + return getGlobalDispatcher(); + } + }, + { + key: "headers", + converter: webidl.nullableConverter(webidl.converters.HeadersInit) + } + ]); + webidl.converters["DOMString or sequence or WebSocketInit"] = function(V) { + if (webidl.util.Type(V) === "Object" && !(Symbol.iterator in V)) { + return webidl.converters.WebSocketInit(V); + } + return { protocols: webidl.converters["DOMString or sequence"](V) }; + }; + webidl.converters.WebSocketSendData = function(V) { + if (webidl.util.Type(V) === "Object") { + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }); + } + if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) { + return webidl.converters.BufferSource(V); + } + } + return webidl.converters.USVString(V); + }; + module2.exports = { + WebSocket + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/index.js +var require_undici = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/index.js"(exports, module2) { + "use strict"; + var Client = require_client(); + var Dispatcher = require_dispatcher(); + var errors = require_errors(); + var Pool = require_pool(); + var BalancedPool = require_balanced_pool(); + var Agent = require_agent(); + var util = require_util(); + var { InvalidArgumentError } = errors; + var api = require_api(); + var buildConnector = require_connect(); + var MockClient = require_mock_client(); + var MockAgent = require_mock_agent(); + var MockPool = require_mock_pool(); + var mockErrors = require_mock_errors(); + var ProxyAgent = require_proxy_agent(); + var { getGlobalDispatcher, setGlobalDispatcher } = require_global2(); + var DecoratorHandler = require_DecoratorHandler(); + var RedirectHandler = require_RedirectHandler(); + var createRedirectInterceptor = require_redirectInterceptor(); + var hasCrypto; + try { + require("crypto"); + hasCrypto = true; + } catch { + hasCrypto = false; + } + Object.assign(Dispatcher.prototype, api); + module2.exports.Dispatcher = Dispatcher; + module2.exports.Client = Client; + module2.exports.Pool = Pool; + module2.exports.BalancedPool = BalancedPool; + module2.exports.Agent = Agent; + module2.exports.ProxyAgent = ProxyAgent; + module2.exports.DecoratorHandler = DecoratorHandler; + module2.exports.RedirectHandler = RedirectHandler; + module2.exports.createRedirectInterceptor = createRedirectInterceptor; + module2.exports.buildConnector = buildConnector; + module2.exports.errors = errors; + function makeDispatcher(fn) { + return (url, opts, handler) => { + if (typeof opts === "function") { + handler = opts; + opts = null; + } + if (!url || typeof url !== "string" && typeof url !== "object" && !(url instanceof URL)) { + throw new InvalidArgumentError("invalid url"); + } + if (opts != null && typeof opts !== "object") { + throw new InvalidArgumentError("invalid opts"); + } + if (opts && opts.path != null) { + if (typeof opts.path !== "string") { + throw new InvalidArgumentError("invalid opts.path"); + } + let path = opts.path; + if (!opts.path.startsWith("/")) { + path = `/${path}`; + } + url = new URL(util.parseOrigin(url).origin + path); + } else { + if (!opts) { + opts = typeof url === "object" ? url : {}; + } + url = util.parseURL(url); + } + const { agent, dispatcher = getGlobalDispatcher() } = opts; + if (agent) { + throw new InvalidArgumentError("unsupported opts.agent. Did you mean opts.client?"); + } + return fn.call(dispatcher, { + ...opts, + origin: url.origin, + path: url.search ? `${url.pathname}${url.search}` : url.pathname, + method: opts.method || (opts.body ? "PUT" : "GET") + }, handler); + }; + } + module2.exports.setGlobalDispatcher = setGlobalDispatcher; + module2.exports.getGlobalDispatcher = getGlobalDispatcher; + if (util.nodeMajor > 16 || util.nodeMajor === 16 && util.nodeMinor >= 8) { + let fetchImpl = null; + module2.exports.fetch = async function fetch(resource) { + if (!fetchImpl) { + fetchImpl = require_fetch().fetch; + } + try { + return await fetchImpl(...arguments); + } catch (err) { + if (typeof err === "object") { + Error.captureStackTrace(err, this); + } + throw err; + } + }; + module2.exports.Headers = require_headers().Headers; + module2.exports.Response = require_response().Response; + module2.exports.Request = require_request2().Request; + module2.exports.FormData = require_formdata().FormData; + module2.exports.File = require_file().File; + module2.exports.FileReader = require_filereader().FileReader; + const { setGlobalOrigin, getGlobalOrigin } = require_global(); + module2.exports.setGlobalOrigin = setGlobalOrigin; + module2.exports.getGlobalOrigin = getGlobalOrigin; + const { CacheStorage } = require_cachestorage(); + const { kConstruct } = require_symbols4(); + module2.exports.caches = new CacheStorage(kConstruct); + } + if (util.nodeMajor >= 16) { + const { deleteCookie, getCookies, getSetCookies, setCookie } = require_cookies(); + module2.exports.deleteCookie = deleteCookie; + module2.exports.getCookies = getCookies; + module2.exports.getSetCookies = getSetCookies; + module2.exports.setCookie = setCookie; + const { parseMIMEType, serializeAMimeType } = require_dataURL(); + module2.exports.parseMIMEType = parseMIMEType; + module2.exports.serializeAMimeType = serializeAMimeType; + } + if (util.nodeMajor >= 18 && hasCrypto) { + const { WebSocket } = require_websocket(); + module2.exports.WebSocket = WebSocket; + } + module2.exports.request = makeDispatcher(api.request); + module2.exports.stream = makeDispatcher(api.stream); + module2.exports.pipeline = makeDispatcher(api.pipeline); + module2.exports.connect = makeDispatcher(api.connect); + module2.exports.upgrade = makeDispatcher(api.upgrade); + module2.exports.MockClient = MockClient; + module2.exports.MockPool = MockPool; + module2.exports.MockAgent = MockAgent; + module2.exports.mockErrors = mockErrors; + } +}); + +// src/utils/fetch.server.ts +var import_undici2 = __toESM(require_undici()); + +// src/utils/version.server.ts +var import_undici = __toESM(require_undici()); +on("onResourceStart", async (resourceName) => { + if (GetCurrentResourceName() !== resourceName) { + return; + } + await verifyCADApiVersion(); + await verifyCurrentVersion(); +}); +async function verifyCurrentVersion() { + const currentResourceVersion = GetResourceMetadata(GetCurrentResourceName(), "version"); + console.log(`Checking for updates... +Current Version: ${currentResourceVersion}`); + try { + const PACKAGE_JSON_URL = "https://raw.githubusercontent.com/SnailyCAD/fivem-integrations/main/package.json"; + const data = await (0, import_undici.request)(PACKAGE_JSON_URL).then((res) => res.body.json()); + if (data.version !== currentResourceVersion) { + console.log(` +--------------------------------------- + +[${GetCurrentResourceName()}] A new version is available: ${data.version}. +Please find the latest version at: https://github.com/SnailyCAD/fivem-integrations/releases + +---------------------------------------`); + } + } catch (err) { + } +} +async function verifyCADApiVersion() { + try { + const { data } = await cadRequest({ + path: "/", + method: "GET", + responseType: "text" + }); + if (!(data == null ? void 0 : data.includes("200 Success. Current CAD Version"))) { + console.warn(` +--------------------------------------- + +[${GetCurrentResourceName()}] Failed to verify SnailyCAD version. Please make sure the following: + +- Correct global API Token set in server.cfg as "snailycad_api_key" +- Correct SnailyCAD URL set in server.cfg as "snailycad_url" +- Your SnailyCAD instance API is running and is accessible from this server + +---------------------------------------`); + } + } catch (err) { + console.error(err); + console.warn(` +--------------------------------------- + + [${GetCurrentResourceName()}] Failed to verify SnailyCAD version. Please make sure the following: + + - Correct global API Token set in server.cfg as "snailycad_api_key" + - Correct SnailyCAD URL set in server.cfg as "snailycad_url" + - Your SnailyCAD instance API is running and is accessible from this server + +---------------------------------------`); + } +} + +// src/utils/fetch.server.ts +async function cadRequest(options) { + var _a; + const url = GetConvar("snailycad_url", "null"); + const apiKey = GetConvar("snailycad_api_key", "null"); + const isFromDispatch = options.isFromDispatch ?? true; + if (url === "null") { + console.warn("No `snailycad_url` convar was found in your server.cfg"); + return { errorMessage: "No `snailycad_url` convar was found in your server.cfg", data: null }; + } + let tokenHeader = { "snaily-cad-api-token": apiKey }; + if (((_a = options.headers) == null ? void 0 : _a.userApiToken) && typeof options.headers.userApiToken === "string") { + tokenHeader = { "snaily-cad-user-api-token": options.headers.userApiToken }; + } + try { + const response = await (0, import_undici2.request)(`${url}${options.path}`, { + method: options.method, + body: options.data ? JSON.stringify(options.data) : void 0, + headers: { + "is-from-dispatch": isFromDispatch ? "true" : void 0, + "content-type": "application/json", + ...tokenHeader + } + }); + const responseType = options.responseType ?? "json"; + const json = await response.body[responseType](); + return { data: json }; + } catch (error) { + console.error("SnailyCAD API error:", JSON.stringify(error, null, 2)); + const errorMessage = error instanceof Error ? error.message : "Unknown error"; + return { data: null, error, errorMessage }; + } +} + +// integrations/alpr/server/server.ts +onNet("wk:onPlateLocked" /* WraithPlateLocked */, async (_cam, plate) => { + const player = source; + const plateSearchResults = await fetchVehicleSearch(plate.trim().toUpperCase()); + const boloSearchResults = await fetchBoloSearch(plate.trim().toUpperCase()); + setImmediate(() => { + emitNet("sn:cadPlateResults" /* ALPRCadPlateResults */, player, plate.trim().toUpperCase(), plateSearchResults); + }); + setImmediate(() => { + emitNet("sn:cadBoloResults" /* ALPRCadBoloResults */, player, plate.trim().toUpperCase(), boloSearchResults); + }); +}); +async function fetchVehicleSearch(plate) { + const { data } = await cadRequest({ + path: "/search/vehicle?includeMany=true", + method: "POST", + data: { + plateOrVin: plate + } + }); + return data ?? "failed"; +} +async function fetchBoloSearch(plate) { + const { data } = await cadRequest({ + path: `/bolos?query=${plate}`, + method: "GET", + data: { + plateOrVin: plate + } + }); + return data ?? "failed"; +} +/*! Bundled license information: + +undici/lib/fetch/body.js: + (*! formdata-polyfill. MIT License. Jimmy Wärting *) + +undici/lib/websocket/frame.js: + (*! ws. MIT License. Einar Otto Stangvik *) +*/ diff --git a/resources/[sna]/sna-call911/client/client.js b/resources/[sna]/sna-call911/client/client.js new file mode 100644 index 0000000..244c01d --- /dev/null +++ b/resources/[sna]/sna-call911/client/client.js @@ -0,0 +1,53 @@ +"use strict"; + +// src/utils/notification.ts +function createNotification(options) { + SetNotificationTextEntry("STRING"); + AddTextComponentString(options.message); + SetNotificationMessage( + options.picture, + options.picture, + true, + options.icon ?? 0 /* None */, + options.title, + options.subject ?? "" + ); +} + +// integrations/call911/client/client.ts +emit("chat:addSuggestion", `/${"sn-call911" /* Call911 */}`, "Contact the emergency services.", [ + { name: "description", help: "The description of the call" } +]); +onNet("sn:911Call" /* Call911ToClient */, ({ source, name, description }) => { + const playerPed = GetPlayerPed(-1); + const [x, y, z] = GetEntityCoords(playerPed, true); + const [lastStreet] = GetStreetNameAtCoord(x, y, z); + const lastStreetName = GetStreetNameFromHashKey(lastStreet); + const heading = GetEntityHeading(PlayerPedId()); + setImmediate(() => { + emitNet("sn:911CallUpdate" /* Call911ToServer */, { + street: lastStreetName, + name, + description, + position: { x, y, z, heading }, + source + }); + }); +}); +onNet("sn:911CallResponse" /* Call911ToClientResponse */, (state) => { + if (state === "success") { + createNotification({ + picture: "CHAR_CALL911" /* CHAR_CALL911 */, + icon: 1 /* ChatBox */, + message: "Your call has been reported to the emergency services", + title: "Emergency Services" + }); + } else { + createNotification({ + picture: "CHAR_CALL911" /* CHAR_CALL911 */, + icon: 1 /* ChatBox */, + message: "We were unable to process your 911 call at this time.", + title: "Failed to report call" + }); + } +}); diff --git a/resources/[sna]/sna-call911/documentation.url b/resources/[sna]/sna-call911/documentation.url new file mode 100644 index 0000000..df8ba60 --- /dev/null +++ b/resources/[sna]/sna-call911/documentation.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://docs.snailycad.org/docs/fivem-integrations/scripts/sna-call911 diff --git a/resources/[sna]/sna-call911/fxmanifest.lua b/resources/[sna]/sna-call911/fxmanifest.lua new file mode 100644 index 0000000..24edd55 --- /dev/null +++ b/resources/[sna]/sna-call911/fxmanifest.lua @@ -0,0 +1,9 @@ +fx_version "cerulean" +game "gta5" + +author "Casper Iversen" +description "/call911 command that connects to SnailyCADv4" +version "0.13.1" + +server_scripts {"server/server.js"} +client_scripts {"client/client.js"} diff --git a/resources/[sna]/sna-call911/server/server.js b/resources/[sna]/sna-call911/server/server.js new file mode 100644 index 0000000..383a334 --- /dev/null +++ b/resources/[sna]/sna-call911/server/server.js @@ -0,0 +1,24355 @@ +"use strict"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __accessCheck = (obj, member, msg) => { + if (!member.has(obj)) + throw TypeError("Cannot " + msg); +}; +var __privateGet = (obj, member, getter) => { + __accessCheck(obj, member, "read from private field"); + return getter ? getter.call(obj) : member.get(obj); +}; +var __privateAdd = (obj, member, value) => { + if (member.has(obj)) + throw TypeError("Cannot add the same private member more than once"); + member instanceof WeakSet ? member.add(obj) : member.set(obj, value); +}; +var __privateSet = (obj, member, value, setter) => { + __accessCheck(obj, member, "write to private field"); + setter ? setter.call(obj, value) : member.set(obj, value); + return value; +}; +var __privateMethod = (obj, member, method) => { + __accessCheck(obj, member, "access private method"); + return method; +}; + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/symbols.js +var require_symbols = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/symbols.js"(exports2, module2) { + module2.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"), + kHeadersList: Symbol("headers list"), + 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"), + 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"), + 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"), + kHTTP2BuildRequest: Symbol("http2 build request"), + kHTTP1BuildRequest: Symbol("http1 build request"), + kHTTP2CopyHeaders: Symbol("http2 copy headers"), + kHTTPConnVersion: Symbol("http connection version") + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/errors.js +var require_errors = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/errors.js"(exports2, module2) { + "use strict"; + var UndiciError = class extends Error { + constructor(message) { + super(message); + this.name = "UndiciError"; + this.code = "UND_ERR"; + } + }; + var ConnectTimeoutError = class _ConnectTimeoutError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _ConnectTimeoutError); + this.name = "ConnectTimeoutError"; + this.message = message || "Connect Timeout Error"; + this.code = "UND_ERR_CONNECT_TIMEOUT"; + } + }; + var HeadersTimeoutError = class _HeadersTimeoutError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _HeadersTimeoutError); + this.name = "HeadersTimeoutError"; + this.message = message || "Headers Timeout Error"; + this.code = "UND_ERR_HEADERS_TIMEOUT"; + } + }; + var HeadersOverflowError = class _HeadersOverflowError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _HeadersOverflowError); + this.name = "HeadersOverflowError"; + this.message = message || "Headers Overflow Error"; + this.code = "UND_ERR_HEADERS_OVERFLOW"; + } + }; + var BodyTimeoutError = class _BodyTimeoutError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _BodyTimeoutError); + this.name = "BodyTimeoutError"; + this.message = message || "Body Timeout Error"; + this.code = "UND_ERR_BODY_TIMEOUT"; + } + }; + var ResponseStatusCodeError = class _ResponseStatusCodeError extends UndiciError { + constructor(message, statusCode, headers, body) { + super(message); + Error.captureStackTrace(this, _ResponseStatusCodeError); + this.name = "ResponseStatusCodeError"; + this.message = message || "Response Status Code Error"; + this.code = "UND_ERR_RESPONSE_STATUS_CODE"; + this.body = body; + this.status = statusCode; + this.statusCode = statusCode; + this.headers = headers; + } + }; + var InvalidArgumentError = class _InvalidArgumentError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _InvalidArgumentError); + this.name = "InvalidArgumentError"; + this.message = message || "Invalid Argument Error"; + this.code = "UND_ERR_INVALID_ARG"; + } + }; + var InvalidReturnValueError = class _InvalidReturnValueError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _InvalidReturnValueError); + this.name = "InvalidReturnValueError"; + this.message = message || "Invalid Return Value Error"; + this.code = "UND_ERR_INVALID_RETURN_VALUE"; + } + }; + var RequestAbortedError = class _RequestAbortedError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _RequestAbortedError); + this.name = "AbortError"; + this.message = message || "Request aborted"; + this.code = "UND_ERR_ABORTED"; + } + }; + var InformationalError = class _InformationalError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _InformationalError); + this.name = "InformationalError"; + this.message = message || "Request information"; + this.code = "UND_ERR_INFO"; + } + }; + var RequestContentLengthMismatchError = class _RequestContentLengthMismatchError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _RequestContentLengthMismatchError); + this.name = "RequestContentLengthMismatchError"; + this.message = message || "Request body length does not match content-length header"; + this.code = "UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"; + } + }; + var ResponseContentLengthMismatchError = class _ResponseContentLengthMismatchError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _ResponseContentLengthMismatchError); + this.name = "ResponseContentLengthMismatchError"; + this.message = message || "Response body length does not match content-length header"; + this.code = "UND_ERR_RES_CONTENT_LENGTH_MISMATCH"; + } + }; + var ClientDestroyedError = class _ClientDestroyedError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _ClientDestroyedError); + this.name = "ClientDestroyedError"; + this.message = message || "The client is destroyed"; + this.code = "UND_ERR_DESTROYED"; + } + }; + var ClientClosedError = class _ClientClosedError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _ClientClosedError); + this.name = "ClientClosedError"; + this.message = message || "The client is closed"; + this.code = "UND_ERR_CLOSED"; + } + }; + var SocketError = class _SocketError extends UndiciError { + constructor(message, socket) { + super(message); + Error.captureStackTrace(this, _SocketError); + this.name = "SocketError"; + this.message = message || "Socket error"; + this.code = "UND_ERR_SOCKET"; + this.socket = socket; + } + }; + var NotSupportedError = class _NotSupportedError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _NotSupportedError); + this.name = "NotSupportedError"; + this.message = message || "Not supported error"; + this.code = "UND_ERR_NOT_SUPPORTED"; + } + }; + var BalancedPoolMissingUpstreamError = class extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, NotSupportedError); + this.name = "MissingUpstreamError"; + this.message = message || "No upstream has been added to the BalancedPool"; + this.code = "UND_ERR_BPL_MISSING_UPSTREAM"; + } + }; + var HTTPParserError = class _HTTPParserError extends Error { + constructor(message, code, data) { + super(message); + Error.captureStackTrace(this, _HTTPParserError); + this.name = "HTTPParserError"; + this.code = code ? `HPE_${code}` : void 0; + this.data = data ? data.toString() : void 0; + } + }; + var ResponseExceededMaxSizeError = class _ResponseExceededMaxSizeError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _ResponseExceededMaxSizeError); + this.name = "ResponseExceededMaxSizeError"; + this.message = message || "Response content exceeded max size"; + this.code = "UND_ERR_RES_EXCEEDED_MAX_SIZE"; + } + }; + module2.exports = { + HTTPParserError, + UndiciError, + HeadersTimeoutError, + HeadersOverflowError, + BodyTimeoutError, + RequestContentLengthMismatchError, + ConnectTimeoutError, + ResponseStatusCodeError, + InvalidArgumentError, + InvalidReturnValueError, + RequestAbortedError, + ClientDestroyedError, + ClientClosedError, + InformationalError, + SocketError, + NotSupportedError, + ResponseContentLengthMismatchError, + BalancedPoolMissingUpstreamError, + ResponseExceededMaxSizeError + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/util.js +var require_util = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/util.js"(exports2, module2) { + "use strict"; + var assert = require("assert"); + var { kDestroyed, kBodyUsed } = require_symbols(); + var { IncomingMessage } = require("http"); + var stream = require("stream"); + var net = require("net"); + var { InvalidArgumentError } = require_errors(); + var { Blob: Blob2 } = require("buffer"); + var nodeUtil = require("util"); + var { stringify } = require("querystring"); + var [nodeMajor, nodeMinor] = process.versions.node.split(".").map((v) => Number(v)); + function nop() { + } + function isStream(obj) { + return obj && typeof obj === "object" && typeof obj.pipe === "function" && typeof obj.on === "function"; + } + function isBlobLike(object) { + return Blob2 && object instanceof Blob2 || object && typeof object === "object" && (typeof object.stream === "function" || typeof object.arrayBuffer === "function") && /^(Blob|File)$/.test(object[Symbol.toStringTag]); + } + function buildURL(url, queryParams) { + if (url.includes("?") || url.includes("#")) { + throw new Error('Query params cannot be passed when url already contains "?" or "#".'); + } + const stringified = stringify(queryParams); + if (stringified) { + url += "?" + stringified; + } + return url; + } + function parseURL(url) { + if (typeof url === "string") { + url = new URL(url); + if (!/^https?:/.test(url.origin || url.protocol)) { + throw new InvalidArgumentError("Invalid URL protocol: the URL must start with `http:` or `https:`."); + } + return url; + } + if (!url || typeof url !== "object") { + throw new InvalidArgumentError("Invalid URL: The URL argument must be a non-null object."); + } + if (!/^https?:/.test(url.origin || url.protocol)) { + throw new InvalidArgumentError("Invalid URL protocol: the URL must start with `http:` or `https:`."); + } + if (!(url instanceof URL)) { + if (url.port != null && url.port !== "" && !Number.isFinite(parseInt(url.port))) { + throw new InvalidArgumentError("Invalid URL: port must be a valid integer or a string representation of an integer."); + } + if (url.path != null && typeof url.path !== "string") { + throw new InvalidArgumentError("Invalid URL path: the path must be a string or null/undefined."); + } + if (url.pathname != null && typeof url.pathname !== "string") { + throw new InvalidArgumentError("Invalid URL pathname: the pathname must be a string or null/undefined."); + } + if (url.hostname != null && typeof url.hostname !== "string") { + throw new InvalidArgumentError("Invalid URL hostname: the hostname must be a string or null/undefined."); + } + if (url.origin != null && typeof url.origin !== "string") { + throw new InvalidArgumentError("Invalid URL origin: the origin must be a string or null/undefined."); + } + const port = url.port != null ? url.port : url.protocol === "https:" ? 443 : 80; + let origin = url.origin != null ? url.origin : `${url.protocol}//${url.hostname}:${port}`; + let path = url.path != null ? url.path : `${url.pathname || ""}${url.search || ""}`; + if (origin.endsWith("/")) { + origin = origin.substring(0, origin.length - 1); + } + if (path && !path.startsWith("/")) { + path = `/${path}`; + } + url = new URL(origin + path); + } + return url; + } + function parseOrigin(url) { + url = parseURL(url); + if (url.pathname !== "/" || url.search || url.hash) { + throw new InvalidArgumentError("invalid url"); + } + return url; + } + function getHostname(host) { + if (host[0] === "[") { + const idx2 = host.indexOf("]"); + assert(idx2 !== -1); + return host.substr(1, idx2 - 1); + } + const idx = host.indexOf(":"); + if (idx === -1) + return host; + return host.substr(0, idx); + } + function getServerName(host) { + if (!host) { + return null; + } + assert.strictEqual(typeof host, "string"); + const servername = getHostname(host); + if (net.isIP(servername)) { + return ""; + } + return servername; + } + function deepClone(obj) { + return JSON.parse(JSON.stringify(obj)); + } + function isAsyncIterable(obj) { + return !!(obj != null && typeof obj[Symbol.asyncIterator] === "function"); + } + function isIterable(obj) { + return !!(obj != null && (typeof obj[Symbol.iterator] === "function" || typeof obj[Symbol.asyncIterator] === "function")); + } + function bodyLength(body) { + if (body == null) { + return 0; + } else if (isStream(body)) { + const state = body._readableState; + return state && state.objectMode === false && state.ended === true && Number.isFinite(state.length) ? state.length : null; + } else if (isBlobLike(body)) { + return body.size != null ? body.size : null; + } else if (isBuffer(body)) { + return body.byteLength; + } + return null; + } + function isDestroyed(stream2) { + return !stream2 || !!(stream2.destroyed || stream2[kDestroyed]); + } + function isReadableAborted(stream2) { + const state = stream2 && stream2._readableState; + return isDestroyed(stream2) && state && !state.endEmitted; + } + function destroy(stream2, err) { + if (!isStream(stream2) || isDestroyed(stream2)) { + return; + } + if (typeof stream2.destroy === "function") { + if (Object.getPrototypeOf(stream2).constructor === IncomingMessage) { + stream2.socket = null; + } + stream2.destroy(err); + } else if (err) { + process.nextTick((stream3, err2) => { + stream3.emit("error", err2); + }, stream2, err); + } + if (stream2.destroyed !== true) { + stream2[kDestroyed] = true; + } + } + var KEEPALIVE_TIMEOUT_EXPR = /timeout=(\d+)/; + function parseKeepAliveTimeout(val) { + const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR); + return m ? parseInt(m[1], 10) * 1e3 : null; + } + function parseHeaders(headers, obj = {}) { + if (!Array.isArray(headers)) + return headers; + for (let i = 0; i < headers.length; i += 2) { + const key = headers[i].toString().toLowerCase(); + let val = obj[key]; + if (!val) { + if (Array.isArray(headers[i + 1])) { + obj[key] = headers[i + 1]; + } else { + obj[key] = headers[i + 1].toString("utf8"); + } + } else { + if (!Array.isArray(val)) { + val = [val]; + obj[key] = val; + } + val.push(headers[i + 1].toString("utf8")); + } + } + if ("content-length" in obj && "content-disposition" in obj) { + obj["content-disposition"] = Buffer.from(obj["content-disposition"]).toString("latin1"); + } + return obj; + } + function parseRawHeaders(headers) { + const ret = []; + let hasContentLength = false; + let contentDispositionIdx = -1; + for (let n = 0; n < headers.length; n += 2) { + const key = headers[n + 0].toString(); + const val = headers[n + 1].toString("utf8"); + if (key.length === 14 && (key === "content-length" || key.toLowerCase() === "content-length")) { + ret.push(key, val); + hasContentLength = true; + } else if (key.length === 19 && (key === "content-disposition" || key.toLowerCase() === "content-disposition")) { + contentDispositionIdx = ret.push(key, val) - 1; + } else { + ret.push(key, val); + } + } + if (hasContentLength && contentDispositionIdx !== -1) { + ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString("latin1"); + } + return ret; + } + function isBuffer(buffer) { + return buffer instanceof Uint8Array || Buffer.isBuffer(buffer); + } + function validateHandler(handler, method, upgrade) { + if (!handler || typeof handler !== "object") { + throw new InvalidArgumentError("handler must be an object"); + } + if (typeof handler.onConnect !== "function") { + throw new InvalidArgumentError("invalid onConnect method"); + } + if (typeof handler.onError !== "function") { + throw new InvalidArgumentError("invalid onError method"); + } + if (typeof handler.onBodySent !== "function" && handler.onBodySent !== void 0) { + throw new InvalidArgumentError("invalid onBodySent method"); + } + if (upgrade || method === "CONNECT") { + if (typeof handler.onUpgrade !== "function") { + throw new InvalidArgumentError("invalid onUpgrade method"); + } + } else { + if (typeof handler.onHeaders !== "function") { + throw new InvalidArgumentError("invalid onHeaders method"); + } + if (typeof handler.onData !== "function") { + throw new InvalidArgumentError("invalid onData method"); + } + if (typeof handler.onComplete !== "function") { + throw new InvalidArgumentError("invalid onComplete method"); + } + } + } + function isDisturbed(body) { + return !!(body && (stream.isDisturbed ? stream.isDisturbed(body) || body[kBodyUsed] : body[kBodyUsed] || body.readableDidRead || body._readableState && body._readableState.dataEmitted || isReadableAborted(body))); + } + function isErrored(body) { + return !!(body && (stream.isErrored ? stream.isErrored(body) : /state: 'errored'/.test( + nodeUtil.inspect(body) + ))); + } + function isReadable(body) { + return !!(body && (stream.isReadable ? stream.isReadable(body) : /state: 'readable'/.test( + nodeUtil.inspect(body) + ))); + } + function getSocketInfo(socket) { + return { + localAddress: socket.localAddress, + localPort: socket.localPort, + remoteAddress: socket.remoteAddress, + remotePort: socket.remotePort, + remoteFamily: socket.remoteFamily, + timeout: socket.timeout, + bytesWritten: socket.bytesWritten, + bytesRead: socket.bytesRead + }; + } + async function* convertIterableToBuffer(iterable) { + for await (const chunk of iterable) { + yield Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk); + } + } + var ReadableStream; + function ReadableStreamFrom(iterable) { + if (!ReadableStream) { + ReadableStream = require("stream/web").ReadableStream; + } + if (ReadableStream.from) { + return ReadableStream.from(convertIterableToBuffer(iterable)); + } + let iterator; + return new ReadableStream( + { + async start() { + iterator = iterable[Symbol.asyncIterator](); + }, + async pull(controller) { + const { done, value } = await iterator.next(); + if (done) { + queueMicrotask(() => { + controller.close(); + }); + } else { + const buf = Buffer.isBuffer(value) ? value : Buffer.from(value); + controller.enqueue(new Uint8Array(buf)); + } + return controller.desiredSize > 0; + }, + async cancel(reason) { + await iterator.return(); + } + }, + 0 + ); + } + function isFormDataLike(object) { + return object && typeof object === "object" && typeof object.append === "function" && typeof object.delete === "function" && typeof object.get === "function" && typeof object.getAll === "function" && typeof object.has === "function" && typeof object.set === "function" && object[Symbol.toStringTag] === "FormData"; + } + function throwIfAborted(signal) { + if (!signal) { + return; + } + if (typeof signal.throwIfAborted === "function") { + signal.throwIfAborted(); + } else { + if (signal.aborted) { + const err = new Error("The operation was aborted"); + err.name = "AbortError"; + throw err; + } + } + } + var events; + function addAbortListener(signal, listener) { + if (typeof Symbol.dispose === "symbol") { + if (!events) { + events = require("events"); + } + if (typeof events.addAbortListener === "function" && "aborted" in signal) { + return events.addAbortListener(signal, listener); + } + } + if ("addEventListener" in signal) { + signal.addEventListener("abort", listener, { once: true }); + return () => signal.removeEventListener("abort", listener); + } + signal.addListener("abort", listener); + return () => signal.removeListener("abort", listener); + } + var hasToWellFormed = !!String.prototype.toWellFormed; + function toUSVString(val) { + if (hasToWellFormed) { + return `${val}`.toWellFormed(); + } else if (nodeUtil.toUSVString) { + return nodeUtil.toUSVString(val); + } + return `${val}`; + } + var kEnumerableProperty = /* @__PURE__ */ Object.create(null); + kEnumerableProperty.enumerable = true; + module2.exports = { + kEnumerableProperty, + nop, + isDisturbed, + isErrored, + isReadable, + toUSVString, + isReadableAborted, + isBlobLike, + parseOrigin, + parseURL, + getServerName, + isStream, + isIterable, + isAsyncIterable, + isDestroyed, + parseRawHeaders, + parseHeaders, + parseKeepAliveTimeout, + destroy, + bodyLength, + deepClone, + ReadableStreamFrom, + isBuffer, + validateHandler, + getSocketInfo, + isFormDataLike, + buildURL, + throwIfAborted, + addAbortListener, + nodeMajor, + nodeMinor, + nodeHasAutoSelectFamily: nodeMajor > 18 || nodeMajor === 18 && nodeMinor >= 13 + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/timers.js +var require_timers = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/timers.js"(exports2, module2) { + "use strict"; + var fastNow = Date.now(); + var fastNowTimeout; + var fastTimers = []; + function onTimeout() { + fastNow = Date.now(); + let len = fastTimers.length; + let idx = 0; + while (idx < len) { + const timer = fastTimers[idx]; + if (timer.state === 0) { + timer.state = fastNow + timer.delay; + } else if (timer.state > 0 && fastNow >= timer.state) { + timer.state = -1; + timer.callback(timer.opaque); + } + if (timer.state === -1) { + timer.state = -2; + if (idx !== len - 1) { + fastTimers[idx] = fastTimers.pop(); + } else { + fastTimers.pop(); + } + len -= 1; + } else { + idx += 1; + } + } + if (fastTimers.length > 0) { + refreshTimeout(); + } + } + function refreshTimeout() { + if (fastNowTimeout && fastNowTimeout.refresh) { + fastNowTimeout.refresh(); + } else { + clearTimeout(fastNowTimeout); + fastNowTimeout = setTimeout(onTimeout, 1e3); + if (fastNowTimeout.unref) { + fastNowTimeout.unref(); + } + } + } + var Timeout = class { + constructor(callback, delay, opaque) { + this.callback = callback; + this.delay = delay; + this.opaque = opaque; + this.state = -2; + this.refresh(); + } + refresh() { + if (this.state === -2) { + fastTimers.push(this); + if (!fastNowTimeout || fastTimers.length === 1) { + refreshTimeout(); + } + } + this.state = 0; + } + clear() { + this.state = -1; + } + }; + module2.exports = { + setTimeout(callback, delay, opaque) { + return delay < 1e3 ? setTimeout(callback, delay, opaque) : new Timeout(callback, delay, opaque); + }, + clearTimeout(timeout) { + if (timeout instanceof Timeout) { + timeout.clear(); + } else { + clearTimeout(timeout); + } + } + }; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/deps/streamsearch/sbmh.js +var require_sbmh = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/deps/streamsearch/sbmh.js"(exports2, module2) { + "use strict"; + var EventEmitter = require("events").EventEmitter; + var inherits = require("util").inherits; + function SBMH(needle) { + if (typeof needle === "string") { + needle = Buffer.from(needle); + } + if (!Buffer.isBuffer(needle)) { + throw new TypeError("The needle has to be a String or a Buffer."); + } + const needleLength = needle.length; + if (needleLength === 0) { + throw new Error("The needle cannot be an empty String/Buffer."); + } + if (needleLength > 256) { + throw new Error("The needle cannot have a length bigger than 256."); + } + this.maxMatches = Infinity; + this.matches = 0; + this._occ = new Array(256).fill(needleLength); + this._lookbehind_size = 0; + this._needle = needle; + this._bufpos = 0; + this._lookbehind = Buffer.alloc(needleLength); + for (var i = 0; i < needleLength - 1; ++i) { + this._occ[needle[i]] = needleLength - 1 - i; + } + } + inherits(SBMH, EventEmitter); + SBMH.prototype.reset = function() { + this._lookbehind_size = 0; + this.matches = 0; + this._bufpos = 0; + }; + SBMH.prototype.push = function(chunk, pos) { + if (!Buffer.isBuffer(chunk)) { + chunk = Buffer.from(chunk, "binary"); + } + const chlen = chunk.length; + this._bufpos = pos || 0; + let r; + while (r !== chlen && this.matches < this.maxMatches) { + r = this._sbmh_feed(chunk); + } + return r; + }; + SBMH.prototype._sbmh_feed = function(data) { + const len = data.length; + const needle = this._needle; + const needleLength = needle.length; + const lastNeedleChar = needle[needleLength - 1]; + let pos = -this._lookbehind_size; + let ch; + if (pos < 0) { + while (pos < 0 && pos <= len - needleLength) { + ch = this._sbmh_lookup_char(data, pos + needleLength - 1); + if (ch === lastNeedleChar && this._sbmh_memcmp(data, pos, needleLength - 1)) { + this._lookbehind_size = 0; + ++this.matches; + this.emit("info", true); + return this._bufpos = pos + needleLength; + } + pos += this._occ[ch]; + } + if (pos < 0) { + while (pos < 0 && !this._sbmh_memcmp(data, pos, len - pos)) { + ++pos; + } + } + if (pos >= 0) { + this.emit("info", false, this._lookbehind, 0, this._lookbehind_size); + this._lookbehind_size = 0; + } else { + const bytesToCutOff = this._lookbehind_size + pos; + if (bytesToCutOff > 0) { + this.emit("info", false, this._lookbehind, 0, bytesToCutOff); + } + this._lookbehind.copy( + this._lookbehind, + 0, + bytesToCutOff, + this._lookbehind_size - bytesToCutOff + ); + this._lookbehind_size -= bytesToCutOff; + data.copy(this._lookbehind, this._lookbehind_size); + this._lookbehind_size += len; + this._bufpos = len; + return len; + } + } + pos += (pos >= 0) * this._bufpos; + if (data.indexOf(needle, pos) !== -1) { + pos = data.indexOf(needle, pos); + ++this.matches; + if (pos > 0) { + this.emit("info", true, data, this._bufpos, pos); + } else { + this.emit("info", true); + } + return this._bufpos = pos + needleLength; + } else { + pos = len - needleLength; + } + while (pos < len && (data[pos] !== needle[0] || Buffer.compare( + data.subarray(pos, pos + len - pos), + needle.subarray(0, len - pos) + ) !== 0)) { + ++pos; + } + if (pos < len) { + data.copy(this._lookbehind, 0, pos, pos + (len - pos)); + this._lookbehind_size = len - pos; + } + if (pos > 0) { + this.emit("info", false, data, this._bufpos, pos < len ? pos : len); + } + this._bufpos = len; + return len; + }; + SBMH.prototype._sbmh_lookup_char = function(data, pos) { + return pos < 0 ? this._lookbehind[this._lookbehind_size + pos] : data[pos]; + }; + SBMH.prototype._sbmh_memcmp = function(data, pos, len) { + for (var i = 0; i < len; ++i) { + if (this._sbmh_lookup_char(data, pos + i) !== this._needle[i]) { + return false; + } + } + return true; + }; + module2.exports = SBMH; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/deps/dicer/lib/PartStream.js +var require_PartStream = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/deps/dicer/lib/PartStream.js"(exports2, module2) { + "use strict"; + var inherits = require("util").inherits; + var ReadableStream = require("stream").Readable; + function PartStream(opts) { + ReadableStream.call(this, opts); + } + inherits(PartStream, ReadableStream); + PartStream.prototype._read = function(n) { + }; + module2.exports = PartStream; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/getLimit.js +var require_getLimit = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/getLimit.js"(exports2, module2) { + "use strict"; + module2.exports = function getLimit(limits, name, defaultLimit) { + if (!limits || limits[name] === void 0 || limits[name] === null) { + return defaultLimit; + } + if (typeof limits[name] !== "number" || isNaN(limits[name])) { + throw new TypeError("Limit " + name + " is not a valid number"); + } + return limits[name]; + }; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/deps/dicer/lib/HeaderParser.js +var require_HeaderParser = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/deps/dicer/lib/HeaderParser.js"(exports2, module2) { + "use strict"; + var EventEmitter = require("events").EventEmitter; + var inherits = require("util").inherits; + var getLimit = require_getLimit(); + var StreamSearch = require_sbmh(); + var B_DCRLF = Buffer.from("\r\n\r\n"); + var RE_CRLF = /\r\n/g; + var RE_HDR = /^([^:]+):[ \t]?([\x00-\xFF]+)?$/; + function HeaderParser(cfg) { + EventEmitter.call(this); + cfg = cfg || {}; + const self = this; + this.nread = 0; + this.maxed = false; + this.npairs = 0; + this.maxHeaderPairs = getLimit(cfg, "maxHeaderPairs", 2e3); + this.maxHeaderSize = getLimit(cfg, "maxHeaderSize", 80 * 1024); + this.buffer = ""; + this.header = {}; + this.finished = false; + this.ss = new StreamSearch(B_DCRLF); + this.ss.on("info", function(isMatch, data, start, end) { + if (data && !self.maxed) { + if (self.nread + end - start >= self.maxHeaderSize) { + end = self.maxHeaderSize - self.nread + start; + self.nread = self.maxHeaderSize; + self.maxed = true; + } else { + self.nread += end - start; + } + self.buffer += data.toString("binary", start, end); + } + if (isMatch) { + self._finish(); + } + }); + } + inherits(HeaderParser, EventEmitter); + HeaderParser.prototype.push = function(data) { + const r = this.ss.push(data); + if (this.finished) { + return r; + } + }; + HeaderParser.prototype.reset = function() { + this.finished = false; + this.buffer = ""; + this.header = {}; + this.ss.reset(); + }; + HeaderParser.prototype._finish = function() { + if (this.buffer) { + this._parseHeader(); + } + this.ss.matches = this.ss.maxMatches; + const header = this.header; + this.header = {}; + this.buffer = ""; + this.finished = true; + this.nread = this.npairs = 0; + this.maxed = false; + this.emit("header", header); + }; + HeaderParser.prototype._parseHeader = function() { + if (this.npairs === this.maxHeaderPairs) { + return; + } + const lines = this.buffer.split(RE_CRLF); + const len = lines.length; + let m, h; + for (var i = 0; i < len; ++i) { + if (lines[i].length === 0) { + continue; + } + if (lines[i][0] === " " || lines[i][0] === " ") { + if (h) { + this.header[h][this.header[h].length - 1] += lines[i]; + continue; + } + } + const posColon = lines[i].indexOf(":"); + if (posColon === -1 || posColon === 0) { + return; + } + m = RE_HDR.exec(lines[i]); + h = m[1].toLowerCase(); + this.header[h] = this.header[h] || []; + this.header[h].push(m[2] || ""); + if (++this.npairs === this.maxHeaderPairs) { + break; + } + } + }; + module2.exports = HeaderParser; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/deps/dicer/lib/Dicer.js +var require_Dicer = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/deps/dicer/lib/Dicer.js"(exports2, module2) { + "use strict"; + var WritableStream = require("stream").Writable; + var inherits = require("util").inherits; + var StreamSearch = require_sbmh(); + var PartStream = require_PartStream(); + var HeaderParser = require_HeaderParser(); + var DASH = 45; + var B_ONEDASH = Buffer.from("-"); + var B_CRLF = Buffer.from("\r\n"); + var EMPTY_FN = function() { + }; + function Dicer(cfg) { + if (!(this instanceof Dicer)) { + return new Dicer(cfg); + } + WritableStream.call(this, cfg); + if (!cfg || !cfg.headerFirst && typeof cfg.boundary !== "string") { + throw new TypeError("Boundary required"); + } + if (typeof cfg.boundary === "string") { + this.setBoundary(cfg.boundary); + } else { + this._bparser = void 0; + } + this._headerFirst = cfg.headerFirst; + this._dashes = 0; + this._parts = 0; + this._finished = false; + this._realFinish = false; + this._isPreamble = true; + this._justMatched = false; + this._firstWrite = true; + this._inHeader = true; + this._part = void 0; + this._cb = void 0; + this._ignoreData = false; + this._partOpts = { highWaterMark: cfg.partHwm }; + this._pause = false; + const self = this; + this._hparser = new HeaderParser(cfg); + this._hparser.on("header", function(header) { + self._inHeader = false; + self._part.emit("header", header); + }); + } + inherits(Dicer, WritableStream); + Dicer.prototype.emit = function(ev) { + if (ev === "finish" && !this._realFinish) { + if (!this._finished) { + const self = this; + process.nextTick(function() { + self.emit("error", new Error("Unexpected end of multipart data")); + if (self._part && !self._ignoreData) { + const type = self._isPreamble ? "Preamble" : "Part"; + self._part.emit("error", new Error(type + " terminated early due to unexpected end of multipart data")); + self._part.push(null); + process.nextTick(function() { + self._realFinish = true; + self.emit("finish"); + self._realFinish = false; + }); + return; + } + self._realFinish = true; + self.emit("finish"); + self._realFinish = false; + }); + } + } else { + WritableStream.prototype.emit.apply(this, arguments); + } + }; + Dicer.prototype._write = function(data, encoding, cb) { + if (!this._hparser && !this._bparser) { + return cb(); + } + if (this._headerFirst && this._isPreamble) { + if (!this._part) { + this._part = new PartStream(this._partOpts); + if (this._events.preamble) { + this.emit("preamble", this._part); + } else { + this._ignore(); + } + } + const r = this._hparser.push(data); + if (!this._inHeader && r !== void 0 && r < data.length) { + data = data.slice(r); + } else { + return cb(); + } + } + if (this._firstWrite) { + this._bparser.push(B_CRLF); + this._firstWrite = false; + } + this._bparser.push(data); + if (this._pause) { + this._cb = cb; + } else { + cb(); + } + }; + Dicer.prototype.reset = function() { + this._part = void 0; + this._bparser = void 0; + this._hparser = void 0; + }; + Dicer.prototype.setBoundary = function(boundary) { + const self = this; + this._bparser = new StreamSearch("\r\n--" + boundary); + this._bparser.on("info", function(isMatch, data, start, end) { + self._oninfo(isMatch, data, start, end); + }); + }; + Dicer.prototype._ignore = function() { + if (this._part && !this._ignoreData) { + this._ignoreData = true; + this._part.on("error", EMPTY_FN); + this._part.resume(); + } + }; + Dicer.prototype._oninfo = function(isMatch, data, start, end) { + let buf; + const self = this; + let i = 0; + let r; + let shouldWriteMore = true; + if (!this._part && this._justMatched && data) { + while (this._dashes < 2 && start + i < end) { + if (data[start + i] === DASH) { + ++i; + ++this._dashes; + } else { + if (this._dashes) { + buf = B_ONEDASH; + } + this._dashes = 0; + break; + } + } + if (this._dashes === 2) { + if (start + i < end && this._events.trailer) { + this.emit("trailer", data.slice(start + i, end)); + } + this.reset(); + this._finished = true; + if (self._parts === 0) { + self._realFinish = true; + self.emit("finish"); + self._realFinish = false; + } + } + if (this._dashes) { + return; + } + } + if (this._justMatched) { + this._justMatched = false; + } + if (!this._part) { + this._part = new PartStream(this._partOpts); + this._part._read = function(n) { + self._unpause(); + }; + if (this._isPreamble && this._events.preamble) { + this.emit("preamble", this._part); + } else if (this._isPreamble !== true && this._events.part) { + this.emit("part", this._part); + } else { + this._ignore(); + } + if (!this._isPreamble) { + this._inHeader = true; + } + } + if (data && start < end && !this._ignoreData) { + if (this._isPreamble || !this._inHeader) { + if (buf) { + shouldWriteMore = this._part.push(buf); + } + shouldWriteMore = this._part.push(data.slice(start, end)); + if (!shouldWriteMore) { + this._pause = true; + } + } else if (!this._isPreamble && this._inHeader) { + if (buf) { + this._hparser.push(buf); + } + r = this._hparser.push(data.slice(start, end)); + if (!this._inHeader && r !== void 0 && r < end) { + this._oninfo(false, data, start + r, end); + } + } + } + if (isMatch) { + this._hparser.reset(); + if (this._isPreamble) { + this._isPreamble = false; + } else { + if (start !== end) { + ++this._parts; + this._part.on("end", function() { + if (--self._parts === 0) { + if (self._finished) { + self._realFinish = true; + self.emit("finish"); + self._realFinish = false; + } else { + self._unpause(); + } + } + }); + } + } + this._part.push(null); + this._part = void 0; + this._ignoreData = false; + this._justMatched = true; + this._dashes = 0; + } + }; + Dicer.prototype._unpause = function() { + if (!this._pause) { + return; + } + this._pause = false; + if (this._cb) { + const cb = this._cb; + this._cb = void 0; + cb(); + } + }; + module2.exports = Dicer; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/decodeText.js +var require_decodeText = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/decodeText.js"(exports2, module2) { + "use strict"; + var utf8Decoder = new TextDecoder("utf-8"); + var textDecoders = /* @__PURE__ */ new Map([ + ["utf-8", utf8Decoder], + ["utf8", utf8Decoder] + ]); + function decodeText(text, textEncoding, destEncoding) { + if (text) { + if (textDecoders.has(destEncoding)) { + try { + return textDecoders.get(destEncoding).decode(Buffer.from(text, textEncoding)); + } catch (e) { + } + } else { + try { + textDecoders.set(destEncoding, new TextDecoder(destEncoding)); + return textDecoders.get(destEncoding).decode(Buffer.from(text, textEncoding)); + } catch (e) { + } + } + } + return text; + } + module2.exports = decodeText; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/parseParams.js +var require_parseParams = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/parseParams.js"(exports2, module2) { + "use strict"; + var decodeText = require_decodeText(); + var RE_ENCODED = /%([a-fA-F0-9]{2})/g; + function encodedReplacer(match, byte) { + return String.fromCharCode(parseInt(byte, 16)); + } + function parseParams(str) { + const res = []; + let state = "key"; + let charset = ""; + let inquote = false; + let escaping = false; + let p = 0; + let tmp = ""; + for (var i = 0, len = str.length; i < len; ++i) { + const char = str[i]; + if (char === "\\" && inquote) { + if (escaping) { + escaping = false; + } else { + escaping = true; + continue; + } + } else if (char === '"') { + if (!escaping) { + if (inquote) { + inquote = false; + state = "key"; + } else { + inquote = true; + } + continue; + } else { + escaping = false; + } + } else { + if (escaping && inquote) { + tmp += "\\"; + } + escaping = false; + if ((state === "charset" || state === "lang") && char === "'") { + if (state === "charset") { + state = "lang"; + charset = tmp.substring(1); + } else { + state = "value"; + } + tmp = ""; + continue; + } else if (state === "key" && (char === "*" || char === "=") && res.length) { + if (char === "*") { + state = "charset"; + } else { + state = "value"; + } + res[p] = [tmp, void 0]; + tmp = ""; + continue; + } else if (!inquote && char === ";") { + state = "key"; + if (charset) { + if (tmp.length) { + tmp = decodeText( + tmp.replace(RE_ENCODED, encodedReplacer), + "binary", + charset + ); + } + charset = ""; + } else if (tmp.length) { + tmp = decodeText(tmp, "binary", "utf8"); + } + if (res[p] === void 0) { + res[p] = tmp; + } else { + res[p][1] = tmp; + } + tmp = ""; + ++p; + continue; + } else if (!inquote && (char === " " || char === " ")) { + continue; + } + } + tmp += char; + } + if (charset && tmp.length) { + tmp = decodeText( + tmp.replace(RE_ENCODED, encodedReplacer), + "binary", + charset + ); + } else if (tmp) { + tmp = decodeText(tmp, "binary", "utf8"); + } + if (res[p] === void 0) { + if (tmp) { + res[p] = tmp; + } + } else { + res[p][1] = tmp; + } + return res; + } + module2.exports = parseParams; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/basename.js +var require_basename = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/basename.js"(exports2, module2) { + "use strict"; + module2.exports = function basename(path) { + if (typeof path !== "string") { + return ""; + } + for (var i = path.length - 1; i >= 0; --i) { + switch (path.charCodeAt(i)) { + case 47: + case 92: + path = path.slice(i + 1); + return path === ".." || path === "." ? "" : path; + } + } + return path === ".." || path === "." ? "" : path; + }; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/types/multipart.js +var require_multipart = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/types/multipart.js"(exports2, module2) { + "use strict"; + var { Readable } = require("stream"); + var { inherits } = require("util"); + var Dicer = require_Dicer(); + var parseParams = require_parseParams(); + var decodeText = require_decodeText(); + var basename = require_basename(); + var getLimit = require_getLimit(); + var RE_BOUNDARY = /^boundary$/i; + var RE_FIELD = /^form-data$/i; + var RE_CHARSET = /^charset$/i; + var RE_FILENAME = /^filename$/i; + var RE_NAME = /^name$/i; + Multipart.detect = /^multipart\/form-data/i; + function Multipart(boy, cfg) { + let i; + let len; + const self = this; + let boundary; + const limits = cfg.limits; + const isPartAFile = cfg.isPartAFile || ((fieldName, contentType, fileName) => contentType === "application/octet-stream" || fileName !== void 0); + const parsedConType = cfg.parsedConType || []; + const defCharset = cfg.defCharset || "utf8"; + const preservePath = cfg.preservePath; + const fileOpts = { highWaterMark: cfg.fileHwm }; + for (i = 0, len = parsedConType.length; i < len; ++i) { + if (Array.isArray(parsedConType[i]) && RE_BOUNDARY.test(parsedConType[i][0])) { + boundary = parsedConType[i][1]; + break; + } + } + function checkFinished() { + if (nends === 0 && finished && !boy._done) { + finished = false; + self.end(); + } + } + if (typeof boundary !== "string") { + throw new Error("Multipart: Boundary not found"); + } + const fieldSizeLimit = getLimit(limits, "fieldSize", 1 * 1024 * 1024); + const fileSizeLimit = getLimit(limits, "fileSize", Infinity); + const filesLimit = getLimit(limits, "files", Infinity); + const fieldsLimit = getLimit(limits, "fields", Infinity); + const partsLimit = getLimit(limits, "parts", Infinity); + const headerPairsLimit = getLimit(limits, "headerPairs", 2e3); + const headerSizeLimit = getLimit(limits, "headerSize", 80 * 1024); + let nfiles = 0; + let nfields = 0; + let nends = 0; + let curFile; + let curField; + let finished = false; + this._needDrain = false; + this._pause = false; + this._cb = void 0; + this._nparts = 0; + this._boy = boy; + const parserCfg = { + boundary, + maxHeaderPairs: headerPairsLimit, + maxHeaderSize: headerSizeLimit, + partHwm: fileOpts.highWaterMark, + highWaterMark: cfg.highWaterMark + }; + this.parser = new Dicer(parserCfg); + this.parser.on("drain", function() { + self._needDrain = false; + if (self._cb && !self._pause) { + const cb = self._cb; + self._cb = void 0; + cb(); + } + }).on("part", function onPart(part) { + if (++self._nparts > partsLimit) { + self.parser.removeListener("part", onPart); + self.parser.on("part", skipPart); + boy.hitPartsLimit = true; + boy.emit("partsLimit"); + return skipPart(part); + } + if (curField) { + const field = curField; + field.emit("end"); + field.removeAllListeners("end"); + } + part.on("header", function(header) { + let contype; + let fieldname; + let parsed; + let charset; + let encoding; + let filename; + let nsize = 0; + if (header["content-type"]) { + parsed = parseParams(header["content-type"][0]); + if (parsed[0]) { + contype = parsed[0].toLowerCase(); + for (i = 0, len = parsed.length; i < len; ++i) { + if (RE_CHARSET.test(parsed[i][0])) { + charset = parsed[i][1].toLowerCase(); + break; + } + } + } + } + if (contype === void 0) { + contype = "text/plain"; + } + if (charset === void 0) { + charset = defCharset; + } + if (header["content-disposition"]) { + parsed = parseParams(header["content-disposition"][0]); + if (!RE_FIELD.test(parsed[0])) { + return skipPart(part); + } + for (i = 0, len = parsed.length; i < len; ++i) { + if (RE_NAME.test(parsed[i][0])) { + fieldname = parsed[i][1]; + } else if (RE_FILENAME.test(parsed[i][0])) { + filename = parsed[i][1]; + if (!preservePath) { + filename = basename(filename); + } + } + } + } else { + return skipPart(part); + } + if (header["content-transfer-encoding"]) { + encoding = header["content-transfer-encoding"][0].toLowerCase(); + } else { + encoding = "7bit"; + } + let onData, onEnd; + if (isPartAFile(fieldname, contype, filename)) { + if (nfiles === filesLimit) { + if (!boy.hitFilesLimit) { + boy.hitFilesLimit = true; + boy.emit("filesLimit"); + } + return skipPart(part); + } + ++nfiles; + if (!boy._events.file) { + self.parser._ignore(); + return; + } + ++nends; + const file = new FileStream(fileOpts); + curFile = file; + file.on("end", function() { + --nends; + self._pause = false; + checkFinished(); + if (self._cb && !self._needDrain) { + const cb = self._cb; + self._cb = void 0; + cb(); + } + }); + file._read = function(n) { + if (!self._pause) { + return; + } + self._pause = false; + if (self._cb && !self._needDrain) { + const cb = self._cb; + self._cb = void 0; + cb(); + } + }; + boy.emit("file", fieldname, file, filename, encoding, contype); + onData = function(data) { + if ((nsize += data.length) > fileSizeLimit) { + const extralen = fileSizeLimit - nsize + data.length; + if (extralen > 0) { + file.push(data.slice(0, extralen)); + } + file.truncated = true; + file.bytesRead = fileSizeLimit; + part.removeAllListeners("data"); + file.emit("limit"); + return; + } else if (!file.push(data)) { + self._pause = true; + } + file.bytesRead = nsize; + }; + onEnd = function() { + curFile = void 0; + file.push(null); + }; + } else { + if (nfields === fieldsLimit) { + if (!boy.hitFieldsLimit) { + boy.hitFieldsLimit = true; + boy.emit("fieldsLimit"); + } + return skipPart(part); + } + ++nfields; + ++nends; + let buffer = ""; + let truncated = false; + curField = part; + onData = function(data) { + if ((nsize += data.length) > fieldSizeLimit) { + const extralen = fieldSizeLimit - (nsize - data.length); + buffer += data.toString("binary", 0, extralen); + truncated = true; + part.removeAllListeners("data"); + } else { + buffer += data.toString("binary"); + } + }; + onEnd = function() { + curField = void 0; + if (buffer.length) { + buffer = decodeText(buffer, "binary", charset); + } + boy.emit("field", fieldname, buffer, false, truncated, encoding, contype); + --nends; + checkFinished(); + }; + } + part._readableState.sync = false; + part.on("data", onData); + part.on("end", onEnd); + }).on("error", function(err) { + if (curFile) { + curFile.emit("error", err); + } + }); + }).on("error", function(err) { + boy.emit("error", err); + }).on("finish", function() { + finished = true; + checkFinished(); + }); + } + Multipart.prototype.write = function(chunk, cb) { + const r = this.parser.write(chunk); + if (r && !this._pause) { + cb(); + } else { + this._needDrain = !r; + this._cb = cb; + } + }; + Multipart.prototype.end = function() { + const self = this; + if (self.parser.writable) { + self.parser.end(); + } else if (!self._boy._done) { + process.nextTick(function() { + self._boy._done = true; + self._boy.emit("finish"); + }); + } + }; + function skipPart(part) { + part.resume(); + } + function FileStream(opts) { + Readable.call(this, opts); + this.bytesRead = 0; + this.truncated = false; + } + inherits(FileStream, Readable); + FileStream.prototype._read = function(n) { + }; + module2.exports = Multipart; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/Decoder.js +var require_Decoder = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/Decoder.js"(exports2, module2) { + "use strict"; + var RE_PLUS = /\+/g; + var HEX = [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ]; + function Decoder() { + this.buffer = void 0; + } + Decoder.prototype.write = function(str) { + str = str.replace(RE_PLUS, " "); + let res = ""; + let i = 0; + let p = 0; + const len = str.length; + for (; i < len; ++i) { + if (this.buffer !== void 0) { + if (!HEX[str.charCodeAt(i)]) { + res += "%" + this.buffer; + this.buffer = void 0; + --i; + } else { + this.buffer += str[i]; + ++p; + if (this.buffer.length === 2) { + res += String.fromCharCode(parseInt(this.buffer, 16)); + this.buffer = void 0; + } + } + } else if (str[i] === "%") { + if (i > p) { + res += str.substring(p, i); + p = i; + } + this.buffer = ""; + ++p; + } + } + if (p < len && this.buffer === void 0) { + res += str.substring(p); + } + return res; + }; + Decoder.prototype.reset = function() { + this.buffer = void 0; + }; + module2.exports = Decoder; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/types/urlencoded.js +var require_urlencoded = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/types/urlencoded.js"(exports2, module2) { + "use strict"; + var Decoder = require_Decoder(); + var decodeText = require_decodeText(); + var getLimit = require_getLimit(); + var RE_CHARSET = /^charset$/i; + UrlEncoded.detect = /^application\/x-www-form-urlencoded/i; + function UrlEncoded(boy, cfg) { + const limits = cfg.limits; + const parsedConType = cfg.parsedConType; + this.boy = boy; + this.fieldSizeLimit = getLimit(limits, "fieldSize", 1 * 1024 * 1024); + this.fieldNameSizeLimit = getLimit(limits, "fieldNameSize", 100); + this.fieldsLimit = getLimit(limits, "fields", Infinity); + let charset; + for (var i = 0, len = parsedConType.length; i < len; ++i) { + if (Array.isArray(parsedConType[i]) && RE_CHARSET.test(parsedConType[i][0])) { + charset = parsedConType[i][1].toLowerCase(); + break; + } + } + if (charset === void 0) { + charset = cfg.defCharset || "utf8"; + } + this.decoder = new Decoder(); + this.charset = charset; + this._fields = 0; + this._state = "key"; + this._checkingBytes = true; + this._bytesKey = 0; + this._bytesVal = 0; + this._key = ""; + this._val = ""; + this._keyTrunc = false; + this._valTrunc = false; + this._hitLimit = false; + } + UrlEncoded.prototype.write = function(data, cb) { + if (this._fields === this.fieldsLimit) { + if (!this.boy.hitFieldsLimit) { + this.boy.hitFieldsLimit = true; + this.boy.emit("fieldsLimit"); + } + return cb(); + } + let idxeq; + let idxamp; + let i; + let p = 0; + const len = data.length; + while (p < len) { + if (this._state === "key") { + idxeq = idxamp = void 0; + for (i = p; i < len; ++i) { + if (!this._checkingBytes) { + ++p; + } + if (data[i] === 61) { + idxeq = i; + break; + } else if (data[i] === 38) { + idxamp = i; + break; + } + if (this._checkingBytes && this._bytesKey === this.fieldNameSizeLimit) { + this._hitLimit = true; + break; + } else if (this._checkingBytes) { + ++this._bytesKey; + } + } + if (idxeq !== void 0) { + if (idxeq > p) { + this._key += this.decoder.write(data.toString("binary", p, idxeq)); + } + this._state = "val"; + this._hitLimit = false; + this._checkingBytes = true; + this._val = ""; + this._bytesVal = 0; + this._valTrunc = false; + this.decoder.reset(); + p = idxeq + 1; + } else if (idxamp !== void 0) { + ++this._fields; + let key; + const keyTrunc = this._keyTrunc; + if (idxamp > p) { + key = this._key += this.decoder.write(data.toString("binary", p, idxamp)); + } else { + key = this._key; + } + this._hitLimit = false; + this._checkingBytes = true; + this._key = ""; + this._bytesKey = 0; + this._keyTrunc = false; + this.decoder.reset(); + if (key.length) { + this.boy.emit( + "field", + decodeText(key, "binary", this.charset), + "", + keyTrunc, + false + ); + } + p = idxamp + 1; + if (this._fields === this.fieldsLimit) { + return cb(); + } + } else if (this._hitLimit) { + if (i > p) { + this._key += this.decoder.write(data.toString("binary", p, i)); + } + p = i; + if ((this._bytesKey = this._key.length) === this.fieldNameSizeLimit) { + this._checkingBytes = false; + this._keyTrunc = true; + } + } else { + if (p < len) { + this._key += this.decoder.write(data.toString("binary", p)); + } + p = len; + } + } else { + idxamp = void 0; + for (i = p; i < len; ++i) { + if (!this._checkingBytes) { + ++p; + } + if (data[i] === 38) { + idxamp = i; + break; + } + if (this._checkingBytes && this._bytesVal === this.fieldSizeLimit) { + this._hitLimit = true; + break; + } else if (this._checkingBytes) { + ++this._bytesVal; + } + } + if (idxamp !== void 0) { + ++this._fields; + if (idxamp > p) { + this._val += this.decoder.write(data.toString("binary", p, idxamp)); + } + this.boy.emit( + "field", + decodeText(this._key, "binary", this.charset), + decodeText(this._val, "binary", this.charset), + this._keyTrunc, + this._valTrunc + ); + this._state = "key"; + this._hitLimit = false; + this._checkingBytes = true; + this._key = ""; + this._bytesKey = 0; + this._keyTrunc = false; + this.decoder.reset(); + p = idxamp + 1; + if (this._fields === this.fieldsLimit) { + return cb(); + } + } else if (this._hitLimit) { + if (i > p) { + this._val += this.decoder.write(data.toString("binary", p, i)); + } + p = i; + if (this._val === "" && this.fieldSizeLimit === 0 || (this._bytesVal = this._val.length) === this.fieldSizeLimit) { + this._checkingBytes = false; + this._valTrunc = true; + } + } else { + if (p < len) { + this._val += this.decoder.write(data.toString("binary", p)); + } + p = len; + } + } + } + cb(); + }; + UrlEncoded.prototype.end = function() { + if (this.boy._done) { + return; + } + if (this._state === "key" && this._key.length > 0) { + this.boy.emit( + "field", + decodeText(this._key, "binary", this.charset), + "", + this._keyTrunc, + false + ); + } else if (this._state === "val") { + this.boy.emit( + "field", + decodeText(this._key, "binary", this.charset), + decodeText(this._val, "binary", this.charset), + this._keyTrunc, + this._valTrunc + ); + } + this.boy._done = true; + this.boy.emit("finish"); + }; + module2.exports = UrlEncoded; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/main.js +var require_main = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/main.js"(exports2, module2) { + "use strict"; + var WritableStream = require("stream").Writable; + var { inherits } = require("util"); + var Dicer = require_Dicer(); + var MultipartParser = require_multipart(); + var UrlencodedParser = require_urlencoded(); + var parseParams = require_parseParams(); + function Busboy(opts) { + if (!(this instanceof Busboy)) { + return new Busboy(opts); + } + if (typeof opts !== "object") { + throw new TypeError("Busboy expected an options-Object."); + } + if (typeof opts.headers !== "object") { + throw new TypeError("Busboy expected an options-Object with headers-attribute."); + } + if (typeof opts.headers["content-type"] !== "string") { + throw new TypeError("Missing Content-Type-header."); + } + const { + headers, + ...streamOptions + } = opts; + this.opts = { + autoDestroy: false, + ...streamOptions + }; + WritableStream.call(this, this.opts); + this._done = false; + this._parser = this.getParserByHeaders(headers); + this._finished = false; + } + inherits(Busboy, WritableStream); + Busboy.prototype.emit = function(ev) { + var _a; + if (ev === "finish") { + if (!this._done) { + (_a = this._parser) == null ? void 0 : _a.end(); + return; + } else if (this._finished) { + return; + } + this._finished = true; + } + WritableStream.prototype.emit.apply(this, arguments); + }; + Busboy.prototype.getParserByHeaders = function(headers) { + const parsed = parseParams(headers["content-type"]); + const cfg = { + defCharset: this.opts.defCharset, + fileHwm: this.opts.fileHwm, + headers, + highWaterMark: this.opts.highWaterMark, + isPartAFile: this.opts.isPartAFile, + limits: this.opts.limits, + parsedConType: parsed, + preservePath: this.opts.preservePath + }; + if (MultipartParser.detect.test(parsed[0])) { + return new MultipartParser(this, cfg); + } + if (UrlencodedParser.detect.test(parsed[0])) { + return new UrlencodedParser(this, cfg); + } + throw new Error("Unsupported Content-Type."); + }; + Busboy.prototype._write = function(chunk, encoding, cb) { + this._parser.write(chunk, cb); + }; + module2.exports = Busboy; + module2.exports.default = Busboy; + module2.exports.Busboy = Busboy; + module2.exports.Dicer = Dicer; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/constants.js +var require_constants = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/constants.js"(exports2, module2) { + "use strict"; + var { MessageChannel, receiveMessageOnPort } = require("worker_threads"); + var corsSafeListedMethods = ["GET", "HEAD", "POST"]; + var corsSafeListedMethodsSet = new Set(corsSafeListedMethods); + var nullBodyStatus = [101, 204, 205, 304]; + var redirectStatus = [301, 302, 303, 307, 308]; + var redirectStatusSet = new Set(redirectStatus); + var badPorts = [ + "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", + "5060", + "5061", + "6000", + "6566", + "6665", + "6666", + "6667", + "6668", + "6669", + "6697", + "10080" + ]; + var badPortsSet = new Set(badPorts); + var referrerPolicy = [ + "", + "no-referrer", + "no-referrer-when-downgrade", + "same-origin", + "origin", + "strict-origin", + "origin-when-cross-origin", + "strict-origin-when-cross-origin", + "unsafe-url" + ]; + var referrerPolicySet = new Set(referrerPolicy); + var requestRedirect = ["follow", "manual", "error"]; + var safeMethods = ["GET", "HEAD", "OPTIONS", "TRACE"]; + var safeMethodsSet = new Set(safeMethods); + var requestMode = ["navigate", "same-origin", "no-cors", "cors"]; + var requestCredentials = ["omit", "same-origin", "include"]; + var requestCache = [ + "default", + "no-store", + "reload", + "no-cache", + "force-cache", + "only-if-cached" + ]; + var requestBodyHeader = [ + "content-encoding", + "content-language", + "content-location", + "content-type", + // See https://github.com/nodejs/undici/issues/2021 + // 'Content-Length' is a forbidden header name, which is typically + // removed in the Headers implementation. However, undici doesn't + // filter out headers, so we add it here. + "content-length" + ]; + var requestDuplex = [ + "half" + ]; + var forbiddenMethods = ["CONNECT", "TRACE", "TRACK"]; + var forbiddenMethodsSet = new Set(forbiddenMethods); + var subresource = [ + "audio", + "audioworklet", + "font", + "image", + "manifest", + "paintworklet", + "script", + "style", + "track", + "video", + "xslt", + "" + ]; + var subresourceSet = new Set(subresource); + var DOMException2 = globalThis.DOMException ?? (() => { + try { + atob("~"); + } catch (err) { + return Object.getPrototypeOf(err).constructor; + } + })(); + var channel; + var structuredClone = globalThis.structuredClone ?? // https://github.com/nodejs/node/blob/b27ae24dcc4251bad726d9d84baf678d1f707fed/lib/internal/structured_clone.js + // structuredClone was added in v17.0.0, but fetch supports v16.8 + function structuredClone2(value, options = void 0) { + if (arguments.length === 0) { + throw new TypeError("missing argument"); + } + if (!channel) { + channel = new MessageChannel(); + } + channel.port1.unref(); + channel.port2.unref(); + channel.port1.postMessage(value, options == null ? void 0 : options.transfer); + return receiveMessageOnPort(channel.port2).message; + }; + module2.exports = { + DOMException: DOMException2, + structuredClone, + subresource, + forbiddenMethods, + requestBodyHeader, + referrerPolicy, + requestRedirect, + requestMode, + requestCredentials, + requestCache, + redirectStatus, + corsSafeListedMethods, + nullBodyStatus, + safeMethods, + badPorts, + requestDuplex, + subresourceSet, + badPortsSet, + redirectStatusSet, + corsSafeListedMethodsSet, + safeMethodsSet, + forbiddenMethodsSet, + referrerPolicySet + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/global.js +var require_global = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/global.js"(exports2, module2) { + "use strict"; + var globalOrigin = Symbol.for("undici.globalOrigin.1"); + function getGlobalOrigin() { + return globalThis[globalOrigin]; + } + function setGlobalOrigin(newOrigin) { + if (newOrigin === void 0) { + Object.defineProperty(globalThis, globalOrigin, { + value: void 0, + writable: true, + enumerable: false, + configurable: false + }); + return; + } + const parsedURL = new URL(newOrigin); + if (parsedURL.protocol !== "http:" && parsedURL.protocol !== "https:") { + throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`); + } + Object.defineProperty(globalThis, globalOrigin, { + value: parsedURL, + writable: true, + enumerable: false, + configurable: false + }); + } + module2.exports = { + getGlobalOrigin, + setGlobalOrigin + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/util.js +var require_util2 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/util.js"(exports2, module2) { + "use strict"; + var { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = require_constants(); + var { getGlobalOrigin } = require_global(); + var { performance: performance2 } = require("perf_hooks"); + var { isBlobLike, toUSVString, ReadableStreamFrom } = require_util(); + var assert = require("assert"); + var { isUint8Array } = require("util/types"); + var crypto; + try { + crypto = require("crypto"); + } catch { + } + function responseURL(response) { + const urlList = response.urlList; + const length = urlList.length; + return length === 0 ? null : urlList[length - 1].toString(); + } + function responseLocationURL(response, requestFragment) { + if (!redirectStatusSet.has(response.status)) { + return null; + } + let location = response.headersList.get("location"); + if (location !== null && isValidHeaderValue(location)) { + location = new URL(location, responseURL(response)); + } + if (location && !location.hash) { + location.hash = requestFragment; + } + return location; + } + function requestCurrentURL(request3) { + return request3.urlList[request3.urlList.length - 1]; + } + function requestBadPort(request3) { + const url = requestCurrentURL(request3); + if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) { + return "blocked"; + } + return "allowed"; + } + function isErrorLike(object) { + var _a, _b; + return object instanceof Error || (((_a = object == null ? void 0 : object.constructor) == null ? void 0 : _a.name) === "Error" || ((_b = object == null ? void 0 : object.constructor) == null ? void 0 : _b.name) === "DOMException"); + } + function isValidReasonPhrase(statusText) { + for (let i = 0; i < statusText.length; ++i) { + const c = statusText.charCodeAt(i); + if (!(c === 9 || // HTAB + c >= 32 && c <= 126 || // SP / VCHAR + c >= 128 && c <= 255)) { + return false; + } + } + return true; + } + function isTokenChar(c) { + return !(c >= 127 || c <= 32 || c === "(" || c === ")" || c === "<" || c === ">" || c === "@" || c === "," || c === ";" || c === ":" || c === "\\" || c === '"' || c === "/" || c === "[" || c === "]" || c === "?" || c === "=" || c === "{" || c === "}"); + } + function isValidHTTPToken(characters) { + if (!characters || typeof characters !== "string") { + return false; + } + for (let i = 0; i < characters.length; ++i) { + const c = characters.charCodeAt(i); + if (c > 127 || !isTokenChar(c)) { + return false; + } + } + return true; + } + function isValidHeaderName(potentialValue) { + if (potentialValue.length === 0) { + return false; + } + return isValidHTTPToken(potentialValue); + } + function isValidHeaderValue(potentialValue) { + if (potentialValue.startsWith(" ") || potentialValue.startsWith(" ") || potentialValue.endsWith(" ") || potentialValue.endsWith(" ")) { + return false; + } + if (potentialValue.includes("\0") || potentialValue.includes("\r") || potentialValue.includes("\n")) { + return false; + } + return true; + } + function setRequestReferrerPolicyOnRedirect(request3, actualResponse) { + const { headersList } = actualResponse; + const policyHeader = (headersList.get("referrer-policy") ?? "").split(","); + let policy = ""; + if (policyHeader.length > 0) { + for (let i = policyHeader.length; i !== 0; i--) { + const token = policyHeader[i - 1].trim(); + if (referrerPolicyTokens.has(token)) { + policy = token; + break; + } + } + } + if (policy !== "") { + request3.referrerPolicy = policy; + } + } + function crossOriginResourcePolicyCheck() { + return "allowed"; + } + function corsCheck() { + return "success"; + } + function TAOCheck() { + return "success"; + } + function appendFetchMetadata(httpRequest) { + let header = null; + header = httpRequest.mode; + httpRequest.headersList.set("sec-fetch-mode", header); + } + function appendRequestOriginHeader(request3) { + let serializedOrigin = request3.origin; + if (request3.responseTainting === "cors" || request3.mode === "websocket") { + if (serializedOrigin) { + request3.headersList.append("origin", serializedOrigin); + } + } else if (request3.method !== "GET" && request3.method !== "HEAD") { + switch (request3.referrerPolicy) { + case "no-referrer": + serializedOrigin = null; + break; + case "no-referrer-when-downgrade": + case "strict-origin": + case "strict-origin-when-cross-origin": + if (request3.origin && urlHasHttpsScheme(request3.origin) && !urlHasHttpsScheme(requestCurrentURL(request3))) { + serializedOrigin = null; + } + break; + case "same-origin": + if (!sameOrigin(request3, requestCurrentURL(request3))) { + serializedOrigin = null; + } + break; + default: + } + if (serializedOrigin) { + request3.headersList.append("origin", serializedOrigin); + } + } + } + function coarsenedSharedCurrentTime(crossOriginIsolatedCapability) { + return performance2.now(); + } + function createOpaqueTimingInfo(timingInfo) { + return { + startTime: timingInfo.startTime ?? 0, + redirectStartTime: 0, + redirectEndTime: 0, + postRedirectStartTime: timingInfo.startTime ?? 0, + finalServiceWorkerStartTime: 0, + finalNetworkResponseStartTime: 0, + finalNetworkRequestStartTime: 0, + endTime: 0, + encodedBodySize: 0, + decodedBodySize: 0, + finalConnectionTimingInfo: null + }; + } + function makePolicyContainer() { + return { + referrerPolicy: "strict-origin-when-cross-origin" + }; + } + function clonePolicyContainer(policyContainer) { + return { + referrerPolicy: policyContainer.referrerPolicy + }; + } + function determineRequestsReferrer(request3) { + const policy = request3.referrerPolicy; + assert(policy); + let referrerSource = null; + if (request3.referrer === "client") { + const globalOrigin = getGlobalOrigin(); + if (!globalOrigin || globalOrigin.origin === "null") { + return "no-referrer"; + } + referrerSource = new URL(globalOrigin); + } else if (request3.referrer instanceof URL) { + referrerSource = request3.referrer; + } + let referrerURL = stripURLForReferrer(referrerSource); + const referrerOrigin = stripURLForReferrer(referrerSource, true); + if (referrerURL.toString().length > 4096) { + referrerURL = referrerOrigin; + } + const areSameOrigin = sameOrigin(request3, referrerURL); + const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(request3.url); + switch (policy) { + case "origin": + return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true); + case "unsafe-url": + return referrerURL; + case "same-origin": + return areSameOrigin ? referrerOrigin : "no-referrer"; + case "origin-when-cross-origin": + return areSameOrigin ? referrerURL : referrerOrigin; + case "strict-origin-when-cross-origin": { + const currentURL = requestCurrentURL(request3); + if (sameOrigin(referrerURL, currentURL)) { + return referrerURL; + } + if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) { + return "no-referrer"; + } + return referrerOrigin; + } + case "strict-origin": + case "no-referrer-when-downgrade": + default: + return isNonPotentiallyTrustWorthy ? "no-referrer" : referrerOrigin; + } + } + function stripURLForReferrer(url, originOnly) { + assert(url instanceof URL); + if (url.protocol === "file:" || url.protocol === "about:" || url.protocol === "blank:") { + return "no-referrer"; + } + url.username = ""; + url.password = ""; + url.hash = ""; + if (originOnly) { + url.pathname = ""; + url.search = ""; + } + return url; + } + function isURLPotentiallyTrustworthy(url) { + if (!(url instanceof URL)) { + return false; + } + if (url.href === "about:blank" || url.href === "about:srcdoc") { + return true; + } + if (url.protocol === "data:") + return true; + if (url.protocol === "file:") + return true; + return isOriginPotentiallyTrustworthy(url.origin); + function isOriginPotentiallyTrustworthy(origin) { + if (origin == null || origin === "null") + return false; + const originAsURL = new URL(origin); + if (originAsURL.protocol === "https:" || originAsURL.protocol === "wss:") { + return true; + } + if (/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(originAsURL.hostname) || (originAsURL.hostname === "localhost" || originAsURL.hostname.includes("localhost.")) || originAsURL.hostname.endsWith(".localhost")) { + return true; + } + return false; + } + } + function bytesMatch(bytes, metadataList) { + if (crypto === void 0) { + return true; + } + const parsedMetadata = parseMetadata(metadataList); + if (parsedMetadata === "no metadata") { + return true; + } + if (parsedMetadata.length === 0) { + return true; + } + const list = parsedMetadata.sort((c, d) => d.algo.localeCompare(c.algo)); + const strongest = list[0].algo; + const metadata = list.filter((item) => item.algo === strongest); + for (const item of metadata) { + const algorithm = item.algo; + let expectedValue = item.hash; + if (expectedValue.endsWith("==")) { + expectedValue = expectedValue.slice(0, -2); + } + let actualValue = crypto.createHash(algorithm).update(bytes).digest("base64"); + if (actualValue.endsWith("==")) { + actualValue = actualValue.slice(0, -2); + } + if (actualValue === expectedValue) { + return true; + } + let actualBase64URL = crypto.createHash(algorithm).update(bytes).digest("base64url"); + if (actualBase64URL.endsWith("==")) { + actualBase64URL = actualBase64URL.slice(0, -2); + } + if (actualBase64URL === expectedValue) { + return true; + } + } + return false; + } + var parseHashWithOptions = /((?sha256|sha384|sha512)-(?[A-z0-9+/]{1}.*={0,2}))( +[\x21-\x7e]?)?/i; + function parseMetadata(metadata) { + const result = []; + let empty = true; + const supportedHashes = crypto.getHashes(); + for (const token of metadata.split(" ")) { + empty = false; + const parsedToken = parseHashWithOptions.exec(token); + if (parsedToken === null || parsedToken.groups === void 0) { + continue; + } + const algorithm = parsedToken.groups.algo; + if (supportedHashes.includes(algorithm.toLowerCase())) { + result.push(parsedToken.groups); + } + } + if (empty === true) { + return "no metadata"; + } + return result; + } + function tryUpgradeRequestToAPotentiallyTrustworthyURL(request3) { + } + function sameOrigin(A, B) { + if (A.origin === B.origin && A.origin === "null") { + return true; + } + if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) { + return true; + } + return false; + } + function createDeferredPromise() { + let res; + let rej; + const promise = new Promise((resolve, reject) => { + res = resolve; + rej = reject; + }); + return { promise, resolve: res, reject: rej }; + } + function isAborted(fetchParams) { + return fetchParams.controller.state === "aborted"; + } + function isCancelled(fetchParams) { + return fetchParams.controller.state === "aborted" || fetchParams.controller.state === "terminated"; + } + function normalizeMethod(method) { + return /^(DELETE|GET|HEAD|OPTIONS|POST|PUT)$/i.test(method) ? method.toUpperCase() : method; + } + function serializeJavascriptValueToJSONString(value) { + const result = JSON.stringify(value); + if (result === void 0) { + throw new TypeError("Value is not JSON serializable"); + } + assert(typeof result === "string"); + return result; + } + var esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())); + function makeIterator(iterator, name, kind) { + const object = { + index: 0, + kind, + target: iterator + }; + const i = { + next() { + if (Object.getPrototypeOf(this) !== i) { + throw new TypeError( + `'next' called on an object that does not implement interface ${name} Iterator.` + ); + } + const { index, kind: kind2, target } = object; + const values = target(); + const len = values.length; + if (index >= len) { + return { value: void 0, done: true }; + } + const pair = values[index]; + object.index = index + 1; + return iteratorResult(pair, kind2); + }, + // The class string of an iterator prototype object for a given interface is the + // result of concatenating the identifier of the interface and the string " Iterator". + [Symbol.toStringTag]: `${name} Iterator` + }; + Object.setPrototypeOf(i, esIteratorPrototype); + return Object.setPrototypeOf({}, i); + } + function iteratorResult(pair, kind) { + let result; + switch (kind) { + case "key": { + result = pair[0]; + break; + } + case "value": { + result = pair[1]; + break; + } + case "key+value": { + result = pair; + break; + } + } + return { value: result, done: false }; + } + async function fullyReadBody(body, processBody, processBodyError) { + const successSteps = processBody; + const errorSteps = processBodyError; + let reader; + try { + reader = body.stream.getReader(); + } catch (e) { + errorSteps(e); + return; + } + try { + const result = await readAllBytes(reader); + successSteps(result); + } catch (e) { + errorSteps(e); + } + } + var ReadableStream = globalThis.ReadableStream; + function isReadableStreamLike(stream) { + if (!ReadableStream) { + ReadableStream = require("stream/web").ReadableStream; + } + return stream instanceof ReadableStream || stream[Symbol.toStringTag] === "ReadableStream" && typeof stream.tee === "function"; + } + var MAXIMUM_ARGUMENT_LENGTH = 65535; + function isomorphicDecode(input) { + if (input.length < MAXIMUM_ARGUMENT_LENGTH) { + return String.fromCharCode(...input); + } + return input.reduce((previous, current) => previous + String.fromCharCode(current), ""); + } + function readableStreamClose(controller) { + try { + controller.close(); + } catch (err) { + if (!err.message.includes("Controller is already closed")) { + throw err; + } + } + } + function isomorphicEncode(input) { + for (let i = 0; i < input.length; i++) { + assert(input.charCodeAt(i) <= 255); + } + return input; + } + async function readAllBytes(reader) { + const bytes = []; + let byteLength = 0; + while (true) { + const { done, value: chunk } = await reader.read(); + if (done) { + return Buffer.concat(bytes, byteLength); + } + if (!isUint8Array(chunk)) { + throw new TypeError("Received non-Uint8Array chunk"); + } + bytes.push(chunk); + byteLength += chunk.length; + } + } + function urlIsLocal(url) { + assert("protocol" in url); + const protocol = url.protocol; + return protocol === "about:" || protocol === "blob:" || protocol === "data:"; + } + function urlHasHttpsScheme(url) { + if (typeof url === "string") { + return url.startsWith("https:"); + } + return url.protocol === "https:"; + } + function urlIsHttpHttpsScheme(url) { + assert("protocol" in url); + const protocol = url.protocol; + return protocol === "http:" || protocol === "https:"; + } + var hasOwn = Object.hasOwn || ((dict, key) => Object.prototype.hasOwnProperty.call(dict, key)); + module2.exports = { + isAborted, + isCancelled, + createDeferredPromise, + ReadableStreamFrom, + toUSVString, + tryUpgradeRequestToAPotentiallyTrustworthyURL, + coarsenedSharedCurrentTime, + determineRequestsReferrer, + makePolicyContainer, + clonePolicyContainer, + appendFetchMetadata, + appendRequestOriginHeader, + TAOCheck, + corsCheck, + crossOriginResourcePolicyCheck, + createOpaqueTimingInfo, + setRequestReferrerPolicyOnRedirect, + isValidHTTPToken, + requestBadPort, + requestCurrentURL, + responseURL, + responseLocationURL, + isBlobLike, + isURLPotentiallyTrustworthy, + isValidReasonPhrase, + sameOrigin, + normalizeMethod, + serializeJavascriptValueToJSONString, + makeIterator, + isValidHeaderName, + isValidHeaderValue, + hasOwn, + isErrorLike, + fullyReadBody, + bytesMatch, + isReadableStreamLike, + readableStreamClose, + isomorphicEncode, + isomorphicDecode, + urlIsLocal, + urlHasHttpsScheme, + urlIsHttpHttpsScheme, + readAllBytes + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/symbols.js +var require_symbols2 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/symbols.js"(exports2, module2) { + "use strict"; + module2.exports = { + kUrl: Symbol("url"), + kHeaders: Symbol("headers"), + kSignal: Symbol("signal"), + kState: Symbol("state"), + kGuard: Symbol("guard"), + kRealm: Symbol("realm") + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/webidl.js +var require_webidl = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/webidl.js"(exports2, module2) { + "use strict"; + var { types } = require("util"); + var { hasOwn, toUSVString } = require_util2(); + var webidl = {}; + webidl.converters = {}; + webidl.util = {}; + webidl.errors = {}; + webidl.errors.exception = function(message) { + return new TypeError(`${message.header}: ${message.message}`); + }; + webidl.errors.conversionFailed = function(context) { + const plural = context.types.length === 1 ? "" : " one of"; + const message = `${context.argument} could not be converted to${plural}: ${context.types.join(", ")}.`; + return webidl.errors.exception({ + header: context.prefix, + message + }); + }; + webidl.errors.invalidArgument = function(context) { + return webidl.errors.exception({ + header: context.prefix, + message: `"${context.value}" is an invalid ${context.type}.` + }); + }; + webidl.brandCheck = function(V, I, opts = void 0) { + if ((opts == null ? void 0 : opts.strict) !== false && !(V instanceof I)) { + throw new TypeError("Illegal invocation"); + } else { + return (V == null ? void 0 : V[Symbol.toStringTag]) === I.prototype[Symbol.toStringTag]; + } + }; + webidl.argumentLengthCheck = function({ length }, min, ctx) { + if (length < min) { + throw webidl.errors.exception({ + message: `${min} argument${min !== 1 ? "s" : ""} required, but${length ? " only" : ""} ${length} found.`, + ...ctx + }); + } + }; + webidl.illegalConstructor = function() { + throw webidl.errors.exception({ + header: "TypeError", + message: "Illegal constructor" + }); + }; + webidl.util.Type = function(V) { + switch (typeof V) { + 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": { + if (V === null) { + return "Null"; + } + return "Object"; + } + } + }; + webidl.util.ConvertToInt = function(V, bitLength, signedness, opts = {}) { + let upperBound; + let lowerBound; + if (bitLength === 64) { + upperBound = Math.pow(2, 53) - 1; + if (signedness === "unsigned") { + lowerBound = 0; + } else { + lowerBound = Math.pow(-2, 53) + 1; + } + } else if (signedness === "unsigned") { + lowerBound = 0; + upperBound = Math.pow(2, bitLength) - 1; + } else { + lowerBound = Math.pow(-2, bitLength) - 1; + upperBound = Math.pow(2, bitLength - 1) - 1; + } + let x = Number(V); + if (x === 0) { + x = 0; + } + if (opts.enforceRange === true) { + if (Number.isNaN(x) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) { + throw webidl.errors.exception({ + header: "Integer conversion", + message: `Could not convert ${V} to an integer.` + }); + } + x = webidl.util.IntegerPart(x); + if (x < lowerBound || x > upperBound) { + throw webidl.errors.exception({ + header: "Integer conversion", + message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.` + }); + } + return x; + } + if (!Number.isNaN(x) && opts.clamp === true) { + x = Math.min(Math.max(x, lowerBound), upperBound); + if (Math.floor(x) % 2 === 0) { + x = Math.floor(x); + } else { + x = Math.ceil(x); + } + return x; + } + if (Number.isNaN(x) || x === 0 && Object.is(0, x) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) { + return 0; + } + x = webidl.util.IntegerPart(x); + x = x % Math.pow(2, bitLength); + if (signedness === "signed" && x >= Math.pow(2, bitLength) - 1) { + return x - Math.pow(2, bitLength); + } + return x; + }; + webidl.util.IntegerPart = function(n) { + const r = Math.floor(Math.abs(n)); + if (n < 0) { + return -1 * r; + } + return r; + }; + webidl.sequenceConverter = function(converter) { + return (V) => { + var _a; + if (webidl.util.Type(V) !== "Object") { + throw webidl.errors.exception({ + header: "Sequence", + message: `Value of type ${webidl.util.Type(V)} is not an Object.` + }); + } + const method = (_a = V == null ? void 0 : V[Symbol.iterator]) == null ? void 0 : _a.call(V); + const seq = []; + if (method === void 0 || typeof method.next !== "function") { + throw webidl.errors.exception({ + header: "Sequence", + message: "Object is not an iterator." + }); + } + while (true) { + const { done, value } = method.next(); + if (done) { + break; + } + seq.push(converter(value)); + } + return seq; + }; + }; + webidl.recordConverter = function(keyConverter, valueConverter) { + return (O) => { + if (webidl.util.Type(O) !== "Object") { + throw webidl.errors.exception({ + header: "Record", + message: `Value of type ${webidl.util.Type(O)} is not an Object.` + }); + } + const result = {}; + if (!types.isProxy(O)) { + const keys2 = Object.keys(O); + for (const key of keys2) { + const typedKey = keyConverter(key); + const typedValue = valueConverter(O[key]); + result[typedKey] = typedValue; + } + return result; + } + const keys = Reflect.ownKeys(O); + for (const key of keys) { + const desc = Reflect.getOwnPropertyDescriptor(O, key); + if (desc == null ? void 0 : desc.enumerable) { + const typedKey = keyConverter(key); + const typedValue = valueConverter(O[key]); + result[typedKey] = typedValue; + } + } + return result; + }; + }; + webidl.interfaceConverter = function(i) { + return (V, opts = {}) => { + if (opts.strict !== false && !(V instanceof i)) { + throw webidl.errors.exception({ + header: i.name, + message: `Expected ${V} to be an instance of ${i.name}.` + }); + } + return V; + }; + }; + webidl.dictionaryConverter = function(converters) { + return (dictionary) => { + const type = webidl.util.Type(dictionary); + const dict = {}; + if (type === "Null" || type === "Undefined") { + return dict; + } else if (type !== "Object") { + throw webidl.errors.exception({ + header: "Dictionary", + message: `Expected ${dictionary} to be one of: Null, Undefined, Object.` + }); + } + for (const options of converters) { + const { key, defaultValue, required, converter } = options; + if (required === true) { + if (!hasOwn(dictionary, key)) { + throw webidl.errors.exception({ + header: "Dictionary", + message: `Missing required key "${key}".` + }); + } + } + let value = dictionary[key]; + const hasDefault = hasOwn(options, "defaultValue"); + if (hasDefault && value !== null) { + value = value ?? defaultValue; + } + if (required || hasDefault || value !== void 0) { + value = converter(value); + if (options.allowedValues && !options.allowedValues.includes(value)) { + throw webidl.errors.exception({ + header: "Dictionary", + message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(", ")}.` + }); + } + dict[key] = value; + } + } + return dict; + }; + }; + webidl.nullableConverter = function(converter) { + return (V) => { + if (V === null) { + return V; + } + return converter(V); + }; + }; + webidl.converters.DOMString = function(V, opts = {}) { + if (V === null && opts.legacyNullToEmptyString) { + return ""; + } + if (typeof V === "symbol") { + throw new TypeError("Could not convert argument of type symbol to string."); + } + return String(V); + }; + webidl.converters.ByteString = function(V) { + const x = webidl.converters.DOMString(V); + for (let index = 0; index < x.length; index++) { + const charCode = x.charCodeAt(index); + if (charCode > 255) { + throw new TypeError( + `Cannot convert argument to a ByteString because the character at index ${index} has a value of ${charCode} which is greater than 255.` + ); + } + } + return x; + }; + webidl.converters.USVString = toUSVString; + webidl.converters.boolean = function(V) { + const x = Boolean(V); + return x; + }; + webidl.converters.any = function(V) { + return V; + }; + webidl.converters["long long"] = function(V) { + const x = webidl.util.ConvertToInt(V, 64, "signed"); + return x; + }; + webidl.converters["unsigned long long"] = function(V) { + const x = webidl.util.ConvertToInt(V, 64, "unsigned"); + return x; + }; + webidl.converters["unsigned long"] = function(V) { + const x = webidl.util.ConvertToInt(V, 32, "unsigned"); + return x; + }; + webidl.converters["unsigned short"] = function(V, opts) { + const x = webidl.util.ConvertToInt(V, 16, "unsigned", opts); + return x; + }; + webidl.converters.ArrayBuffer = function(V, opts = {}) { + if (webidl.util.Type(V) !== "Object" || !types.isAnyArrayBuffer(V)) { + throw webidl.errors.conversionFailed({ + prefix: `${V}`, + argument: `${V}`, + types: ["ArrayBuffer"] + }); + } + if (opts.allowShared === false && types.isSharedArrayBuffer(V)) { + throw webidl.errors.exception({ + header: "ArrayBuffer", + message: "SharedArrayBuffer is not allowed." + }); + } + return V; + }; + webidl.converters.TypedArray = function(V, T, opts = {}) { + if (webidl.util.Type(V) !== "Object" || !types.isTypedArray(V) || V.constructor.name !== T.name) { + throw webidl.errors.conversionFailed({ + prefix: `${T.name}`, + argument: `${V}`, + types: [T.name] + }); + } + if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: "ArrayBuffer", + message: "SharedArrayBuffer is not allowed." + }); + } + return V; + }; + webidl.converters.DataView = function(V, opts = {}) { + if (webidl.util.Type(V) !== "Object" || !types.isDataView(V)) { + throw webidl.errors.exception({ + header: "DataView", + message: "Object is not a DataView." + }); + } + if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: "ArrayBuffer", + message: "SharedArrayBuffer is not allowed." + }); + } + return V; + }; + webidl.converters.BufferSource = function(V, opts = {}) { + if (types.isAnyArrayBuffer(V)) { + return webidl.converters.ArrayBuffer(V, opts); + } + if (types.isTypedArray(V)) { + return webidl.converters.TypedArray(V, V.constructor); + } + if (types.isDataView(V)) { + return webidl.converters.DataView(V, opts); + } + throw new TypeError(`Could not convert ${V} to a BufferSource.`); + }; + webidl.converters["sequence"] = webidl.sequenceConverter( + webidl.converters.ByteString + ); + webidl.converters["sequence>"] = webidl.sequenceConverter( + webidl.converters["sequence"] + ); + webidl.converters["record"] = webidl.recordConverter( + webidl.converters.ByteString, + webidl.converters.ByteString + ); + module2.exports = { + webidl + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/dataURL.js +var require_dataURL = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/dataURL.js"(exports2, module2) { + var assert = require("assert"); + var { atob: atob2 } = require("buffer"); + var { isomorphicDecode } = require_util2(); + var encoder = new TextEncoder(); + var HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+-.^_|~A-Za-z0-9]+$/; + var HTTP_WHITESPACE_REGEX = /(\u000A|\u000D|\u0009|\u0020)/; + var HTTP_QUOTED_STRING_TOKENS = /[\u0009|\u0020-\u007E|\u0080-\u00FF]/; + function dataURLProcessor(dataURL) { + assert(dataURL.protocol === "data:"); + let input = URLSerializer(dataURL, true); + input = input.slice(5); + const position = { position: 0 }; + let mimeType = collectASequenceOfCodePointsFast( + ",", + input, + position + ); + const mimeTypeLength = mimeType.length; + mimeType = removeASCIIWhitespace(mimeType, true, true); + if (position.position >= input.length) { + return "failure"; + } + position.position++; + const encodedBody = input.slice(mimeTypeLength + 1); + let body = stringPercentDecode(encodedBody); + if (/;(\u0020){0,}base64$/i.test(mimeType)) { + const stringBody = isomorphicDecode(body); + body = forgivingBase64(stringBody); + if (body === "failure") { + return "failure"; + } + mimeType = mimeType.slice(0, -6); + mimeType = mimeType.replace(/(\u0020)+$/, ""); + mimeType = mimeType.slice(0, -1); + } + if (mimeType.startsWith(";")) { + mimeType = "text/plain" + mimeType; + } + let mimeTypeRecord = parseMIMEType(mimeType); + if (mimeTypeRecord === "failure") { + mimeTypeRecord = parseMIMEType("text/plain;charset=US-ASCII"); + } + return { mimeType: mimeTypeRecord, body }; + } + function URLSerializer(url, excludeFragment = false) { + const href = url.href; + if (!excludeFragment) { + return href; + } + const hash = href.lastIndexOf("#"); + if (hash === -1) { + return href; + } + return href.slice(0, hash); + } + function collectASequenceOfCodePoints(condition, input, position) { + let result = ""; + while (position.position < input.length && condition(input[position.position])) { + result += input[position.position]; + position.position++; + } + return result; + } + function collectASequenceOfCodePointsFast(char, input, position) { + const idx = input.indexOf(char, position.position); + const start = position.position; + if (idx === -1) { + position.position = input.length; + return input.slice(start); + } + position.position = idx; + return input.slice(start, position.position); + } + function stringPercentDecode(input) { + const bytes = encoder.encode(input); + return percentDecode(bytes); + } + function percentDecode(input) { + const output = []; + for (let i = 0; i < input.length; i++) { + const byte = input[i]; + if (byte !== 37) { + output.push(byte); + } else if (byte === 37 && !/^[0-9A-Fa-f]{2}$/i.test(String.fromCharCode(input[i + 1], input[i + 2]))) { + output.push(37); + } else { + const nextTwoBytes = String.fromCharCode(input[i + 1], input[i + 2]); + const bytePoint = Number.parseInt(nextTwoBytes, 16); + output.push(bytePoint); + i += 2; + } + } + return Uint8Array.from(output); + } + function parseMIMEType(input) { + input = removeHTTPWhitespace(input, true, true); + const position = { position: 0 }; + const type = collectASequenceOfCodePointsFast( + "/", + input, + position + ); + if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) { + return "failure"; + } + if (position.position > input.length) { + return "failure"; + } + position.position++; + let subtype = collectASequenceOfCodePointsFast( + ";", + input, + position + ); + subtype = removeHTTPWhitespace(subtype, false, true); + if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) { + return "failure"; + } + const typeLowercase = type.toLowerCase(); + const subtypeLowercase = subtype.toLowerCase(); + const mimeType = { + type: typeLowercase, + subtype: subtypeLowercase, + /** @type {Map} */ + parameters: /* @__PURE__ */ new Map(), + // https://mimesniff.spec.whatwg.org/#mime-type-essence + essence: `${typeLowercase}/${subtypeLowercase}` + }; + while (position.position < input.length) { + position.position++; + collectASequenceOfCodePoints( + // https://fetch.spec.whatwg.org/#http-whitespace + (char) => HTTP_WHITESPACE_REGEX.test(char), + input, + position + ); + let parameterName = collectASequenceOfCodePoints( + (char) => char !== ";" && char !== "=", + input, + position + ); + parameterName = parameterName.toLowerCase(); + if (position.position < input.length) { + if (input[position.position] === ";") { + continue; + } + position.position++; + } + if (position.position > input.length) { + break; + } + let parameterValue = null; + if (input[position.position] === '"') { + parameterValue = collectAnHTTPQuotedString(input, position, true); + collectASequenceOfCodePointsFast( + ";", + input, + position + ); + } else { + parameterValue = collectASequenceOfCodePointsFast( + ";", + input, + position + ); + parameterValue = removeHTTPWhitespace(parameterValue, false, true); + if (parameterValue.length === 0) { + continue; + } + } + if (parameterName.length !== 0 && HTTP_TOKEN_CODEPOINTS.test(parameterName) && (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) && !mimeType.parameters.has(parameterName)) { + mimeType.parameters.set(parameterName, parameterValue); + } + } + return mimeType; + } + function forgivingBase64(data) { + data = data.replace(/[\u0009\u000A\u000C\u000D\u0020]/g, ""); + if (data.length % 4 === 0) { + data = data.replace(/=?=$/, ""); + } + if (data.length % 4 === 1) { + return "failure"; + } + if (/[^+/0-9A-Za-z]/.test(data)) { + return "failure"; + } + const binary = atob2(data); + const bytes = new Uint8Array(binary.length); + for (let byte = 0; byte < binary.length; byte++) { + bytes[byte] = binary.charCodeAt(byte); + } + return bytes; + } + function collectAnHTTPQuotedString(input, position, extractValue) { + const positionStart = position.position; + let value = ""; + assert(input[position.position] === '"'); + position.position++; + while (true) { + value += collectASequenceOfCodePoints( + (char) => char !== '"' && char !== "\\", + input, + position + ); + if (position.position >= input.length) { + break; + } + const quoteOrBackslash = input[position.position]; + position.position++; + if (quoteOrBackslash === "\\") { + if (position.position >= input.length) { + value += "\\"; + break; + } + value += input[position.position]; + position.position++; + } else { + assert(quoteOrBackslash === '"'); + break; + } + } + if (extractValue) { + return value; + } + return input.slice(positionStart, position.position); + } + function serializeAMimeType(mimeType) { + assert(mimeType !== "failure"); + const { parameters, essence } = mimeType; + let serialization = essence; + for (let [name, value] of parameters.entries()) { + serialization += ";"; + serialization += name; + serialization += "="; + if (!HTTP_TOKEN_CODEPOINTS.test(value)) { + value = value.replace(/(\\|")/g, "\\$1"); + value = '"' + value; + value += '"'; + } + serialization += value; + } + return serialization; + } + function isHTTPWhiteSpace(char) { + return char === "\r" || char === "\n" || char === " " || char === " "; + } + function removeHTTPWhitespace(str, leading = true, trailing = true) { + let lead = 0; + let trail = str.length - 1; + if (leading) { + for (; lead < str.length && isHTTPWhiteSpace(str[lead]); lead++) + ; + } + if (trailing) { + for (; trail > 0 && isHTTPWhiteSpace(str[trail]); trail--) + ; + } + return str.slice(lead, trail + 1); + } + function isASCIIWhitespace(char) { + return char === "\r" || char === "\n" || char === " " || char === "\f" || char === " "; + } + function removeASCIIWhitespace(str, leading = true, trailing = true) { + let lead = 0; + let trail = str.length - 1; + if (leading) { + for (; lead < str.length && isASCIIWhitespace(str[lead]); lead++) + ; + } + if (trailing) { + for (; trail > 0 && isASCIIWhitespace(str[trail]); trail--) + ; + } + return str.slice(lead, trail + 1); + } + module2.exports = { + dataURLProcessor, + URLSerializer, + collectASequenceOfCodePoints, + collectASequenceOfCodePointsFast, + stringPercentDecode, + parseMIMEType, + collectAnHTTPQuotedString, + serializeAMimeType + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/file.js +var require_file = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/file.js"(exports2, module2) { + "use strict"; + var { Blob: Blob2, File: NativeFile } = require("buffer"); + var { types } = require("util"); + var { kState } = require_symbols2(); + var { isBlobLike } = require_util2(); + var { webidl } = require_webidl(); + var { parseMIMEType, serializeAMimeType } = require_dataURL(); + var { kEnumerableProperty } = require_util(); + var encoder = new TextEncoder(); + var File = class _File extends Blob2 { + constructor(fileBits, fileName, options = {}) { + webidl.argumentLengthCheck(arguments, 2, { header: "File constructor" }); + fileBits = webidl.converters["sequence"](fileBits); + fileName = webidl.converters.USVString(fileName); + options = webidl.converters.FilePropertyBag(options); + const n = fileName; + let t = options.type; + let d; + substep: { + if (t) { + t = parseMIMEType(t); + if (t === "failure") { + t = ""; + break substep; + } + t = serializeAMimeType(t).toLowerCase(); + } + d = options.lastModified; + } + super(processBlobParts(fileBits, options), { type: t }); + this[kState] = { + name: n, + lastModified: d, + type: t + }; + } + get name() { + webidl.brandCheck(this, _File); + return this[kState].name; + } + get lastModified() { + webidl.brandCheck(this, _File); + return this[kState].lastModified; + } + get type() { + webidl.brandCheck(this, _File); + return this[kState].type; + } + }; + var FileLike = class _FileLike { + constructor(blobLike, fileName, options = {}) { + const n = fileName; + const t = options.type; + const d = options.lastModified ?? Date.now(); + this[kState] = { + blobLike, + name: n, + type: t, + lastModified: d + }; + } + stream(...args) { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.stream(...args); + } + arrayBuffer(...args) { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.arrayBuffer(...args); + } + slice(...args) { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.slice(...args); + } + text(...args) { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.text(...args); + } + get size() { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.size; + } + get type() { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.type; + } + get name() { + webidl.brandCheck(this, _FileLike); + return this[kState].name; + } + get lastModified() { + webidl.brandCheck(this, _FileLike); + return this[kState].lastModified; + } + get [Symbol.toStringTag]() { + return "File"; + } + }; + Object.defineProperties(File.prototype, { + [Symbol.toStringTag]: { + value: "File", + configurable: true + }, + name: kEnumerableProperty, + lastModified: kEnumerableProperty + }); + webidl.converters.Blob = webidl.interfaceConverter(Blob2); + webidl.converters.BlobPart = function(V, opts) { + if (webidl.util.Type(V) === "Object") { + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }); + } + if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) { + return webidl.converters.BufferSource(V, opts); + } + } + return webidl.converters.USVString(V, opts); + }; + webidl.converters["sequence"] = webidl.sequenceConverter( + webidl.converters.BlobPart + ); + webidl.converters.FilePropertyBag = webidl.dictionaryConverter([ + { + key: "lastModified", + converter: webidl.converters["long long"], + get defaultValue() { + return Date.now(); + } + }, + { + key: "type", + converter: webidl.converters.DOMString, + defaultValue: "" + }, + { + key: "endings", + converter: (value) => { + value = webidl.converters.DOMString(value); + value = value.toLowerCase(); + if (value !== "native") { + value = "transparent"; + } + return value; + }, + defaultValue: "transparent" + } + ]); + function processBlobParts(parts, options) { + const bytes = []; + for (const element of parts) { + if (typeof element === "string") { + let s = element; + if (options.endings === "native") { + s = convertLineEndingsNative(s); + } + bytes.push(encoder.encode(s)); + } else if (types.isAnyArrayBuffer(element) || types.isTypedArray(element)) { + if (!element.buffer) { + bytes.push(new Uint8Array(element)); + } else { + bytes.push( + new Uint8Array(element.buffer, element.byteOffset, element.byteLength) + ); + } + } else if (isBlobLike(element)) { + bytes.push(element); + } + } + return bytes; + } + function convertLineEndingsNative(s) { + let nativeLineEnding = "\n"; + if (process.platform === "win32") { + nativeLineEnding = "\r\n"; + } + return s.replace(/\r?\n/g, nativeLineEnding); + } + function isFileLike(object) { + return NativeFile && object instanceof NativeFile || object instanceof File || object && (typeof object.stream === "function" || typeof object.arrayBuffer === "function") && object[Symbol.toStringTag] === "File"; + } + module2.exports = { File, FileLike, isFileLike }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/formdata.js +var require_formdata = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/formdata.js"(exports2, module2) { + "use strict"; + var { isBlobLike, toUSVString, makeIterator } = require_util2(); + var { kState } = require_symbols2(); + var { File: UndiciFile, FileLike, isFileLike } = require_file(); + var { webidl } = require_webidl(); + var { Blob: Blob2, File: NativeFile } = require("buffer"); + var File = NativeFile ?? UndiciFile; + var FormData = class _FormData { + constructor(form) { + if (form !== void 0) { + throw webidl.errors.conversionFailed({ + prefix: "FormData constructor", + argument: "Argument 1", + types: ["undefined"] + }); + } + this[kState] = []; + } + append(name, value, filename = void 0) { + webidl.brandCheck(this, _FormData); + webidl.argumentLengthCheck(arguments, 2, { header: "FormData.append" }); + if (arguments.length === 3 && !isBlobLike(value)) { + throw new TypeError( + "Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'" + ); + } + name = webidl.converters.USVString(name); + value = isBlobLike(value) ? webidl.converters.Blob(value, { strict: false }) : webidl.converters.USVString(value); + filename = arguments.length === 3 ? webidl.converters.USVString(filename) : void 0; + const entry = makeEntry(name, value, filename); + this[kState].push(entry); + } + delete(name) { + webidl.brandCheck(this, _FormData); + webidl.argumentLengthCheck(arguments, 1, { header: "FormData.delete" }); + name = webidl.converters.USVString(name); + this[kState] = this[kState].filter((entry) => entry.name !== name); + } + get(name) { + webidl.brandCheck(this, _FormData); + webidl.argumentLengthCheck(arguments, 1, { header: "FormData.get" }); + name = webidl.converters.USVString(name); + const idx = this[kState].findIndex((entry) => entry.name === name); + if (idx === -1) { + return null; + } + return this[kState][idx].value; + } + getAll(name) { + webidl.brandCheck(this, _FormData); + webidl.argumentLengthCheck(arguments, 1, { header: "FormData.getAll" }); + name = webidl.converters.USVString(name); + return this[kState].filter((entry) => entry.name === name).map((entry) => entry.value); + } + has(name) { + webidl.brandCheck(this, _FormData); + webidl.argumentLengthCheck(arguments, 1, { header: "FormData.has" }); + name = webidl.converters.USVString(name); + return this[kState].findIndex((entry) => entry.name === name) !== -1; + } + set(name, value, filename = void 0) { + webidl.brandCheck(this, _FormData); + webidl.argumentLengthCheck(arguments, 2, { header: "FormData.set" }); + if (arguments.length === 3 && !isBlobLike(value)) { + throw new TypeError( + "Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'" + ); + } + name = webidl.converters.USVString(name); + value = isBlobLike(value) ? webidl.converters.Blob(value, { strict: false }) : webidl.converters.USVString(value); + filename = arguments.length === 3 ? toUSVString(filename) : void 0; + const entry = makeEntry(name, value, filename); + const idx = this[kState].findIndex((entry2) => entry2.name === name); + if (idx !== -1) { + this[kState] = [ + ...this[kState].slice(0, idx), + entry, + ...this[kState].slice(idx + 1).filter((entry2) => entry2.name !== name) + ]; + } else { + this[kState].push(entry); + } + } + entries() { + webidl.brandCheck(this, _FormData); + return makeIterator( + () => this[kState].map((pair) => [pair.name, pair.value]), + "FormData", + "key+value" + ); + } + keys() { + webidl.brandCheck(this, _FormData); + return makeIterator( + () => this[kState].map((pair) => [pair.name, pair.value]), + "FormData", + "key" + ); + } + values() { + webidl.brandCheck(this, _FormData); + return makeIterator( + () => this[kState].map((pair) => [pair.name, pair.value]), + "FormData", + "value" + ); + } + /** + * @param {(value: string, key: string, self: FormData) => void} callbackFn + * @param {unknown} thisArg + */ + forEach(callbackFn, thisArg = globalThis) { + webidl.brandCheck(this, _FormData); + webidl.argumentLengthCheck(arguments, 1, { header: "FormData.forEach" }); + if (typeof callbackFn !== "function") { + throw new TypeError( + "Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'." + ); + } + for (const [key, value] of this) { + callbackFn.apply(thisArg, [value, key, this]); + } + } + }; + FormData.prototype[Symbol.iterator] = FormData.prototype.entries; + Object.defineProperties(FormData.prototype, { + [Symbol.toStringTag]: { + value: "FormData", + configurable: true + } + }); + function makeEntry(name, value, filename) { + name = Buffer.from(name).toString("utf8"); + if (typeof value === "string") { + value = Buffer.from(value).toString("utf8"); + } else { + if (!isFileLike(value)) { + value = value instanceof Blob2 ? new File([value], "blob", { type: value.type }) : new FileLike(value, "blob", { type: value.type }); + } + if (filename !== void 0) { + const options = { + type: value.type, + lastModified: value.lastModified + }; + value = NativeFile && value instanceof NativeFile || value instanceof UndiciFile ? new File([value], filename, options) : new FileLike(value, filename, options); + } + } + return { name, value }; + } + module2.exports = { FormData }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/body.js +var require_body = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/body.js"(exports2, module2) { + "use strict"; + var Busboy = require_main(); + var util = require_util(); + var { + ReadableStreamFrom, + isBlobLike, + isReadableStreamLike, + readableStreamClose, + createDeferredPromise, + fullyReadBody + } = require_util2(); + var { FormData } = require_formdata(); + var { kState } = require_symbols2(); + var { webidl } = require_webidl(); + var { DOMException: DOMException2, structuredClone } = require_constants(); + var { Blob: Blob2, File: NativeFile } = require("buffer"); + var { kBodyUsed } = require_symbols(); + var assert = require("assert"); + var { isErrored } = require_util(); + var { isUint8Array, isArrayBuffer } = require("util/types"); + var { File: UndiciFile } = require_file(); + var { parseMIMEType, serializeAMimeType } = require_dataURL(); + var ReadableStream = globalThis.ReadableStream; + var File = NativeFile ?? UndiciFile; + var textEncoder = new TextEncoder(); + var textDecoder = new TextDecoder(); + function extractBody(object, keepalive = false) { + if (!ReadableStream) { + ReadableStream = require("stream/web").ReadableStream; + } + let stream = null; + if (object instanceof ReadableStream) { + stream = object; + } else if (isBlobLike(object)) { + stream = object.stream(); + } else { + stream = new ReadableStream({ + async pull(controller) { + controller.enqueue( + typeof source === "string" ? textEncoder.encode(source) : source + ); + queueMicrotask(() => readableStreamClose(controller)); + }, + start() { + }, + type: void 0 + }); + } + assert(isReadableStreamLike(stream)); + let action = null; + let source = null; + let length = null; + let type = null; + if (typeof object === "string") { + source = object; + type = "text/plain;charset=UTF-8"; + } else if (object instanceof URLSearchParams) { + source = object.toString(); + type = "application/x-www-form-urlencoded;charset=UTF-8"; + } else if (isArrayBuffer(object)) { + source = new Uint8Array(object.slice()); + } else if (ArrayBuffer.isView(object)) { + source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength)); + } else if (util.isFormDataLike(object)) { + const boundary = `----formdata-undici-0${`${Math.floor(Math.random() * 1e11)}`.padStart(11, "0")}`; + const prefix = `--${boundary}\r +Content-Disposition: form-data`; + const escape = (str) => str.replace(/\n/g, "%0A").replace(/\r/g, "%0D").replace(/"/g, "%22"); + const normalizeLinefeeds = (value) => value.replace(/\r?\n|\r/g, "\r\n"); + const blobParts = []; + const rn = new Uint8Array([13, 10]); + length = 0; + let hasUnknownSizeValue = false; + for (const [name, value] of object) { + if (typeof value === "string") { + const chunk2 = textEncoder.encode(prefix + `; name="${escape(normalizeLinefeeds(name))}"\r +\r +${normalizeLinefeeds(value)}\r +`); + blobParts.push(chunk2); + length += chunk2.byteLength; + } else { + const chunk2 = textEncoder.encode(`${prefix}; name="${escape(normalizeLinefeeds(name))}"` + (value.name ? `; filename="${escape(value.name)}"` : "") + `\r +Content-Type: ${value.type || "application/octet-stream"}\r +\r +`); + blobParts.push(chunk2, value, rn); + if (typeof value.size === "number") { + length += chunk2.byteLength + value.size + rn.byteLength; + } else { + hasUnknownSizeValue = true; + } + } + } + const chunk = textEncoder.encode(`--${boundary}--`); + blobParts.push(chunk); + length += chunk.byteLength; + if (hasUnknownSizeValue) { + length = null; + } + source = object; + action = async function* () { + for (const part of blobParts) { + if (part.stream) { + yield* part.stream(); + } else { + yield part; + } + } + }; + type = "multipart/form-data; boundary=" + boundary; + } else if (isBlobLike(object)) { + source = object; + length = object.size; + if (object.type) { + type = object.type; + } + } else if (typeof object[Symbol.asyncIterator] === "function") { + if (keepalive) { + throw new TypeError("keepalive"); + } + if (util.isDisturbed(object) || object.locked) { + throw new TypeError( + "Response body object should not be disturbed or locked" + ); + } + stream = object instanceof ReadableStream ? object : ReadableStreamFrom(object); + } + if (typeof source === "string" || util.isBuffer(source)) { + length = Buffer.byteLength(source); + } + if (action != null) { + let iterator; + stream = new ReadableStream({ + async start() { + iterator = action(object)[Symbol.asyncIterator](); + }, + async pull(controller) { + const { value, done } = await iterator.next(); + if (done) { + queueMicrotask(() => { + controller.close(); + }); + } else { + if (!isErrored(stream)) { + controller.enqueue(new Uint8Array(value)); + } + } + return controller.desiredSize > 0; + }, + async cancel(reason) { + await iterator.return(); + }, + type: void 0 + }); + } + const body = { stream, source, length }; + return [body, type]; + } + function safelyExtractBody(object, keepalive = false) { + if (!ReadableStream) { + ReadableStream = require("stream/web").ReadableStream; + } + if (object instanceof ReadableStream) { + assert(!util.isDisturbed(object), "The body has already been consumed."); + assert(!object.locked, "The stream is locked."); + } + return extractBody(object, keepalive); + } + function cloneBody(body) { + const [out1, out2] = body.stream.tee(); + const out2Clone = structuredClone(out2, { transfer: [out2] }); + const [, finalClone] = out2Clone.tee(); + body.stream = out1; + return { + stream: finalClone, + length: body.length, + source: body.source + }; + } + async function* consumeBody(body) { + if (body) { + if (isUint8Array(body)) { + yield body; + } else { + const stream = body.stream; + if (util.isDisturbed(stream)) { + throw new TypeError("The body has already been consumed."); + } + if (stream.locked) { + throw new TypeError("The stream is locked."); + } + stream[kBodyUsed] = true; + yield* stream; + } + } + } + function throwIfAborted(state) { + if (state.aborted) { + throw new DOMException2("The operation was aborted.", "AbortError"); + } + } + function bodyMixinMethods(instance) { + const methods = { + blob() { + return specConsumeBody(this, (bytes) => { + let mimeType = bodyMimeType(this); + if (mimeType === "failure") { + mimeType = ""; + } else if (mimeType) { + mimeType = serializeAMimeType(mimeType); + } + return new Blob2([bytes], { type: mimeType }); + }, instance); + }, + arrayBuffer() { + return specConsumeBody(this, (bytes) => { + return new Uint8Array(bytes).buffer; + }, instance); + }, + text() { + return specConsumeBody(this, utf8DecodeBytes, instance); + }, + json() { + return specConsumeBody(this, parseJSONFromBytes, instance); + }, + async formData() { + webidl.brandCheck(this, instance); + throwIfAborted(this[kState]); + const contentType = this.headers.get("Content-Type"); + if (/multipart\/form-data/.test(contentType)) { + const headers = {}; + for (const [key, value] of this.headers) + headers[key.toLowerCase()] = value; + const responseFormData = new FormData(); + let busboy; + try { + busboy = new Busboy({ + headers, + preservePath: true + }); + } catch (err) { + throw new DOMException2(`${err}`, "AbortError"); + } + busboy.on("field", (name, value) => { + responseFormData.append(name, value); + }); + busboy.on("file", (name, value, filename, encoding, mimeType) => { + const chunks = []; + if (encoding === "base64" || encoding.toLowerCase() === "base64") { + let base64chunk = ""; + value.on("data", (chunk) => { + base64chunk += chunk.toString().replace(/[\r\n]/gm, ""); + const end = base64chunk.length - base64chunk.length % 4; + chunks.push(Buffer.from(base64chunk.slice(0, end), "base64")); + base64chunk = base64chunk.slice(end); + }); + value.on("end", () => { + chunks.push(Buffer.from(base64chunk, "base64")); + responseFormData.append(name, new File(chunks, filename, { type: mimeType })); + }); + } else { + value.on("data", (chunk) => { + chunks.push(chunk); + }); + value.on("end", () => { + responseFormData.append(name, new File(chunks, filename, { type: mimeType })); + }); + } + }); + const busboyResolve = new Promise((resolve, reject) => { + busboy.on("finish", resolve); + busboy.on("error", (err) => reject(new TypeError(err))); + }); + if (this.body !== null) + for await (const chunk of consumeBody(this[kState].body)) + busboy.write(chunk); + busboy.end(); + await busboyResolve; + return responseFormData; + } else if (/application\/x-www-form-urlencoded/.test(contentType)) { + let entries; + try { + let text = ""; + const streamingDecoder = new TextDecoder("utf-8", { ignoreBOM: true }); + for await (const chunk of consumeBody(this[kState].body)) { + if (!isUint8Array(chunk)) { + throw new TypeError("Expected Uint8Array chunk"); + } + text += streamingDecoder.decode(chunk, { stream: true }); + } + text += streamingDecoder.decode(); + entries = new URLSearchParams(text); + } catch (err) { + throw Object.assign(new TypeError(), { cause: err }); + } + const formData = new FormData(); + for (const [name, value] of entries) { + formData.append(name, value); + } + return formData; + } else { + await Promise.resolve(); + throwIfAborted(this[kState]); + throw webidl.errors.exception({ + header: `${instance.name}.formData`, + message: "Could not parse content as FormData." + }); + } + } + }; + return methods; + } + function mixinBody(prototype) { + Object.assign(prototype.prototype, bodyMixinMethods(prototype)); + } + async function specConsumeBody(object, convertBytesToJSValue, instance) { + webidl.brandCheck(object, instance); + throwIfAborted(object[kState]); + if (bodyUnusable(object[kState].body)) { + throw new TypeError("Body is unusable"); + } + const promise = createDeferredPromise(); + const errorSteps = (error) => promise.reject(error); + const successSteps = (data) => { + try { + promise.resolve(convertBytesToJSValue(data)); + } catch (e) { + errorSteps(e); + } + }; + if (object[kState].body == null) { + successSteps(new Uint8Array()); + return promise.promise; + } + await fullyReadBody(object[kState].body, successSteps, errorSteps); + return promise.promise; + } + function bodyUnusable(body) { + return body != null && (body.stream.locked || util.isDisturbed(body.stream)); + } + function utf8DecodeBytes(buffer) { + if (buffer.length === 0) { + return ""; + } + if (buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191) { + buffer = buffer.subarray(3); + } + const output = textDecoder.decode(buffer); + return output; + } + function parseJSONFromBytes(bytes) { + return JSON.parse(utf8DecodeBytes(bytes)); + } + function bodyMimeType(object) { + const { headersList } = object[kState]; + const contentType = headersList.get("content-type"); + if (contentType === null) { + return "failure"; + } + return parseMIMEType(contentType); + } + module2.exports = { + extractBody, + safelyExtractBody, + cloneBody, + mixinBody + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/request.js +var require_request = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/request.js"(exports2, module2) { + "use strict"; + var { + InvalidArgumentError, + NotSupportedError + } = require_errors(); + var assert = require("assert"); + var { kHTTP2BuildRequest, kHTTP2CopyHeaders, kHTTP1BuildRequest } = require_symbols(); + var util = require_util(); + var tokenRegExp = /^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/; + var headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/; + var invalidPathRegex = /[^\u0021-\u00ff]/; + var kHandler = Symbol("handler"); + var channels = {}; + var extractBody; + try { + const diagnosticsChannel = require("diagnostics_channel"); + channels.create = diagnosticsChannel.channel("undici:request:create"); + channels.bodySent = diagnosticsChannel.channel("undici:request:bodySent"); + channels.headers = diagnosticsChannel.channel("undici:request:headers"); + channels.trailers = diagnosticsChannel.channel("undici:request:trailers"); + channels.error = diagnosticsChannel.channel("undici:request:error"); + } catch { + channels.create = { hasSubscribers: false }; + channels.bodySent = { hasSubscribers: false }; + channels.headers = { hasSubscribers: false }; + channels.trailers = { hasSubscribers: false }; + channels.error = { hasSubscribers: false }; + } + var Request = class _Request { + constructor(origin, { + path, + method, + body, + headers, + query, + idempotent, + blocking, + upgrade, + headersTimeout, + bodyTimeout, + reset, + throwOnError, + expectContinue + }, handler) { + if (typeof path !== "string") { + throw new InvalidArgumentError("path must be a string"); + } else if (path[0] !== "/" && !(path.startsWith("http://") || path.startsWith("https://")) && method !== "CONNECT") { + throw new InvalidArgumentError("path must be an absolute URL or start with a slash"); + } else if (invalidPathRegex.exec(path) !== null) { + throw new InvalidArgumentError("invalid request path"); + } + if (typeof method !== "string") { + throw new InvalidArgumentError("method must be a string"); + } else if (tokenRegExp.exec(method) === null) { + throw new InvalidArgumentError("invalid request method"); + } + if (upgrade && typeof upgrade !== "string") { + throw new InvalidArgumentError("upgrade must be a string"); + } + if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) { + throw new InvalidArgumentError("invalid headersTimeout"); + } + if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) { + throw new InvalidArgumentError("invalid bodyTimeout"); + } + if (reset != null && typeof reset !== "boolean") { + throw new InvalidArgumentError("invalid reset"); + } + if (expectContinue != null && typeof expectContinue !== "boolean") { + throw new InvalidArgumentError("invalid expectContinue"); + } + this.headersTimeout = headersTimeout; + this.bodyTimeout = bodyTimeout; + this.throwOnError = throwOnError === true; + this.method = method; + if (body == null) { + this.body = null; + } else if (util.isStream(body)) { + this.body = body; + } else if (util.isBuffer(body)) { + this.body = body.byteLength ? body : null; + } else if (ArrayBuffer.isView(body)) { + this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null; + } else if (body instanceof ArrayBuffer) { + this.body = body.byteLength ? Buffer.from(body) : null; + } else if (typeof body === "string") { + this.body = body.length ? Buffer.from(body) : null; + } else if (util.isFormDataLike(body) || util.isIterable(body) || util.isBlobLike(body)) { + this.body = body; + } else { + throw new InvalidArgumentError("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable"); + } + this.completed = false; + this.aborted = false; + this.upgrade = upgrade || null; + this.path = query ? util.buildURL(path, query) : path; + this.origin = origin; + this.idempotent = idempotent == null ? method === "HEAD" || method === "GET" : idempotent; + this.blocking = blocking == null ? false : blocking; + this.reset = reset == null ? null : reset; + this.host = null; + this.contentLength = null; + this.contentType = null; + this.headers = ""; + this.expectContinue = expectContinue != null ? expectContinue : false; + if (Array.isArray(headers)) { + if (headers.length % 2 !== 0) { + throw new InvalidArgumentError("headers array must be even"); + } + for (let i = 0; i < headers.length; i += 2) { + processHeader(this, headers[i], headers[i + 1]); + } + } else if (headers && typeof headers === "object") { + const keys = Object.keys(headers); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + processHeader(this, key, headers[key]); + } + } else if (headers != null) { + throw new InvalidArgumentError("headers must be an object or an array"); + } + if (util.isFormDataLike(this.body)) { + if (util.nodeMajor < 16 || util.nodeMajor === 16 && util.nodeMinor < 8) { + throw new InvalidArgumentError("Form-Data bodies are only supported in node v16.8 and newer."); + } + if (!extractBody) { + extractBody = require_body().extractBody; + } + const [bodyStream, contentType] = extractBody(body); + if (this.contentType == null) { + this.contentType = contentType; + this.headers += `content-type: ${contentType}\r +`; + } + this.body = bodyStream.stream; + this.contentLength = bodyStream.length; + } else if (util.isBlobLike(body) && this.contentType == null && body.type) { + this.contentType = body.type; + this.headers += `content-type: ${body.type}\r +`; + } + util.validateHandler(handler, method, upgrade); + this.servername = util.getServerName(this.host); + this[kHandler] = handler; + if (channels.create.hasSubscribers) { + channels.create.publish({ request: this }); + } + } + onBodySent(chunk) { + if (this[kHandler].onBodySent) { + try { + this[kHandler].onBodySent(chunk); + } catch (err) { + this.onError(err); + } + } + } + onRequestSent() { + if (channels.bodySent.hasSubscribers) { + channels.bodySent.publish({ request: this }); + } + if (this[kHandler].onRequestSent) { + try { + this[kHandler].onRequestSent(); + } catch (err) { + this.onError(err); + } + } + } + onConnect(abort) { + assert(!this.aborted); + assert(!this.completed); + return this[kHandler].onConnect(abort); + } + onHeaders(statusCode, headers, resume, statusText) { + assert(!this.aborted); + assert(!this.completed); + if (channels.headers.hasSubscribers) { + channels.headers.publish({ request: this, response: { statusCode, headers, statusText } }); + } + return this[kHandler].onHeaders(statusCode, headers, resume, statusText); + } + onData(chunk) { + assert(!this.aborted); + assert(!this.completed); + return this[kHandler].onData(chunk); + } + onUpgrade(statusCode, headers, socket) { + assert(!this.aborted); + assert(!this.completed); + return this[kHandler].onUpgrade(statusCode, headers, socket); + } + onComplete(trailers) { + assert(!this.aborted); + this.completed = true; + if (channels.trailers.hasSubscribers) { + channels.trailers.publish({ request: this, trailers }); + } + return this[kHandler].onComplete(trailers); + } + onError(error) { + if (channels.error.hasSubscribers) { + channels.error.publish({ request: this, error }); + } + if (this.aborted) { + return; + } + this.aborted = true; + return this[kHandler].onError(error); + } + // TODO: adjust to support H2 + addHeader(key, value) { + processHeader(this, key, value); + return this; + } + static [kHTTP1BuildRequest](origin, opts, handler) { + return new _Request(origin, opts, handler); + } + static [kHTTP2BuildRequest](origin, opts, handler) { + const headers = opts.headers; + opts = { ...opts, headers: null }; + const request3 = new _Request(origin, opts, handler); + request3.headers = {}; + if (Array.isArray(headers)) { + if (headers.length % 2 !== 0) { + throw new InvalidArgumentError("headers array must be even"); + } + for (let i = 0; i < headers.length; i += 2) { + processHeader(request3, headers[i], headers[i + 1], true); + } + } else if (headers && typeof headers === "object") { + const keys = Object.keys(headers); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + processHeader(request3, key, headers[key], true); + } + } else if (headers != null) { + throw new InvalidArgumentError("headers must be an object or an array"); + } + return request3; + } + static [kHTTP2CopyHeaders](raw) { + const rawHeaders = raw.split("\r\n"); + const headers = {}; + for (const header of rawHeaders) { + const [key, value] = header.split(": "); + if (value == null || value.length === 0) + continue; + if (headers[key]) + headers[key] += `,${value}`; + else + headers[key] = value; + } + return headers; + } + }; + function processHeaderValue(key, val, skipAppend) { + if (val && typeof val === "object") { + throw new InvalidArgumentError(`invalid ${key} header`); + } + val = val != null ? `${val}` : ""; + if (headerCharRegex.exec(val) !== null) { + throw new InvalidArgumentError(`invalid ${key} header`); + } + return skipAppend ? val : `${key}: ${val}\r +`; + } + function processHeader(request3, key, val, skipAppend = false) { + if (val && (typeof val === "object" && !Array.isArray(val))) { + throw new InvalidArgumentError(`invalid ${key} header`); + } else if (val === void 0) { + return; + } + if (request3.host === null && key.length === 4 && key.toLowerCase() === "host") { + if (headerCharRegex.exec(val) !== null) { + throw new InvalidArgumentError(`invalid ${key} header`); + } + request3.host = val; + } else if (request3.contentLength === null && key.length === 14 && key.toLowerCase() === "content-length") { + request3.contentLength = parseInt(val, 10); + if (!Number.isFinite(request3.contentLength)) { + throw new InvalidArgumentError("invalid content-length header"); + } + } else if (request3.contentType === null && key.length === 12 && key.toLowerCase() === "content-type") { + request3.contentType = val; + if (skipAppend) + request3.headers[key] = processHeaderValue(key, val, skipAppend); + else + request3.headers += processHeaderValue(key, val); + } else if (key.length === 17 && key.toLowerCase() === "transfer-encoding") { + throw new InvalidArgumentError("invalid transfer-encoding header"); + } else if (key.length === 10 && key.toLowerCase() === "connection") { + const value = typeof val === "string" ? val.toLowerCase() : null; + if (value !== "close" && value !== "keep-alive") { + throw new InvalidArgumentError("invalid connection header"); + } else if (value === "close") { + request3.reset = true; + } + } else if (key.length === 10 && key.toLowerCase() === "keep-alive") { + throw new InvalidArgumentError("invalid keep-alive header"); + } else if (key.length === 7 && key.toLowerCase() === "upgrade") { + throw new InvalidArgumentError("invalid upgrade header"); + } else if (key.length === 6 && key.toLowerCase() === "expect") { + throw new NotSupportedError("expect header not supported"); + } else if (tokenRegExp.exec(key) === null) { + throw new InvalidArgumentError("invalid header key"); + } else { + if (Array.isArray(val)) { + for (let i = 0; i < val.length; i++) { + if (skipAppend) { + if (request3.headers[key]) + request3.headers[key] += `,${processHeaderValue(key, val[i], skipAppend)}`; + else + request3.headers[key] = processHeaderValue(key, val[i], skipAppend); + } else { + request3.headers += processHeaderValue(key, val[i]); + } + } + } else { + if (skipAppend) + request3.headers[key] = processHeaderValue(key, val, skipAppend); + else + request3.headers += processHeaderValue(key, val); + } + } + } + module2.exports = Request; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/dispatcher.js +var require_dispatcher = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/dispatcher.js"(exports2, module2) { + "use strict"; + var EventEmitter = require("events"); + var Dispatcher = class extends EventEmitter { + dispatch() { + throw new Error("not implemented"); + } + close() { + throw new Error("not implemented"); + } + destroy() { + throw new Error("not implemented"); + } + }; + module2.exports = Dispatcher; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/dispatcher-base.js +var require_dispatcher_base = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/dispatcher-base.js"(exports2, module2) { + "use strict"; + var Dispatcher = require_dispatcher(); + var { + ClientDestroyedError, + ClientClosedError, + InvalidArgumentError + } = require_errors(); + var { kDestroy, kClose, kDispatch, kInterceptors } = require_symbols(); + var kDestroyed = Symbol("destroyed"); + var kClosed = Symbol("closed"); + var kOnDestroyed = Symbol("onDestroyed"); + var kOnClosed = Symbol("onClosed"); + var kInterceptedDispatch = Symbol("Intercepted Dispatch"); + var DispatcherBase = class extends Dispatcher { + constructor() { + super(); + this[kDestroyed] = false; + this[kOnDestroyed] = null; + this[kClosed] = false; + this[kOnClosed] = []; + } + get destroyed() { + return this[kDestroyed]; + } + get closed() { + return this[kClosed]; + } + get interceptors() { + return this[kInterceptors]; + } + set interceptors(newInterceptors) { + if (newInterceptors) { + for (let i = newInterceptors.length - 1; i >= 0; i--) { + const interceptor = this[kInterceptors][i]; + if (typeof interceptor !== "function") { + throw new InvalidArgumentError("interceptor must be an function"); + } + } + } + this[kInterceptors] = newInterceptors; + } + close(callback) { + if (callback === void 0) { + return new Promise((resolve, reject) => { + this.close((err, data) => { + return err ? reject(err) : resolve(data); + }); + }); + } + if (typeof callback !== "function") { + throw new InvalidArgumentError("invalid callback"); + } + if (this[kDestroyed]) { + queueMicrotask(() => callback(new ClientDestroyedError(), null)); + return; + } + if (this[kClosed]) { + if (this[kOnClosed]) { + this[kOnClosed].push(callback); + } else { + queueMicrotask(() => callback(null, null)); + } + return; + } + this[kClosed] = true; + this[kOnClosed].push(callback); + const onClosed = () => { + const callbacks = this[kOnClosed]; + this[kOnClosed] = null; + for (let i = 0; i < callbacks.length; i++) { + callbacks[i](null, null); + } + }; + this[kClose]().then(() => this.destroy()).then(() => { + queueMicrotask(onClosed); + }); + } + destroy(err, callback) { + if (typeof err === "function") { + callback = err; + err = null; + } + if (callback === void 0) { + return new Promise((resolve, reject) => { + this.destroy(err, (err2, data) => { + return err2 ? ( + /* istanbul ignore next: should never error */ + reject(err2) + ) : resolve(data); + }); + }); + } + if (typeof callback !== "function") { + throw new InvalidArgumentError("invalid callback"); + } + if (this[kDestroyed]) { + if (this[kOnDestroyed]) { + this[kOnDestroyed].push(callback); + } else { + queueMicrotask(() => callback(null, null)); + } + return; + } + if (!err) { + err = new ClientDestroyedError(); + } + this[kDestroyed] = true; + this[kOnDestroyed] = this[kOnDestroyed] || []; + this[kOnDestroyed].push(callback); + const onDestroyed = () => { + const callbacks = this[kOnDestroyed]; + this[kOnDestroyed] = null; + for (let i = 0; i < callbacks.length; i++) { + callbacks[i](null, null); + } + }; + this[kDestroy](err).then(() => { + queueMicrotask(onDestroyed); + }); + } + [kInterceptedDispatch](opts, handler) { + if (!this[kInterceptors] || this[kInterceptors].length === 0) { + this[kInterceptedDispatch] = this[kDispatch]; + return this[kDispatch](opts, handler); + } + let dispatch = this[kDispatch].bind(this); + for (let i = this[kInterceptors].length - 1; i >= 0; i--) { + dispatch = this[kInterceptors][i](dispatch); + } + this[kInterceptedDispatch] = dispatch; + return dispatch(opts, handler); + } + dispatch(opts, handler) { + if (!handler || typeof handler !== "object") { + throw new InvalidArgumentError("handler must be an object"); + } + try { + if (!opts || typeof opts !== "object") { + throw new InvalidArgumentError("opts must be an object."); + } + if (this[kDestroyed] || this[kOnDestroyed]) { + throw new ClientDestroyedError(); + } + if (this[kClosed]) { + throw new ClientClosedError(); + } + return this[kInterceptedDispatch](opts, handler); + } catch (err) { + if (typeof handler.onError !== "function") { + throw new InvalidArgumentError("invalid onError method"); + } + handler.onError(err); + return false; + } + } + }; + module2.exports = DispatcherBase; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/connect.js +var require_connect = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/connect.js"(exports2, module2) { + "use strict"; + var net = require("net"); + var assert = require("assert"); + var util = require_util(); + var { InvalidArgumentError, ConnectTimeoutError } = require_errors(); + var tls; + var SessionCache; + if (global.FinalizationRegistry && !process.env.NODE_V8_COVERAGE) { + SessionCache = class WeakSessionCache { + constructor(maxCachedSessions) { + this._maxCachedSessions = maxCachedSessions; + this._sessionCache = /* @__PURE__ */ new Map(); + this._sessionRegistry = new global.FinalizationRegistry((key) => { + if (this._sessionCache.size < this._maxCachedSessions) { + return; + } + const ref = this._sessionCache.get(key); + if (ref !== void 0 && ref.deref() === void 0) { + this._sessionCache.delete(key); + } + }); + } + get(sessionKey) { + const ref = this._sessionCache.get(sessionKey); + return ref ? ref.deref() : null; + } + set(sessionKey, session) { + if (this._maxCachedSessions === 0) { + return; + } + this._sessionCache.set(sessionKey, new WeakRef(session)); + this._sessionRegistry.register(session, sessionKey); + } + }; + } else { + SessionCache = class SimpleSessionCache { + constructor(maxCachedSessions) { + this._maxCachedSessions = maxCachedSessions; + this._sessionCache = /* @__PURE__ */ new Map(); + } + get(sessionKey) { + return this._sessionCache.get(sessionKey); + } + set(sessionKey, session) { + if (this._maxCachedSessions === 0) { + return; + } + if (this._sessionCache.size >= this._maxCachedSessions) { + const { value: oldestKey } = this._sessionCache.keys().next(); + this._sessionCache.delete(oldestKey); + } + this._sessionCache.set(sessionKey, session); + } + }; + } + function buildConnector({ allowH2, maxCachedSessions, socketPath, timeout, ...opts }) { + if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) { + throw new InvalidArgumentError("maxCachedSessions must be a positive integer or zero"); + } + const options = { path: socketPath, ...opts }; + const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions); + timeout = timeout == null ? 1e4 : timeout; + allowH2 = allowH2 != null ? allowH2 : false; + return function connect({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) { + let socket; + if (protocol === "https:") { + if (!tls) { + tls = require("tls"); + } + servername = servername || options.servername || util.getServerName(host) || null; + const sessionKey = servername || hostname; + const session = sessionCache.get(sessionKey) || null; + assert(sessionKey); + socket = tls.connect({ + highWaterMark: 16384, + // TLS in node can't have bigger HWM anyway... + ...options, + servername, + session, + localAddress, + // TODO(HTTP/2): Add support for h2c + ALPNProtocols: allowH2 ? ["http/1.1", "h2"] : ["http/1.1"], + socket: httpSocket, + // upgrade socket connection + port: port || 443, + host: hostname + }); + socket.on("session", function(session2) { + sessionCache.set(sessionKey, session2); + }); + } else { + assert(!httpSocket, "httpSocket can only be sent on TLS update"); + socket = net.connect({ + highWaterMark: 64 * 1024, + // Same as nodejs fs streams. + ...options, + localAddress, + port: port || 80, + host: hostname + }); + } + if (options.keepAlive == null || options.keepAlive) { + const keepAliveInitialDelay = options.keepAliveInitialDelay === void 0 ? 6e4 : options.keepAliveInitialDelay; + socket.setKeepAlive(true, keepAliveInitialDelay); + } + const cancelTimeout = setupTimeout(() => onConnectTimeout(socket), timeout); + socket.setNoDelay(true).once(protocol === "https:" ? "secureConnect" : "connect", function() { + cancelTimeout(); + if (callback) { + const cb = callback; + callback = null; + cb(null, this); + } + }).on("error", function(err) { + cancelTimeout(); + if (callback) { + const cb = callback; + callback = null; + cb(err); + } + }); + return socket; + }; + } + function setupTimeout(onConnectTimeout2, timeout) { + if (!timeout) { + return () => { + }; + } + let s1 = null; + let s2 = null; + const timeoutId = setTimeout(() => { + s1 = setImmediate(() => { + if (process.platform === "win32") { + s2 = setImmediate(() => onConnectTimeout2()); + } else { + onConnectTimeout2(); + } + }); + }, timeout); + return () => { + clearTimeout(timeoutId); + clearImmediate(s1); + clearImmediate(s2); + }; + } + function onConnectTimeout(socket) { + util.destroy(socket, new ConnectTimeoutError()); + } + module2.exports = buildConnector; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/llhttp/utils.js +var require_utils = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/llhttp/utils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.enumToMap = void 0; + function enumToMap(obj) { + const res = {}; + Object.keys(obj).forEach((key) => { + const value = obj[key]; + if (typeof value === "number") { + res[key] = value; + } + }); + return res; + } + exports2.enumToMap = enumToMap; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/llhttp/constants.js +var require_constants2 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/llhttp/constants.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.SPECIAL_HEADERS = exports2.HEADER_STATE = exports2.MINOR = exports2.MAJOR = exports2.CONNECTION_TOKEN_CHARS = exports2.HEADER_CHARS = exports2.TOKEN = exports2.STRICT_TOKEN = exports2.HEX = exports2.URL_CHAR = exports2.STRICT_URL_CHAR = exports2.USERINFO_CHARS = exports2.MARK = exports2.ALPHANUM = exports2.NUM = exports2.HEX_MAP = exports2.NUM_MAP = exports2.ALPHA = exports2.FINISH = exports2.H_METHOD_MAP = exports2.METHOD_MAP = exports2.METHODS_RTSP = exports2.METHODS_ICE = exports2.METHODS_HTTP = exports2.METHODS = exports2.LENIENT_FLAGS = exports2.FLAGS = exports2.TYPE = exports2.ERROR = void 0; + var utils_1 = require_utils(); + var ERROR; + (function(ERROR2) { + ERROR2[ERROR2["OK"] = 0] = "OK"; + ERROR2[ERROR2["INTERNAL"] = 1] = "INTERNAL"; + ERROR2[ERROR2["STRICT"] = 2] = "STRICT"; + ERROR2[ERROR2["LF_EXPECTED"] = 3] = "LF_EXPECTED"; + ERROR2[ERROR2["UNEXPECTED_CONTENT_LENGTH"] = 4] = "UNEXPECTED_CONTENT_LENGTH"; + ERROR2[ERROR2["CLOSED_CONNECTION"] = 5] = "CLOSED_CONNECTION"; + ERROR2[ERROR2["INVALID_METHOD"] = 6] = "INVALID_METHOD"; + ERROR2[ERROR2["INVALID_URL"] = 7] = "INVALID_URL"; + ERROR2[ERROR2["INVALID_CONSTANT"] = 8] = "INVALID_CONSTANT"; + ERROR2[ERROR2["INVALID_VERSION"] = 9] = "INVALID_VERSION"; + ERROR2[ERROR2["INVALID_HEADER_TOKEN"] = 10] = "INVALID_HEADER_TOKEN"; + ERROR2[ERROR2["INVALID_CONTENT_LENGTH"] = 11] = "INVALID_CONTENT_LENGTH"; + ERROR2[ERROR2["INVALID_CHUNK_SIZE"] = 12] = "INVALID_CHUNK_SIZE"; + ERROR2[ERROR2["INVALID_STATUS"] = 13] = "INVALID_STATUS"; + ERROR2[ERROR2["INVALID_EOF_STATE"] = 14] = "INVALID_EOF_STATE"; + ERROR2[ERROR2["INVALID_TRANSFER_ENCODING"] = 15] = "INVALID_TRANSFER_ENCODING"; + ERROR2[ERROR2["CB_MESSAGE_BEGIN"] = 16] = "CB_MESSAGE_BEGIN"; + ERROR2[ERROR2["CB_HEADERS_COMPLETE"] = 17] = "CB_HEADERS_COMPLETE"; + ERROR2[ERROR2["CB_MESSAGE_COMPLETE"] = 18] = "CB_MESSAGE_COMPLETE"; + ERROR2[ERROR2["CB_CHUNK_HEADER"] = 19] = "CB_CHUNK_HEADER"; + ERROR2[ERROR2["CB_CHUNK_COMPLETE"] = 20] = "CB_CHUNK_COMPLETE"; + ERROR2[ERROR2["PAUSED"] = 21] = "PAUSED"; + ERROR2[ERROR2["PAUSED_UPGRADE"] = 22] = "PAUSED_UPGRADE"; + ERROR2[ERROR2["PAUSED_H2_UPGRADE"] = 23] = "PAUSED_H2_UPGRADE"; + ERROR2[ERROR2["USER"] = 24] = "USER"; + })(ERROR = exports2.ERROR || (exports2.ERROR = {})); + var TYPE; + (function(TYPE2) { + TYPE2[TYPE2["BOTH"] = 0] = "BOTH"; + TYPE2[TYPE2["REQUEST"] = 1] = "REQUEST"; + TYPE2[TYPE2["RESPONSE"] = 2] = "RESPONSE"; + })(TYPE = exports2.TYPE || (exports2.TYPE = {})); + var FLAGS; + (function(FLAGS2) { + FLAGS2[FLAGS2["CONNECTION_KEEP_ALIVE"] = 1] = "CONNECTION_KEEP_ALIVE"; + FLAGS2[FLAGS2["CONNECTION_CLOSE"] = 2] = "CONNECTION_CLOSE"; + FLAGS2[FLAGS2["CONNECTION_UPGRADE"] = 4] = "CONNECTION_UPGRADE"; + FLAGS2[FLAGS2["CHUNKED"] = 8] = "CHUNKED"; + FLAGS2[FLAGS2["UPGRADE"] = 16] = "UPGRADE"; + FLAGS2[FLAGS2["CONTENT_LENGTH"] = 32] = "CONTENT_LENGTH"; + FLAGS2[FLAGS2["SKIPBODY"] = 64] = "SKIPBODY"; + FLAGS2[FLAGS2["TRAILING"] = 128] = "TRAILING"; + FLAGS2[FLAGS2["TRANSFER_ENCODING"] = 512] = "TRANSFER_ENCODING"; + })(FLAGS = exports2.FLAGS || (exports2.FLAGS = {})); + var LENIENT_FLAGS; + (function(LENIENT_FLAGS2) { + LENIENT_FLAGS2[LENIENT_FLAGS2["HEADERS"] = 1] = "HEADERS"; + LENIENT_FLAGS2[LENIENT_FLAGS2["CHUNKED_LENGTH"] = 2] = "CHUNKED_LENGTH"; + LENIENT_FLAGS2[LENIENT_FLAGS2["KEEP_ALIVE"] = 4] = "KEEP_ALIVE"; + })(LENIENT_FLAGS = exports2.LENIENT_FLAGS || (exports2.LENIENT_FLAGS = {})); + var METHODS; + (function(METHODS2) { + METHODS2[METHODS2["DELETE"] = 0] = "DELETE"; + METHODS2[METHODS2["GET"] = 1] = "GET"; + METHODS2[METHODS2["HEAD"] = 2] = "HEAD"; + METHODS2[METHODS2["POST"] = 3] = "POST"; + METHODS2[METHODS2["PUT"] = 4] = "PUT"; + METHODS2[METHODS2["CONNECT"] = 5] = "CONNECT"; + METHODS2[METHODS2["OPTIONS"] = 6] = "OPTIONS"; + METHODS2[METHODS2["TRACE"] = 7] = "TRACE"; + METHODS2[METHODS2["COPY"] = 8] = "COPY"; + METHODS2[METHODS2["LOCK"] = 9] = "LOCK"; + METHODS2[METHODS2["MKCOL"] = 10] = "MKCOL"; + METHODS2[METHODS2["MOVE"] = 11] = "MOVE"; + METHODS2[METHODS2["PROPFIND"] = 12] = "PROPFIND"; + METHODS2[METHODS2["PROPPATCH"] = 13] = "PROPPATCH"; + METHODS2[METHODS2["SEARCH"] = 14] = "SEARCH"; + METHODS2[METHODS2["UNLOCK"] = 15] = "UNLOCK"; + METHODS2[METHODS2["BIND"] = 16] = "BIND"; + METHODS2[METHODS2["REBIND"] = 17] = "REBIND"; + METHODS2[METHODS2["UNBIND"] = 18] = "UNBIND"; + METHODS2[METHODS2["ACL"] = 19] = "ACL"; + METHODS2[METHODS2["REPORT"] = 20] = "REPORT"; + METHODS2[METHODS2["MKACTIVITY"] = 21] = "MKACTIVITY"; + METHODS2[METHODS2["CHECKOUT"] = 22] = "CHECKOUT"; + METHODS2[METHODS2["MERGE"] = 23] = "MERGE"; + METHODS2[METHODS2["M-SEARCH"] = 24] = "M-SEARCH"; + METHODS2[METHODS2["NOTIFY"] = 25] = "NOTIFY"; + METHODS2[METHODS2["SUBSCRIBE"] = 26] = "SUBSCRIBE"; + METHODS2[METHODS2["UNSUBSCRIBE"] = 27] = "UNSUBSCRIBE"; + METHODS2[METHODS2["PATCH"] = 28] = "PATCH"; + METHODS2[METHODS2["PURGE"] = 29] = "PURGE"; + METHODS2[METHODS2["MKCALENDAR"] = 30] = "MKCALENDAR"; + METHODS2[METHODS2["LINK"] = 31] = "LINK"; + METHODS2[METHODS2["UNLINK"] = 32] = "UNLINK"; + METHODS2[METHODS2["SOURCE"] = 33] = "SOURCE"; + METHODS2[METHODS2["PRI"] = 34] = "PRI"; + METHODS2[METHODS2["DESCRIBE"] = 35] = "DESCRIBE"; + METHODS2[METHODS2["ANNOUNCE"] = 36] = "ANNOUNCE"; + METHODS2[METHODS2["SETUP"] = 37] = "SETUP"; + METHODS2[METHODS2["PLAY"] = 38] = "PLAY"; + METHODS2[METHODS2["PAUSE"] = 39] = "PAUSE"; + METHODS2[METHODS2["TEARDOWN"] = 40] = "TEARDOWN"; + METHODS2[METHODS2["GET_PARAMETER"] = 41] = "GET_PARAMETER"; + METHODS2[METHODS2["SET_PARAMETER"] = 42] = "SET_PARAMETER"; + METHODS2[METHODS2["REDIRECT"] = 43] = "REDIRECT"; + METHODS2[METHODS2["RECORD"] = 44] = "RECORD"; + METHODS2[METHODS2["FLUSH"] = 45] = "FLUSH"; + })(METHODS = exports2.METHODS || (exports2.METHODS = {})); + exports2.METHODS_HTTP = [ + METHODS.DELETE, + METHODS.GET, + METHODS.HEAD, + METHODS.POST, + METHODS.PUT, + METHODS.CONNECT, + METHODS.OPTIONS, + METHODS.TRACE, + METHODS.COPY, + METHODS.LOCK, + METHODS.MKCOL, + METHODS.MOVE, + METHODS.PROPFIND, + METHODS.PROPPATCH, + METHODS.SEARCH, + METHODS.UNLOCK, + METHODS.BIND, + METHODS.REBIND, + METHODS.UNBIND, + METHODS.ACL, + METHODS.REPORT, + METHODS.MKACTIVITY, + METHODS.CHECKOUT, + METHODS.MERGE, + METHODS["M-SEARCH"], + METHODS.NOTIFY, + METHODS.SUBSCRIBE, + METHODS.UNSUBSCRIBE, + METHODS.PATCH, + METHODS.PURGE, + METHODS.MKCALENDAR, + METHODS.LINK, + METHODS.UNLINK, + METHODS.PRI, + // TODO(indutny): should we allow it with HTTP? + METHODS.SOURCE + ]; + exports2.METHODS_ICE = [ + METHODS.SOURCE + ]; + exports2.METHODS_RTSP = [ + METHODS.OPTIONS, + METHODS.DESCRIBE, + METHODS.ANNOUNCE, + METHODS.SETUP, + METHODS.PLAY, + METHODS.PAUSE, + METHODS.TEARDOWN, + METHODS.GET_PARAMETER, + METHODS.SET_PARAMETER, + METHODS.REDIRECT, + METHODS.RECORD, + METHODS.FLUSH, + // For AirPlay + METHODS.GET, + METHODS.POST + ]; + exports2.METHOD_MAP = utils_1.enumToMap(METHODS); + exports2.H_METHOD_MAP = {}; + Object.keys(exports2.METHOD_MAP).forEach((key) => { + if (/^H/.test(key)) { + exports2.H_METHOD_MAP[key] = exports2.METHOD_MAP[key]; + } + }); + var FINISH; + (function(FINISH2) { + FINISH2[FINISH2["SAFE"] = 0] = "SAFE"; + FINISH2[FINISH2["SAFE_WITH_CB"] = 1] = "SAFE_WITH_CB"; + FINISH2[FINISH2["UNSAFE"] = 2] = "UNSAFE"; + })(FINISH = exports2.FINISH || (exports2.FINISH = {})); + exports2.ALPHA = []; + for (let i = "A".charCodeAt(0); i <= "Z".charCodeAt(0); i++) { + exports2.ALPHA.push(String.fromCharCode(i)); + exports2.ALPHA.push(String.fromCharCode(i + 32)); + } + exports2.NUM_MAP = { + 0: 0, + 1: 1, + 2: 2, + 3: 3, + 4: 4, + 5: 5, + 6: 6, + 7: 7, + 8: 8, + 9: 9 + }; + exports2.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 + }; + exports2.NUM = [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ]; + exports2.ALPHANUM = exports2.ALPHA.concat(exports2.NUM); + exports2.MARK = ["-", "_", ".", "!", "~", "*", "'", "(", ")"]; + exports2.USERINFO_CHARS = exports2.ALPHANUM.concat(exports2.MARK).concat(["%", ";", ":", "&", "=", "+", "$", ","]); + exports2.STRICT_URL_CHAR = [ + "!", + '"', + "$", + "%", + "&", + "'", + "(", + ")", + "*", + "+", + ",", + "-", + ".", + "/", + ":", + ";", + "<", + "=", + ">", + "@", + "[", + "\\", + "]", + "^", + "_", + "`", + "{", + "|", + "}", + "~" + ].concat(exports2.ALPHANUM); + exports2.URL_CHAR = exports2.STRICT_URL_CHAR.concat([" ", "\f"]); + for (let i = 128; i <= 255; i++) { + exports2.URL_CHAR.push(i); + } + exports2.HEX = exports2.NUM.concat(["a", "b", "c", "d", "e", "f", "A", "B", "C", "D", "E", "F"]); + exports2.STRICT_TOKEN = [ + "!", + "#", + "$", + "%", + "&", + "'", + "*", + "+", + "-", + ".", + "^", + "_", + "`", + "|", + "~" + ].concat(exports2.ALPHANUM); + exports2.TOKEN = exports2.STRICT_TOKEN.concat([" "]); + exports2.HEADER_CHARS = [" "]; + for (let i = 32; i <= 255; i++) { + if (i !== 127) { + exports2.HEADER_CHARS.push(i); + } + } + exports2.CONNECTION_TOKEN_CHARS = exports2.HEADER_CHARS.filter((c) => c !== 44); + exports2.MAJOR = exports2.NUM_MAP; + exports2.MINOR = exports2.MAJOR; + var HEADER_STATE; + (function(HEADER_STATE2) { + HEADER_STATE2[HEADER_STATE2["GENERAL"] = 0] = "GENERAL"; + HEADER_STATE2[HEADER_STATE2["CONNECTION"] = 1] = "CONNECTION"; + HEADER_STATE2[HEADER_STATE2["CONTENT_LENGTH"] = 2] = "CONTENT_LENGTH"; + HEADER_STATE2[HEADER_STATE2["TRANSFER_ENCODING"] = 3] = "TRANSFER_ENCODING"; + HEADER_STATE2[HEADER_STATE2["UPGRADE"] = 4] = "UPGRADE"; + HEADER_STATE2[HEADER_STATE2["CONNECTION_KEEP_ALIVE"] = 5] = "CONNECTION_KEEP_ALIVE"; + HEADER_STATE2[HEADER_STATE2["CONNECTION_CLOSE"] = 6] = "CONNECTION_CLOSE"; + HEADER_STATE2[HEADER_STATE2["CONNECTION_UPGRADE"] = 7] = "CONNECTION_UPGRADE"; + HEADER_STATE2[HEADER_STATE2["TRANSFER_ENCODING_CHUNKED"] = 8] = "TRANSFER_ENCODING_CHUNKED"; + })(HEADER_STATE = exports2.HEADER_STATE || (exports2.HEADER_STATE = {})); + exports2.SPECIAL_HEADERS = { + "connection": HEADER_STATE.CONNECTION, + "content-length": HEADER_STATE.CONTENT_LENGTH, + "proxy-connection": HEADER_STATE.CONNECTION, + "transfer-encoding": HEADER_STATE.TRANSFER_ENCODING, + "upgrade": HEADER_STATE.UPGRADE + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/handler/RedirectHandler.js +var require_RedirectHandler = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/handler/RedirectHandler.js"(exports2, module2) { + "use strict"; + var util = require_util(); + var { kBodyUsed } = require_symbols(); + var assert = require("assert"); + var { InvalidArgumentError } = require_errors(); + var EE = require("events"); + var redirectableStatusCodes = [300, 301, 302, 303, 307, 308]; + var kBody = Symbol("body"); + var BodyAsyncIterable = class { + constructor(body) { + this[kBody] = body; + this[kBodyUsed] = false; + } + async *[Symbol.asyncIterator]() { + assert(!this[kBodyUsed], "disturbed"); + this[kBodyUsed] = true; + yield* this[kBody]; + } + }; + var RedirectHandler = class { + constructor(dispatch, maxRedirections, opts, handler) { + if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { + throw new InvalidArgumentError("maxRedirections must be a positive number"); + } + util.validateHandler(handler, opts.method, opts.upgrade); + this.dispatch = dispatch; + this.location = null; + this.abort = null; + this.opts = { ...opts, maxRedirections: 0 }; + this.maxRedirections = maxRedirections; + this.handler = handler; + this.history = []; + if (util.isStream(this.opts.body)) { + if (util.bodyLength(this.opts.body) === 0) { + this.opts.body.on("data", function() { + assert(false); + }); + } + if (typeof this.opts.body.readableDidRead !== "boolean") { + this.opts.body[kBodyUsed] = false; + EE.prototype.on.call(this.opts.body, "data", function() { + this[kBodyUsed] = true; + }); + } + } else if (this.opts.body && typeof this.opts.body.pipeTo === "function") { + this.opts.body = new BodyAsyncIterable(this.opts.body); + } else if (this.opts.body && typeof this.opts.body !== "string" && !ArrayBuffer.isView(this.opts.body) && util.isIterable(this.opts.body)) { + this.opts.body = new BodyAsyncIterable(this.opts.body); + } + } + onConnect(abort) { + this.abort = abort; + this.handler.onConnect(abort, { history: this.history }); + } + onUpgrade(statusCode, headers, socket) { + this.handler.onUpgrade(statusCode, headers, socket); + } + onError(error) { + this.handler.onError(error); + } + onHeaders(statusCode, headers, resume, statusText) { + this.location = this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body) ? null : parseLocation(statusCode, headers); + if (this.opts.origin) { + this.history.push(new URL(this.opts.path, this.opts.origin)); + } + if (!this.location) { + return this.handler.onHeaders(statusCode, headers, resume, statusText); + } + const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin))); + const path = search ? `${pathname}${search}` : pathname; + this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin); + this.opts.path = path; + this.opts.origin = origin; + this.opts.maxRedirections = 0; + this.opts.query = null; + if (statusCode === 303 && this.opts.method !== "HEAD") { + this.opts.method = "GET"; + this.opts.body = null; + } + } + onData(chunk) { + if (this.location) { + } else { + return this.handler.onData(chunk); + } + } + onComplete(trailers) { + if (this.location) { + this.location = null; + this.abort = null; + this.dispatch(this.opts, this); + } else { + this.handler.onComplete(trailers); + } + } + onBodySent(chunk) { + if (this.handler.onBodySent) { + this.handler.onBodySent(chunk); + } + } + }; + function parseLocation(statusCode, headers) { + if (redirectableStatusCodes.indexOf(statusCode) === -1) { + return null; + } + for (let i = 0; i < headers.length; i += 2) { + if (headers[i].toString().toLowerCase() === "location") { + return headers[i + 1]; + } + } + } + function shouldRemoveHeader(header, removeContent, unknownOrigin) { + return header.length === 4 && header.toString().toLowerCase() === "host" || removeContent && header.toString().toLowerCase().indexOf("content-") === 0 || unknownOrigin && header.length === 13 && header.toString().toLowerCase() === "authorization" || unknownOrigin && header.length === 6 && header.toString().toLowerCase() === "cookie"; + } + function cleanRequestHeaders(headers, removeContent, unknownOrigin) { + const ret = []; + if (Array.isArray(headers)) { + for (let i = 0; i < headers.length; i += 2) { + if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) { + ret.push(headers[i], headers[i + 1]); + } + } + } else if (headers && typeof headers === "object") { + for (const key of Object.keys(headers)) { + if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) { + ret.push(key, headers[key]); + } + } + } else { + assert(headers == null, "headers must be an object or an array"); + } + return ret; + } + module2.exports = RedirectHandler; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/interceptor/redirectInterceptor.js +var require_redirectInterceptor = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/interceptor/redirectInterceptor.js"(exports2, module2) { + "use strict"; + var RedirectHandler = require_RedirectHandler(); + function createRedirectInterceptor({ maxRedirections: defaultMaxRedirections }) { + return (dispatch) => { + return function Intercept(opts, handler) { + const { maxRedirections = defaultMaxRedirections } = opts; + if (!maxRedirections) { + return dispatch(opts, handler); + } + const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler); + opts = { ...opts, maxRedirections: 0 }; + return dispatch(opts, redirectHandler); + }; + }; + } + module2.exports = createRedirectInterceptor; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/llhttp/llhttp-wasm.js +var require_llhttp_wasm = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/llhttp/llhttp-wasm.js"(exports2, module2) { + module2.exports = "AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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ADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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FCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAU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YWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8="; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +var require_llhttp_simd_wasm = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js"(exports2, module2) { + module2.exports = "AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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IAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw=="; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/client.js +var require_client = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/client.js"(exports2, module2) { + "use strict"; + var assert = require("assert"); + var net = require("net"); + var http = require("http"); + var { pipeline } = require("stream"); + var util = require_util(); + var timers = require_timers(); + var Request = require_request(); + var DispatcherBase = require_dispatcher_base(); + var { + RequestContentLengthMismatchError, + ResponseContentLengthMismatchError, + InvalidArgumentError, + RequestAbortedError, + HeadersTimeoutError, + HeadersOverflowError, + SocketError, + InformationalError, + BodyTimeoutError, + HTTPParserError, + ResponseExceededMaxSizeError, + ClientDestroyedError + } = require_errors(); + var buildConnector = require_connect(); + var { + kUrl, + kReset, + kServerName, + kClient, + kBusy, + kParser, + kConnect, + kBlocking, + kResuming, + kRunning, + kPending, + kSize, + kWriting, + kQueue, + kConnected, + kConnecting, + kNeedDrain, + kNoRef, + kKeepAliveDefaultTimeout, + kHostHeader, + kPendingIdx, + kRunningIdx, + kError, + kPipelining, + kSocket, + kKeepAliveTimeoutValue, + kMaxHeadersSize, + kKeepAliveMaxTimeout, + kKeepAliveTimeoutThreshold, + kHeadersTimeout, + kBodyTimeout, + kStrictContentLength, + kConnector, + kMaxRedirections, + kMaxRequests, + kCounter, + kClose, + kDestroy, + kDispatch, + kInterceptors, + kLocalAddress, + kMaxResponseSize, + kHTTPConnVersion, + // HTTP2 + kHost, + kHTTP2Session, + kHTTP2SessionState, + kHTTP2BuildRequest, + kHTTP2CopyHeaders, + kHTTP1BuildRequest + } = require_symbols(); + var http2; + try { + http2 = require("http2"); + } catch { + http2 = { constants: {} }; + } + var { + constants: { + HTTP2_HEADER_AUTHORITY, + HTTP2_HEADER_METHOD, + HTTP2_HEADER_PATH, + HTTP2_HEADER_SCHEME, + HTTP2_HEADER_CONTENT_LENGTH, + HTTP2_HEADER_EXPECT, + HTTP2_HEADER_STATUS + } + } = http2; + var h2ExperimentalWarned = false; + var FastBuffer = Buffer[Symbol.species]; + var kClosedResolve = Symbol("kClosedResolve"); + var channels = {}; + try { + const diagnosticsChannel = require("diagnostics_channel"); + channels.sendHeaders = diagnosticsChannel.channel("undici:client:sendHeaders"); + channels.beforeConnect = diagnosticsChannel.channel("undici:client:beforeConnect"); + channels.connectError = diagnosticsChannel.channel("undici:client:connectError"); + channels.connected = diagnosticsChannel.channel("undici:client:connected"); + } catch { + channels.sendHeaders = { hasSubscribers: false }; + channels.beforeConnect = { hasSubscribers: false }; + channels.connectError = { hasSubscribers: false }; + channels.connected = { hasSubscribers: false }; + } + var Client = class extends DispatcherBase { + /** + * + * @param {string|URL} url + * @param {import('../types/client').Client.Options} options + */ + constructor(url, { + interceptors, + maxHeaderSize, + headersTimeout, + socketTimeout, + requestTimeout, + connectTimeout, + bodyTimeout, + idleTimeout, + keepAlive, + keepAliveTimeout, + maxKeepAliveTimeout, + keepAliveMaxTimeout, + keepAliveTimeoutThreshold, + socketPath, + pipelining, + tls, + strictContentLength, + maxCachedSessions, + maxRedirections, + connect: connect2, + maxRequestsPerClient, + localAddress, + maxResponseSize, + autoSelectFamily, + autoSelectFamilyAttemptTimeout, + // h2 + allowH2, + maxConcurrentStreams + } = {}) { + super(); + if (keepAlive !== void 0) { + throw new InvalidArgumentError("unsupported keepAlive, use pipelining=0 instead"); + } + if (socketTimeout !== void 0) { + throw new InvalidArgumentError("unsupported socketTimeout, use headersTimeout & bodyTimeout instead"); + } + if (requestTimeout !== void 0) { + throw new InvalidArgumentError("unsupported requestTimeout, use headersTimeout & bodyTimeout instead"); + } + if (idleTimeout !== void 0) { + throw new InvalidArgumentError("unsupported idleTimeout, use keepAliveTimeout instead"); + } + if (maxKeepAliveTimeout !== void 0) { + throw new InvalidArgumentError("unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead"); + } + if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) { + throw new InvalidArgumentError("invalid maxHeaderSize"); + } + if (socketPath != null && typeof socketPath !== "string") { + throw new InvalidArgumentError("invalid socketPath"); + } + if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) { + throw new InvalidArgumentError("invalid connectTimeout"); + } + if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) { + throw new InvalidArgumentError("invalid keepAliveTimeout"); + } + if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) { + throw new InvalidArgumentError("invalid keepAliveMaxTimeout"); + } + if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) { + throw new InvalidArgumentError("invalid keepAliveTimeoutThreshold"); + } + if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) { + throw new InvalidArgumentError("headersTimeout must be a positive integer or zero"); + } + if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) { + throw new InvalidArgumentError("bodyTimeout must be a positive integer or zero"); + } + if (connect2 != null && typeof connect2 !== "function" && typeof connect2 !== "object") { + throw new InvalidArgumentError("connect must be a function or an object"); + } + if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { + throw new InvalidArgumentError("maxRedirections must be a positive number"); + } + if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) { + throw new InvalidArgumentError("maxRequestsPerClient must be a positive number"); + } + if (localAddress != null && (typeof localAddress !== "string" || net.isIP(localAddress) === 0)) { + throw new InvalidArgumentError("localAddress must be valid string IP address"); + } + if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) { + throw new InvalidArgumentError("maxResponseSize must be a positive number"); + } + if (autoSelectFamilyAttemptTimeout != null && (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1)) { + throw new InvalidArgumentError("autoSelectFamilyAttemptTimeout must be a positive number"); + } + if (allowH2 != null && typeof allowH2 !== "boolean") { + throw new InvalidArgumentError("allowH2 must be a valid boolean value"); + } + if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== "number" || maxConcurrentStreams < 1)) { + throw new InvalidArgumentError("maxConcurrentStreams must be a possitive integer, greater than 0"); + } + if (typeof connect2 !== "function") { + connect2 = buildConnector({ + ...tls, + maxCachedSessions, + allowH2, + socketPath, + timeout: connectTimeout, + ...util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0, + ...connect2 + }); + } + this[kInterceptors] = interceptors && interceptors.Client && Array.isArray(interceptors.Client) ? interceptors.Client : [createRedirectInterceptor({ maxRedirections })]; + this[kUrl] = util.parseOrigin(url); + this[kConnector] = connect2; + this[kSocket] = null; + this[kPipelining] = pipelining != null ? pipelining : 1; + this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize; + this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout; + this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 6e5 : keepAliveMaxTimeout; + this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold; + this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout]; + this[kServerName] = null; + this[kLocalAddress] = localAddress != null ? localAddress : null; + this[kResuming] = 0; + this[kNeedDrain] = 0; + this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ""}\r +`; + this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 3e5; + this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 3e5; + this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength; + this[kMaxRedirections] = maxRedirections; + this[kMaxRequests] = maxRequestsPerClient; + this[kClosedResolve] = null; + this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1; + this[kHTTPConnVersion] = "h1"; + this[kHTTP2Session] = null; + this[kHTTP2SessionState] = !allowH2 ? null : { + // streams: null, // Fixed queue of streams - For future support of `push` + openStreams: 0, + // Keep track of them to decide wether or not unref the session + maxConcurrentStreams: maxConcurrentStreams != null ? maxConcurrentStreams : 100 + // Max peerConcurrentStreams for a Node h2 server + }; + this[kHost] = `${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ""}`; + this[kQueue] = []; + this[kRunningIdx] = 0; + this[kPendingIdx] = 0; + } + get pipelining() { + return this[kPipelining]; + } + set pipelining(value) { + this[kPipelining] = value; + resume(this, true); + } + get [kPending]() { + return this[kQueue].length - this[kPendingIdx]; + } + get [kRunning]() { + return this[kPendingIdx] - this[kRunningIdx]; + } + get [kSize]() { + return this[kQueue].length - this[kRunningIdx]; + } + get [kConnected]() { + return !!this[kSocket] && !this[kConnecting] && !this[kSocket].destroyed; + } + get [kBusy]() { + const socket = this[kSocket]; + return socket && (socket[kReset] || socket[kWriting] || socket[kBlocking]) || this[kSize] >= (this[kPipelining] || 1) || this[kPending] > 0; + } + /* istanbul ignore: only used for test */ + [kConnect](cb) { + connect(this); + this.once("connect", cb); + } + [kDispatch](opts, handler) { + const origin = opts.origin || this[kUrl].origin; + const request3 = this[kHTTPConnVersion] === "h2" ? Request[kHTTP2BuildRequest](origin, opts, handler) : Request[kHTTP1BuildRequest](origin, opts, handler); + this[kQueue].push(request3); + if (this[kResuming]) { + } else if (util.bodyLength(request3.body) == null && util.isIterable(request3.body)) { + this[kResuming] = 1; + process.nextTick(resume, this); + } else { + resume(this, true); + } + if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) { + this[kNeedDrain] = 2; + } + return this[kNeedDrain] < 2; + } + async [kClose]() { + return new Promise((resolve) => { + if (!this[kSize]) { + resolve(null); + } else { + this[kClosedResolve] = resolve; + } + }); + } + async [kDestroy](err) { + return new Promise((resolve) => { + const requests = this[kQueue].splice(this[kPendingIdx]); + for (let i = 0; i < requests.length; i++) { + const request3 = requests[i]; + errorRequest(this, request3, err); + } + const callback = () => { + if (this[kClosedResolve]) { + this[kClosedResolve](); + this[kClosedResolve] = null; + } + resolve(); + }; + if (this[kHTTP2Session] != null) { + util.destroy(this[kHTTP2Session], err); + this[kHTTP2Session] = null; + this[kHTTP2SessionState] = null; + } + if (!this[kSocket]) { + queueMicrotask(callback); + } else { + util.destroy(this[kSocket].on("close", callback), err); + } + resume(this); + }); + } + }; + function onHttp2SessionError(err) { + assert(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID"); + this[kSocket][kError] = err; + onError(this[kClient], err); + } + function onHttp2FrameError(type, code, id) { + const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`); + if (id === 0) { + this[kSocket][kError] = err; + onError(this[kClient], err); + } + } + function onHttp2SessionEnd() { + util.destroy(this, new SocketError("other side closed")); + util.destroy(this[kSocket], new SocketError("other side closed")); + } + function onHTTP2GoAway(code) { + const client = this[kClient]; + const err = new InformationalError(`HTTP/2: "GOAWAY" frame received with code ${code}`); + client[kSocket] = null; + client[kHTTP2Session] = null; + if (client.destroyed) { + assert(this[kPending] === 0); + const requests = client[kQueue].splice(client[kRunningIdx]); + for (let i = 0; i < requests.length; i++) { + const request3 = requests[i]; + errorRequest(this, request3, err); + } + } else if (client[kRunning] > 0) { + const request3 = client[kQueue][client[kRunningIdx]]; + client[kQueue][client[kRunningIdx]++] = null; + errorRequest(client, request3, err); + } + client[kPendingIdx] = client[kRunningIdx]; + assert(client[kRunning] === 0); + client.emit( + "disconnect", + client[kUrl], + [client], + err + ); + resume(client); + } + var constants = require_constants2(); + var createRedirectInterceptor = require_redirectInterceptor(); + var EMPTY_BUF = Buffer.alloc(0); + async function lazyllhttp() { + const llhttpWasmData = process.env.JEST_WORKER_ID ? require_llhttp_wasm() : void 0; + let mod; + try { + mod = await WebAssembly.compile(Buffer.from(require_llhttp_simd_wasm(), "base64")); + } catch (e) { + mod = await WebAssembly.compile(Buffer.from(llhttpWasmData || require_llhttp_wasm(), "base64")); + } + return await WebAssembly.instantiate(mod, { + env: { + /* eslint-disable camelcase */ + wasm_on_url: (p, at, len) => { + return 0; + }, + wasm_on_status: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p); + const start = at - currentBufferPtr + currentBufferRef.byteOffset; + return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0; + }, + wasm_on_message_begin: (p) => { + assert.strictEqual(currentParser.ptr, p); + return currentParser.onMessageBegin() || 0; + }, + wasm_on_header_field: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p); + const start = at - currentBufferPtr + currentBufferRef.byteOffset; + return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0; + }, + wasm_on_header_value: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p); + const start = at - currentBufferPtr + currentBufferRef.byteOffset; + return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0; + }, + wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => { + assert.strictEqual(currentParser.ptr, p); + return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0; + }, + wasm_on_body: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p); + const start = at - currentBufferPtr + currentBufferRef.byteOffset; + return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0; + }, + wasm_on_message_complete: (p) => { + assert.strictEqual(currentParser.ptr, p); + return currentParser.onMessageComplete() || 0; + } + /* eslint-enable camelcase */ + } + }); + } + var llhttpInstance = null; + var llhttpPromise = lazyllhttp(); + llhttpPromise.catch(); + var currentParser = null; + var currentBufferRef = null; + var currentBufferSize = 0; + var currentBufferPtr = null; + var TIMEOUT_HEADERS = 1; + var TIMEOUT_BODY = 2; + var TIMEOUT_IDLE = 3; + var Parser = class { + constructor(client, socket, { exports: exports3 }) { + assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0); + this.llhttp = exports3; + this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE); + this.client = client; + this.socket = socket; + this.timeout = null; + this.timeoutValue = null; + this.timeoutType = null; + this.statusCode = null; + this.statusText = ""; + this.upgrade = false; + this.headers = []; + this.headersSize = 0; + this.headersMaxSize = client[kMaxHeadersSize]; + this.shouldKeepAlive = false; + this.paused = false; + this.resume = this.resume.bind(this); + this.bytesRead = 0; + this.keepAlive = ""; + this.contentLength = ""; + this.connection = ""; + this.maxResponseSize = client[kMaxResponseSize]; + } + setTimeout(value, type) { + this.timeoutType = type; + if (value !== this.timeoutValue) { + timers.clearTimeout(this.timeout); + if (value) { + this.timeout = timers.setTimeout(onParserTimeout, value, this); + if (this.timeout.unref) { + this.timeout.unref(); + } + } else { + this.timeout = null; + } + this.timeoutValue = value; + } else if (this.timeout) { + if (this.timeout.refresh) { + this.timeout.refresh(); + } + } + } + resume() { + if (this.socket.destroyed || !this.paused) { + return; + } + assert(this.ptr != null); + assert(currentParser == null); + this.llhttp.llhttp_resume(this.ptr); + assert(this.timeoutType === TIMEOUT_BODY); + if (this.timeout) { + if (this.timeout.refresh) { + this.timeout.refresh(); + } + } + this.paused = false; + this.execute(this.socket.read() || EMPTY_BUF); + this.readMore(); + } + readMore() { + while (!this.paused && this.ptr) { + const chunk = this.socket.read(); + if (chunk === null) { + break; + } + this.execute(chunk); + } + } + execute(data) { + assert(this.ptr != null); + assert(currentParser == null); + assert(!this.paused); + const { socket, llhttp } = this; + if (data.length > currentBufferSize) { + if (currentBufferPtr) { + llhttp.free(currentBufferPtr); + } + currentBufferSize = Math.ceil(data.length / 4096) * 4096; + currentBufferPtr = llhttp.malloc(currentBufferSize); + } + new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data); + try { + let ret; + try { + currentBufferRef = data; + currentParser = this; + ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length); + } catch (err) { + throw err; + } finally { + currentParser = null; + currentBufferRef = null; + } + const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr; + if (ret === constants.ERROR.PAUSED_UPGRADE) { + this.onUpgrade(data.slice(offset)); + } else if (ret === constants.ERROR.PAUSED) { + this.paused = true; + socket.unshift(data.slice(offset)); + } else if (ret !== constants.ERROR.OK) { + const ptr = llhttp.llhttp_get_error_reason(this.ptr); + let message = ""; + if (ptr) { + const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0); + message = "Response does not match the HTTP/1.1 protocol (" + Buffer.from(llhttp.memory.buffer, ptr, len).toString() + ")"; + } + throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset)); + } + } catch (err) { + util.destroy(socket, err); + } + } + destroy() { + assert(this.ptr != null); + assert(currentParser == null); + this.llhttp.llhttp_free(this.ptr); + this.ptr = null; + timers.clearTimeout(this.timeout); + this.timeout = null; + this.timeoutValue = null; + this.timeoutType = null; + this.paused = false; + } + onStatus(buf) { + this.statusText = buf.toString(); + } + onMessageBegin() { + const { socket, client } = this; + if (socket.destroyed) { + return -1; + } + const request3 = client[kQueue][client[kRunningIdx]]; + if (!request3) { + return -1; + } + } + onHeaderField(buf) { + const len = this.headers.length; + if ((len & 1) === 0) { + this.headers.push(buf); + } else { + this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]); + } + this.trackHeader(buf.length); + } + onHeaderValue(buf) { + let len = this.headers.length; + if ((len & 1) === 1) { + this.headers.push(buf); + len += 1; + } else { + this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]); + } + const key = this.headers[len - 2]; + if (key.length === 10 && key.toString().toLowerCase() === "keep-alive") { + this.keepAlive += buf.toString(); + } else if (key.length === 10 && key.toString().toLowerCase() === "connection") { + this.connection += buf.toString(); + } else if (key.length === 14 && key.toString().toLowerCase() === "content-length") { + this.contentLength += buf.toString(); + } + this.trackHeader(buf.length); + } + trackHeader(len) { + this.headersSize += len; + if (this.headersSize >= this.headersMaxSize) { + util.destroy(this.socket, new HeadersOverflowError()); + } + } + onUpgrade(head) { + const { upgrade, client, socket, headers, statusCode } = this; + assert(upgrade); + const request3 = client[kQueue][client[kRunningIdx]]; + assert(request3); + assert(!socket.destroyed); + assert(socket === client[kSocket]); + assert(!this.paused); + assert(request3.upgrade || request3.method === "CONNECT"); + this.statusCode = null; + this.statusText = ""; + this.shouldKeepAlive = null; + assert(this.headers.length % 2 === 0); + this.headers = []; + this.headersSize = 0; + socket.unshift(head); + socket[kParser].destroy(); + socket[kParser] = null; + socket[kClient] = null; + socket[kError] = null; + socket.removeListener("error", onSocketError).removeListener("readable", onSocketReadable).removeListener("end", onSocketEnd).removeListener("close", onSocketClose); + client[kSocket] = null; + client[kQueue][client[kRunningIdx]++] = null; + client.emit("disconnect", client[kUrl], [client], new InformationalError("upgrade")); + try { + request3.onUpgrade(statusCode, headers, socket); + } catch (err) { + util.destroy(socket, err); + } + resume(client); + } + onHeadersComplete(statusCode, upgrade, shouldKeepAlive) { + const { client, socket, headers, statusText } = this; + if (socket.destroyed) { + return -1; + } + const request3 = client[kQueue][client[kRunningIdx]]; + if (!request3) { + return -1; + } + assert(!this.upgrade); + assert(this.statusCode < 200); + if (statusCode === 100) { + util.destroy(socket, new SocketError("bad response", util.getSocketInfo(socket))); + return -1; + } + if (upgrade && !request3.upgrade) { + util.destroy(socket, new SocketError("bad upgrade", util.getSocketInfo(socket))); + return -1; + } + assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS); + this.statusCode = statusCode; + this.shouldKeepAlive = shouldKeepAlive || // Override llhttp value which does not allow keepAlive for HEAD. + request3.method === "HEAD" && !socket[kReset] && this.connection.toLowerCase() === "keep-alive"; + if (this.statusCode >= 200) { + const bodyTimeout = request3.bodyTimeout != null ? request3.bodyTimeout : client[kBodyTimeout]; + this.setTimeout(bodyTimeout, TIMEOUT_BODY); + } else if (this.timeout) { + if (this.timeout.refresh) { + this.timeout.refresh(); + } + } + if (request3.method === "CONNECT") { + assert(client[kRunning] === 1); + this.upgrade = true; + return 2; + } + if (upgrade) { + assert(client[kRunning] === 1); + this.upgrade = true; + return 2; + } + assert(this.headers.length % 2 === 0); + this.headers = []; + this.headersSize = 0; + if (this.shouldKeepAlive && client[kPipelining]) { + const keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null; + if (keepAliveTimeout != null) { + const timeout = Math.min( + keepAliveTimeout - client[kKeepAliveTimeoutThreshold], + client[kKeepAliveMaxTimeout] + ); + if (timeout <= 0) { + socket[kReset] = true; + } else { + client[kKeepAliveTimeoutValue] = timeout; + } + } else { + client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout]; + } + } else { + socket[kReset] = true; + } + let pause; + try { + pause = request3.onHeaders(statusCode, headers, this.resume, statusText) === false; + } catch (err) { + util.destroy(socket, err); + return -1; + } + if (request3.method === "HEAD") { + return 1; + } + if (statusCode < 200) { + return 1; + } + if (socket[kBlocking]) { + socket[kBlocking] = false; + resume(client); + } + return pause ? constants.ERROR.PAUSED : 0; + } + onBody(buf) { + const { client, socket, statusCode, maxResponseSize } = this; + if (socket.destroyed) { + return -1; + } + const request3 = client[kQueue][client[kRunningIdx]]; + assert(request3); + assert.strictEqual(this.timeoutType, TIMEOUT_BODY); + if (this.timeout) { + if (this.timeout.refresh) { + this.timeout.refresh(); + } + } + assert(statusCode >= 200); + if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) { + util.destroy(socket, new ResponseExceededMaxSizeError()); + return -1; + } + this.bytesRead += buf.length; + try { + if (request3.onData(buf) === false) { + return constants.ERROR.PAUSED; + } + } catch (err) { + util.destroy(socket, err); + return -1; + } + } + onMessageComplete() { + const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this; + if (socket.destroyed && (!statusCode || shouldKeepAlive)) { + return -1; + } + if (upgrade) { + return; + } + const request3 = client[kQueue][client[kRunningIdx]]; + assert(request3); + assert(statusCode >= 100); + this.statusCode = null; + this.statusText = ""; + this.bytesRead = 0; + this.contentLength = ""; + this.keepAlive = ""; + this.connection = ""; + assert(this.headers.length % 2 === 0); + this.headers = []; + this.headersSize = 0; + if (statusCode < 200) { + return; + } + if (request3.method !== "HEAD" && contentLength && bytesRead !== parseInt(contentLength, 10)) { + util.destroy(socket, new ResponseContentLengthMismatchError()); + return -1; + } + try { + request3.onComplete(headers); + } catch (err) { + errorRequest(client, request3, err); + } + client[kQueue][client[kRunningIdx]++] = null; + if (socket[kWriting]) { + assert.strictEqual(client[kRunning], 0); + util.destroy(socket, new InformationalError("reset")); + return constants.ERROR.PAUSED; + } else if (!shouldKeepAlive) { + util.destroy(socket, new InformationalError("reset")); + return constants.ERROR.PAUSED; + } else if (socket[kReset] && client[kRunning] === 0) { + util.destroy(socket, new InformationalError("reset")); + return constants.ERROR.PAUSED; + } else if (client[kPipelining] === 1) { + setImmediate(resume, client); + } else { + resume(client); + } + } + }; + function onParserTimeout(parser) { + const { socket, timeoutType, client } = parser; + if (timeoutType === TIMEOUT_HEADERS) { + if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) { + assert(!parser.paused, "cannot be paused while waiting for headers"); + util.destroy(socket, new HeadersTimeoutError()); + } + } else if (timeoutType === TIMEOUT_BODY) { + if (!parser.paused) { + util.destroy(socket, new BodyTimeoutError()); + } + } else if (timeoutType === TIMEOUT_IDLE) { + assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue]); + util.destroy(socket, new InformationalError("socket idle timeout")); + } + } + function onSocketReadable() { + const { [kParser]: parser } = this; + if (parser) { + parser.readMore(); + } + } + function onSocketError(err) { + const { [kClient]: client, [kParser]: parser } = this; + assert(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID"); + if (client[kHTTPConnVersion] !== "h2") { + if (err.code === "ECONNRESET" && parser.statusCode && !parser.shouldKeepAlive) { + parser.onMessageComplete(); + return; + } + } + this[kError] = err; + onError(this[kClient], err); + } + function onError(client, err) { + if (client[kRunning] === 0 && err.code !== "UND_ERR_INFO" && err.code !== "UND_ERR_SOCKET") { + assert(client[kPendingIdx] === client[kRunningIdx]); + const requests = client[kQueue].splice(client[kRunningIdx]); + for (let i = 0; i < requests.length; i++) { + const request3 = requests[i]; + errorRequest(client, request3, err); + } + assert(client[kSize] === 0); + } + } + function onSocketEnd() { + const { [kParser]: parser, [kClient]: client } = this; + if (client[kHTTPConnVersion] !== "h2") { + if (parser.statusCode && !parser.shouldKeepAlive) { + parser.onMessageComplete(); + return; + } + } + util.destroy(this, new SocketError("other side closed", util.getSocketInfo(this))); + } + function onSocketClose() { + const { [kClient]: client, [kParser]: parser } = this; + if (client[kHTTPConnVersion] === "h1" && parser) { + if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) { + parser.onMessageComplete(); + } + this[kParser].destroy(); + this[kParser] = null; + } + const err = this[kError] || new SocketError("closed", util.getSocketInfo(this)); + client[kSocket] = null; + if (client.destroyed) { + assert(client[kPending] === 0); + const requests = client[kQueue].splice(client[kRunningIdx]); + for (let i = 0; i < requests.length; i++) { + const request3 = requests[i]; + errorRequest(client, request3, err); + } + } else if (client[kRunning] > 0 && err.code !== "UND_ERR_INFO") { + const request3 = client[kQueue][client[kRunningIdx]]; + client[kQueue][client[kRunningIdx]++] = null; + errorRequest(client, request3, err); + } + client[kPendingIdx] = client[kRunningIdx]; + assert(client[kRunning] === 0); + client.emit("disconnect", client[kUrl], [client], err); + resume(client); + } + async function connect(client) { + assert(!client[kConnecting]); + assert(!client[kSocket]); + let { host, hostname, protocol, port } = client[kUrl]; + if (hostname[0] === "[") { + const idx = hostname.indexOf("]"); + assert(idx !== -1); + const ip = hostname.substr(1, idx - 1); + assert(net.isIP(ip)); + hostname = ip; + } + client[kConnecting] = true; + if (channels.beforeConnect.hasSubscribers) { + channels.beforeConnect.publish({ + connectParams: { + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector] + }); + } + try { + const socket = await new Promise((resolve, reject) => { + client[kConnector]({ + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, (err, socket2) => { + if (err) { + reject(err); + } else { + resolve(socket2); + } + }); + }); + if (client.destroyed) { + util.destroy(socket.on("error", () => { + }), new ClientDestroyedError()); + return; + } + client[kConnecting] = false; + assert(socket); + const isH2 = socket.alpnProtocol === "h2"; + if (isH2) { + if (!h2ExperimentalWarned) { + h2ExperimentalWarned = true; + process.emitWarning("H2 support is experimental, expect them to change at any time.", { + code: "UNDICI-H2" + }); + } + const session = http2.connect(client[kUrl], { + createConnection: () => socket, + peerMaxConcurrentStreams: client[kHTTP2SessionState].maxConcurrentStreams + }); + client[kHTTPConnVersion] = "h2"; + session[kClient] = client; + session[kSocket] = socket; + session.on("error", onHttp2SessionError); + session.on("frameError", onHttp2FrameError); + session.on("end", onHttp2SessionEnd); + session.on("goaway", onHTTP2GoAway); + session.on("close", onSocketClose); + session.unref(); + client[kHTTP2Session] = session; + socket[kHTTP2Session] = session; + } else { + if (!llhttpInstance) { + llhttpInstance = await llhttpPromise; + llhttpPromise = null; + } + socket[kNoRef] = false; + socket[kWriting] = false; + socket[kReset] = false; + socket[kBlocking] = false; + socket[kParser] = new Parser(client, socket, llhttpInstance); + } + socket[kCounter] = 0; + socket[kMaxRequests] = client[kMaxRequests]; + socket[kClient] = client; + socket[kError] = null; + socket.on("error", onSocketError).on("readable", onSocketReadable).on("end", onSocketEnd).on("close", onSocketClose); + client[kSocket] = socket; + if (channels.connected.hasSubscribers) { + channels.connected.publish({ + connectParams: { + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector], + socket + }); + } + client.emit("connect", client[kUrl], [client]); + } catch (err) { + if (client.destroyed) { + return; + } + client[kConnecting] = false; + if (channels.connectError.hasSubscribers) { + channels.connectError.publish({ + connectParams: { + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector], + error: err + }); + } + if (err.code === "ERR_TLS_CERT_ALTNAME_INVALID") { + assert(client[kRunning] === 0); + while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) { + const request3 = client[kQueue][client[kPendingIdx]++]; + errorRequest(client, request3, err); + } + } else { + onError(client, err); + } + client.emit("connectionError", client[kUrl], [client], err); + } + resume(client); + } + function emitDrain(client) { + client[kNeedDrain] = 0; + client.emit("drain", client[kUrl], [client]); + } + function resume(client, sync) { + if (client[kResuming] === 2) { + return; + } + client[kResuming] = 2; + _resume(client, sync); + client[kResuming] = 0; + if (client[kRunningIdx] > 256) { + client[kQueue].splice(0, client[kRunningIdx]); + client[kPendingIdx] -= client[kRunningIdx]; + client[kRunningIdx] = 0; + } + } + function _resume(client, sync) { + while (true) { + if (client.destroyed) { + assert(client[kPending] === 0); + return; + } + if (client[kClosedResolve] && !client[kSize]) { + client[kClosedResolve](); + client[kClosedResolve] = null; + return; + } + const socket = client[kSocket]; + if (socket && !socket.destroyed && socket.alpnProtocol !== "h2") { + if (client[kSize] === 0) { + if (!socket[kNoRef] && socket.unref) { + socket.unref(); + socket[kNoRef] = true; + } + } else if (socket[kNoRef] && socket.ref) { + socket.ref(); + socket[kNoRef] = false; + } + if (client[kSize] === 0) { + if (socket[kParser].timeoutType !== TIMEOUT_IDLE) { + socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_IDLE); + } + } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) { + if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) { + const request4 = client[kQueue][client[kRunningIdx]]; + const headersTimeout = request4.headersTimeout != null ? request4.headersTimeout : client[kHeadersTimeout]; + socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS); + } + } + } + if (client[kBusy]) { + client[kNeedDrain] = 2; + } else if (client[kNeedDrain] === 2) { + if (sync) { + client[kNeedDrain] = 1; + process.nextTick(emitDrain, client); + } else { + emitDrain(client); + } + continue; + } + if (client[kPending] === 0) { + return; + } + if (client[kRunning] >= (client[kPipelining] || 1)) { + return; + } + const request3 = client[kQueue][client[kPendingIdx]]; + if (client[kUrl].protocol === "https:" && client[kServerName] !== request3.servername) { + if (client[kRunning] > 0) { + return; + } + client[kServerName] = request3.servername; + if (socket && socket.servername !== request3.servername) { + util.destroy(socket, new InformationalError("servername changed")); + return; + } + } + if (client[kConnecting]) { + return; + } + if (!socket && !client[kHTTP2Session]) { + connect(client); + return; + } + if (socket.destroyed || socket[kWriting] || socket[kReset] || socket[kBlocking]) { + return; + } + if (client[kRunning] > 0 && !request3.idempotent) { + return; + } + if (client[kRunning] > 0 && (request3.upgrade || request3.method === "CONNECT")) { + return; + } + if (util.isStream(request3.body) && util.bodyLength(request3.body) === 0) { + request3.body.on( + "data", + /* istanbul ignore next */ + function() { + assert(false); + } + ).on("error", function(err) { + errorRequest(client, request3, err); + }).on("end", function() { + util.destroy(this); + }); + request3.body = null; + } + if (client[kRunning] > 0 && (util.isStream(request3.body) || util.isAsyncIterable(request3.body))) { + return; + } + if (!request3.aborted && write(client, request3)) { + client[kPendingIdx]++; + } else { + client[kQueue].splice(client[kPendingIdx], 1); + } + } + } + function write(client, request3) { + if (client[kHTTPConnVersion] === "h2") { + writeH2(client, client[kHTTP2Session], request3); + return; + } + const { body, method, path, host, upgrade, headers, blocking, reset } = request3; + const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH"; + if (body && typeof body.read === "function") { + body.read(0); + } + let contentLength = util.bodyLength(body); + if (contentLength === null) { + contentLength = request3.contentLength; + } + if (contentLength === 0 && !expectsPayload) { + contentLength = null; + } + if (request3.contentLength !== null && request3.contentLength !== contentLength) { + if (client[kStrictContentLength]) { + errorRequest(client, request3, new RequestContentLengthMismatchError()); + return false; + } + process.emitWarning(new RequestContentLengthMismatchError()); + } + const socket = client[kSocket]; + try { + request3.onConnect((err) => { + if (request3.aborted || request3.completed) { + return; + } + errorRequest(client, request3, err || new RequestAbortedError()); + util.destroy(socket, new InformationalError("aborted")); + }); + } catch (err) { + errorRequest(client, request3, err); + } + if (request3.aborted) { + return false; + } + if (method === "HEAD") { + socket[kReset] = true; + } + if (upgrade || method === "CONNECT") { + socket[kReset] = true; + } + if (reset != null) { + socket[kReset] = reset; + } + if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) { + socket[kReset] = true; + } + if (blocking) { + socket[kBlocking] = true; + } + let header = `${method} ${path} HTTP/1.1\r +`; + if (typeof host === "string") { + header += `host: ${host}\r +`; + } else { + header += client[kHostHeader]; + } + if (upgrade) { + header += `connection: upgrade\r +upgrade: ${upgrade}\r +`; + } else if (client[kPipelining] && !socket[kReset]) { + header += "connection: keep-alive\r\n"; + } else { + header += "connection: close\r\n"; + } + if (headers) { + header += headers; + } + if (channels.sendHeaders.hasSubscribers) { + channels.sendHeaders.publish({ request: request3, headers: header, socket }); + } + if (!body) { + if (contentLength === 0) { + socket.write(`${header}content-length: 0\r +\r +`, "latin1"); + } else { + assert(contentLength === null, "no body must not have content length"); + socket.write(`${header}\r +`, "latin1"); + } + request3.onRequestSent(); + } else if (util.isBuffer(body)) { + assert(contentLength === body.byteLength, "buffer body must have content length"); + socket.cork(); + socket.write(`${header}content-length: ${contentLength}\r +\r +`, "latin1"); + socket.write(body); + socket.uncork(); + request3.onBodySent(body); + request3.onRequestSent(); + if (!expectsPayload) { + socket[kReset] = true; + } + } else if (util.isBlobLike(body)) { + if (typeof body.stream === "function") { + writeIterable({ body: body.stream(), client, request: request3, socket, contentLength, header, expectsPayload }); + } else { + writeBlob({ body, client, request: request3, socket, contentLength, header, expectsPayload }); + } + } else if (util.isStream(body)) { + writeStream({ body, client, request: request3, socket, contentLength, header, expectsPayload }); + } else if (util.isIterable(body)) { + writeIterable({ body, client, request: request3, socket, contentLength, header, expectsPayload }); + } else { + assert(false); + } + return true; + } + function writeH2(client, session, request3) { + const { body, method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request3; + let headers; + if (typeof reqHeaders === "string") + headers = Request[kHTTP2CopyHeaders](reqHeaders.trim()); + else + headers = reqHeaders; + if (upgrade) { + errorRequest(client, request3, new Error("Upgrade not supported for H2")); + return false; + } + try { + request3.onConnect((err) => { + if (request3.aborted || request3.completed) { + return; + } + errorRequest(client, request3, err || new RequestAbortedError()); + }); + } catch (err) { + errorRequest(client, request3, err); + } + if (request3.aborted) { + return false; + } + let stream; + const h2State = client[kHTTP2SessionState]; + headers[HTTP2_HEADER_AUTHORITY] = host || client[kHost]; + headers[HTTP2_HEADER_METHOD] = method; + if (method === "CONNECT") { + session.ref(); + stream = session.request(headers, { endStream: false, signal }); + if (stream.id && !stream.pending) { + request3.onUpgrade(null, null, stream); + ++h2State.openStreams; + } else { + stream.once("ready", () => { + request3.onUpgrade(null, null, stream); + ++h2State.openStreams; + }); + } + stream.once("close", () => { + h2State.openStreams -= 1; + if (h2State.openStreams === 0) + session.unref(); + }); + return true; + } + headers[HTTP2_HEADER_PATH] = path; + headers[HTTP2_HEADER_SCHEME] = "https"; + const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH"; + if (body && typeof body.read === "function") { + body.read(0); + } + let contentLength = util.bodyLength(body); + if (contentLength == null) { + contentLength = request3.contentLength; + } + if (contentLength === 0 || !expectsPayload) { + contentLength = null; + } + if (request3.contentLength != null && request3.contentLength !== contentLength) { + if (client[kStrictContentLength]) { + errorRequest(client, request3, new RequestContentLengthMismatchError()); + return false; + } + process.emitWarning(new RequestContentLengthMismatchError()); + } + if (contentLength != null) { + assert(body, "no body must not have content length"); + headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}`; + } + session.ref(); + const shouldEndStream = method === "GET" || method === "HEAD"; + if (expectContinue) { + headers[HTTP2_HEADER_EXPECT] = "100-continue"; + stream = session.request(headers, { endStream: shouldEndStream, signal }); + stream.once("continue", writeBodyH2); + } else { + stream = session.request(headers, { + endStream: shouldEndStream, + signal + }); + writeBodyH2(); + } + ++h2State.openStreams; + stream.once("response", (headers2) => { + if (request3.onHeaders(Number(headers2[HTTP2_HEADER_STATUS]), headers2, stream.resume.bind(stream), "") === false) { + stream.pause(); + } + }); + stream.once("end", () => { + request3.onComplete([]); + }); + stream.on("data", (chunk) => { + if (request3.onData(chunk) === false) + stream.pause(); + }); + stream.once("close", () => { + h2State.openStreams -= 1; + if (h2State.openStreams === 0) + session.unref(); + }); + stream.once("error", function(err) { + if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) { + h2State.streams -= 1; + util.destroy(stream, err); + } + }); + stream.once("frameError", (type, code) => { + const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`); + errorRequest(client, request3, err); + if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) { + h2State.streams -= 1; + util.destroy(stream, err); + } + }); + return true; + function writeBodyH2() { + if (!body) { + request3.onRequestSent(); + } else if (util.isBuffer(body)) { + assert(contentLength === body.byteLength, "buffer body must have content length"); + stream.cork(); + stream.write(body); + stream.uncork(); + stream.end(); + request3.onBodySent(body); + request3.onRequestSent(); + } else if (util.isBlobLike(body)) { + if (typeof body.stream === "function") { + writeIterable({ + client, + request: request3, + contentLength, + h2stream: stream, + expectsPayload, + body: body.stream(), + socket: client[kSocket], + header: "" + }); + } else { + writeBlob({ + body, + client, + request: request3, + contentLength, + expectsPayload, + h2stream: stream, + header: "", + socket: client[kSocket] + }); + } + } else if (util.isStream(body)) { + writeStream({ + body, + client, + request: request3, + contentLength, + expectsPayload, + socket: client[kSocket], + h2stream: stream, + header: "" + }); + } else if (util.isIterable(body)) { + writeIterable({ + body, + client, + request: request3, + contentLength, + expectsPayload, + header: "", + h2stream: stream, + socket: client[kSocket] + }); + } else { + assert(false); + } + } + } + function writeStream({ h2stream, body, client, request: request3, socket, contentLength, header, expectsPayload }) { + assert(contentLength !== 0 || client[kRunning] === 0, "stream body cannot be pipelined"); + if (client[kHTTPConnVersion] === "h2") { + let onPipeData = function(chunk) { + request3.onBodySent(chunk); + }; + const pipe = pipeline( + body, + h2stream, + (err) => { + if (err) { + util.destroy(body, err); + util.destroy(h2stream, err); + } else { + request3.onRequestSent(); + } + } + ); + pipe.on("data", onPipeData); + pipe.once("end", () => { + pipe.removeListener("data", onPipeData); + util.destroy(pipe); + }); + return; + } + let finished = false; + const writer = new AsyncWriter({ socket, request: request3, contentLength, client, expectsPayload, header }); + const onData = function(chunk) { + if (finished) { + return; + } + try { + if (!writer.write(chunk) && this.pause) { + this.pause(); + } + } catch (err) { + util.destroy(this, err); + } + }; + const onDrain = function() { + if (finished) { + return; + } + if (body.resume) { + body.resume(); + } + }; + const onAbort = function() { + onFinished(new RequestAbortedError()); + }; + const onFinished = function(err) { + if (finished) { + return; + } + finished = true; + assert(socket.destroyed || socket[kWriting] && client[kRunning] <= 1); + socket.off("drain", onDrain).off("error", onFinished); + body.removeListener("data", onData).removeListener("end", onFinished).removeListener("error", onFinished).removeListener("close", onAbort); + if (!err) { + try { + writer.end(); + } catch (er) { + err = er; + } + } + writer.destroy(err); + if (err && (err.code !== "UND_ERR_INFO" || err.message !== "reset")) { + util.destroy(body, err); + } else { + util.destroy(body); + } + }; + body.on("data", onData).on("end", onFinished).on("error", onFinished).on("close", onAbort); + if (body.resume) { + body.resume(); + } + socket.on("drain", onDrain).on("error", onFinished); + } + async function writeBlob({ h2stream, body, client, request: request3, socket, contentLength, header, expectsPayload }) { + assert(contentLength === body.size, "blob body must have content length"); + const isH2 = client[kHTTPConnVersion] === "h2"; + try { + if (contentLength != null && contentLength !== body.size) { + throw new RequestContentLengthMismatchError(); + } + const buffer = Buffer.from(await body.arrayBuffer()); + if (isH2) { + h2stream.cork(); + h2stream.write(buffer); + h2stream.uncork(); + } else { + socket.cork(); + socket.write(`${header}content-length: ${contentLength}\r +\r +`, "latin1"); + socket.write(buffer); + socket.uncork(); + } + request3.onBodySent(buffer); + request3.onRequestSent(); + if (!expectsPayload) { + socket[kReset] = true; + } + resume(client); + } catch (err) { + util.destroy(isH2 ? h2stream : socket, err); + } + } + async function writeIterable({ h2stream, body, client, request: request3, socket, contentLength, header, expectsPayload }) { + assert(contentLength !== 0 || client[kRunning] === 0, "iterator body cannot be pipelined"); + let callback = null; + function onDrain() { + if (callback) { + const cb = callback; + callback = null; + cb(); + } + } + const waitForDrain = () => new Promise((resolve, reject) => { + assert(callback === null); + if (socket[kError]) { + reject(socket[kError]); + } else { + callback = resolve; + } + }); + if (client[kHTTPConnVersion] === "h2") { + h2stream.on("close", onDrain).on("drain", onDrain); + try { + for await (const chunk of body) { + if (socket[kError]) { + throw socket[kError]; + } + const res = h2stream.write(chunk); + request3.onBodySent(chunk); + if (!res) { + await waitForDrain(); + } + } + } catch (err) { + h2stream.destroy(err); + } finally { + request3.onRequestSent(); + h2stream.end(); + h2stream.off("close", onDrain).off("drain", onDrain); + } + return; + } + socket.on("close", onDrain).on("drain", onDrain); + const writer = new AsyncWriter({ socket, request: request3, contentLength, client, expectsPayload, header }); + try { + for await (const chunk of body) { + if (socket[kError]) { + throw socket[kError]; + } + if (!writer.write(chunk)) { + await waitForDrain(); + } + } + writer.end(); + } catch (err) { + writer.destroy(err); + } finally { + socket.off("close", onDrain).off("drain", onDrain); + } + } + var AsyncWriter = class { + constructor({ socket, request: request3, contentLength, client, expectsPayload, header }) { + this.socket = socket; + this.request = request3; + this.contentLength = contentLength; + this.client = client; + this.bytesWritten = 0; + this.expectsPayload = expectsPayload; + this.header = header; + socket[kWriting] = true; + } + write(chunk) { + const { socket, request: request3, contentLength, client, bytesWritten, expectsPayload, header } = this; + if (socket[kError]) { + throw socket[kError]; + } + if (socket.destroyed) { + return false; + } + const len = Buffer.byteLength(chunk); + if (!len) { + return true; + } + if (contentLength !== null && bytesWritten + len > contentLength) { + if (client[kStrictContentLength]) { + throw new RequestContentLengthMismatchError(); + } + process.emitWarning(new RequestContentLengthMismatchError()); + } + socket.cork(); + if (bytesWritten === 0) { + if (!expectsPayload) { + socket[kReset] = true; + } + if (contentLength === null) { + socket.write(`${header}transfer-encoding: chunked\r +`, "latin1"); + } else { + socket.write(`${header}content-length: ${contentLength}\r +\r +`, "latin1"); + } + } + if (contentLength === null) { + socket.write(`\r +${len.toString(16)}\r +`, "latin1"); + } + this.bytesWritten += len; + const ret = socket.write(chunk); + socket.uncork(); + request3.onBodySent(chunk); + if (!ret) { + if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { + if (socket[kParser].timeout.refresh) { + socket[kParser].timeout.refresh(); + } + } + } + return ret; + } + end() { + const { socket, contentLength, client, bytesWritten, expectsPayload, header, request: request3 } = this; + request3.onRequestSent(); + socket[kWriting] = false; + if (socket[kError]) { + throw socket[kError]; + } + if (socket.destroyed) { + return; + } + if (bytesWritten === 0) { + if (expectsPayload) { + socket.write(`${header}content-length: 0\r +\r +`, "latin1"); + } else { + socket.write(`${header}\r +`, "latin1"); + } + } else if (contentLength === null) { + socket.write("\r\n0\r\n\r\n", "latin1"); + } + if (contentLength !== null && bytesWritten !== contentLength) { + if (client[kStrictContentLength]) { + throw new RequestContentLengthMismatchError(); + } else { + process.emitWarning(new RequestContentLengthMismatchError()); + } + } + if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { + if (socket[kParser].timeout.refresh) { + socket[kParser].timeout.refresh(); + } + } + resume(client); + } + destroy(err) { + const { socket, client } = this; + socket[kWriting] = false; + if (err) { + assert(client[kRunning] <= 1, "pipeline should only contain this request"); + util.destroy(socket, err); + } + } + }; + function errorRequest(client, request3, err) { + try { + request3.onError(err); + assert(request3.aborted); + } catch (err2) { + client.emit("error", err2); + } + } + module2.exports = Client; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/node/fixed-queue.js +var require_fixed_queue = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/node/fixed-queue.js"(exports2, module2) { + "use strict"; + var kSize = 2048; + var kMask = kSize - 1; + var FixedCircularBuffer = class { + constructor() { + this.bottom = 0; + this.top = 0; + this.list = new Array(kSize); + this.next = null; + } + isEmpty() { + return this.top === this.bottom; + } + isFull() { + return (this.top + 1 & kMask) === this.bottom; + } + push(data) { + this.list[this.top] = data; + this.top = this.top + 1 & kMask; + } + shift() { + const nextItem = this.list[this.bottom]; + if (nextItem === void 0) + return null; + this.list[this.bottom] = void 0; + this.bottom = this.bottom + 1 & kMask; + return nextItem; + } + }; + module2.exports = class FixedQueue { + constructor() { + this.head = this.tail = new FixedCircularBuffer(); + } + isEmpty() { + return this.head.isEmpty(); + } + push(data) { + if (this.head.isFull()) { + this.head = this.head.next = new FixedCircularBuffer(); + } + this.head.push(data); + } + shift() { + const tail = this.tail; + const next = tail.shift(); + if (tail.isEmpty() && tail.next !== null) { + this.tail = tail.next; + } + return next; + } + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/pool-stats.js +var require_pool_stats = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/pool-stats.js"(exports2, module2) { + var { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require_symbols(); + var kPool = Symbol("pool"); + var PoolStats = class { + constructor(pool) { + this[kPool] = pool; + } + get connected() { + return this[kPool][kConnected]; + } + get free() { + return this[kPool][kFree]; + } + get pending() { + return this[kPool][kPending]; + } + get queued() { + return this[kPool][kQueued]; + } + get running() { + return this[kPool][kRunning]; + } + get size() { + return this[kPool][kSize]; + } + }; + module2.exports = PoolStats; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/pool-base.js +var require_pool_base = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/pool-base.js"(exports2, module2) { + "use strict"; + var DispatcherBase = require_dispatcher_base(); + var FixedQueue = require_fixed_queue(); + var { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require_symbols(); + var PoolStats = require_pool_stats(); + var kClients = Symbol("clients"); + var kNeedDrain = Symbol("needDrain"); + var kQueue = Symbol("queue"); + var kClosedResolve = Symbol("closed resolve"); + var kOnDrain = Symbol("onDrain"); + var kOnConnect = Symbol("onConnect"); + var kOnDisconnect = Symbol("onDisconnect"); + var kOnConnectionError = Symbol("onConnectionError"); + var kGetDispatcher = Symbol("get dispatcher"); + var kAddClient = Symbol("add client"); + var kRemoveClient = Symbol("remove client"); + var kStats = Symbol("stats"); + var PoolBase = class extends DispatcherBase { + constructor() { + super(); + this[kQueue] = new FixedQueue(); + this[kClients] = []; + this[kQueued] = 0; + const pool = this; + this[kOnDrain] = function onDrain(origin, targets) { + const queue = pool[kQueue]; + let needDrain = false; + while (!needDrain) { + const item = queue.shift(); + if (!item) { + break; + } + pool[kQueued]--; + needDrain = !this.dispatch(item.opts, item.handler); + } + this[kNeedDrain] = needDrain; + if (!this[kNeedDrain] && pool[kNeedDrain]) { + pool[kNeedDrain] = false; + pool.emit("drain", origin, [pool, ...targets]); + } + if (pool[kClosedResolve] && queue.isEmpty()) { + Promise.all(pool[kClients].map((c) => c.close())).then(pool[kClosedResolve]); + } + }; + this[kOnConnect] = (origin, targets) => { + pool.emit("connect", origin, [pool, ...targets]); + }; + this[kOnDisconnect] = (origin, targets, err) => { + pool.emit("disconnect", origin, [pool, ...targets], err); + }; + this[kOnConnectionError] = (origin, targets, err) => { + pool.emit("connectionError", origin, [pool, ...targets], err); + }; + this[kStats] = new PoolStats(this); + } + get [kBusy]() { + return this[kNeedDrain]; + } + get [kConnected]() { + return this[kClients].filter((client) => client[kConnected]).length; + } + get [kFree]() { + return this[kClients].filter((client) => client[kConnected] && !client[kNeedDrain]).length; + } + get [kPending]() { + let ret = this[kQueued]; + for (const { [kPending]: pending } of this[kClients]) { + ret += pending; + } + return ret; + } + get [kRunning]() { + let ret = 0; + for (const { [kRunning]: running } of this[kClients]) { + ret += running; + } + return ret; + } + get [kSize]() { + let ret = this[kQueued]; + for (const { [kSize]: size } of this[kClients]) { + ret += size; + } + return ret; + } + get stats() { + return this[kStats]; + } + async [kClose]() { + if (this[kQueue].isEmpty()) { + return Promise.all(this[kClients].map((c) => c.close())); + } else { + return new Promise((resolve) => { + this[kClosedResolve] = resolve; + }); + } + } + async [kDestroy](err) { + while (true) { + const item = this[kQueue].shift(); + if (!item) { + break; + } + item.handler.onError(err); + } + return Promise.all(this[kClients].map((c) => c.destroy(err))); + } + [kDispatch](opts, handler) { + const dispatcher = this[kGetDispatcher](); + if (!dispatcher) { + this[kNeedDrain] = true; + this[kQueue].push({ opts, handler }); + this[kQueued]++; + } else if (!dispatcher.dispatch(opts, handler)) { + dispatcher[kNeedDrain] = true; + this[kNeedDrain] = !this[kGetDispatcher](); + } + return !this[kNeedDrain]; + } + [kAddClient](client) { + client.on("drain", this[kOnDrain]).on("connect", this[kOnConnect]).on("disconnect", this[kOnDisconnect]).on("connectionError", this[kOnConnectionError]); + this[kClients].push(client); + if (this[kNeedDrain]) { + process.nextTick(() => { + if (this[kNeedDrain]) { + this[kOnDrain](client[kUrl], [this, client]); + } + }); + } + return this; + } + [kRemoveClient](client) { + client.close(() => { + const idx = this[kClients].indexOf(client); + if (idx !== -1) { + this[kClients].splice(idx, 1); + } + }); + this[kNeedDrain] = this[kClients].some((dispatcher) => !dispatcher[kNeedDrain] && dispatcher.closed !== true && dispatcher.destroyed !== true); + } + }; + module2.exports = { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kRemoveClient, + kGetDispatcher + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/pool.js +var require_pool = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/pool.js"(exports2, module2) { + "use strict"; + var { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kGetDispatcher + } = require_pool_base(); + var Client = require_client(); + var { + InvalidArgumentError + } = require_errors(); + var util = require_util(); + var { kUrl, kInterceptors } = require_symbols(); + var buildConnector = require_connect(); + var kOptions = Symbol("options"); + var kConnections = Symbol("connections"); + var kFactory = Symbol("factory"); + function defaultFactory(origin, opts) { + return new Client(origin, opts); + } + var Pool = class extends PoolBase { + constructor(origin, { + connections, + factory = defaultFactory, + connect, + connectTimeout, + tls, + maxCachedSessions, + socketPath, + autoSelectFamily, + autoSelectFamilyAttemptTimeout, + allowH2, + ...options + } = {}) { + super(); + if (connections != null && (!Number.isFinite(connections) || connections < 0)) { + throw new InvalidArgumentError("invalid connections"); + } + if (typeof factory !== "function") { + throw new InvalidArgumentError("factory must be a function."); + } + if (connect != null && typeof connect !== "function" && typeof connect !== "object") { + throw new InvalidArgumentError("connect must be a function or an object"); + } + if (typeof connect !== "function") { + connect = buildConnector({ + ...tls, + maxCachedSessions, + allowH2, + socketPath, + timeout: connectTimeout == null ? 1e4 : connectTimeout, + ...util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0, + ...connect + }); + } + this[kInterceptors] = options.interceptors && options.interceptors.Pool && Array.isArray(options.interceptors.Pool) ? options.interceptors.Pool : []; + this[kConnections] = connections || null; + this[kUrl] = util.parseOrigin(origin); + this[kOptions] = { ...util.deepClone(options), connect, allowH2 }; + this[kOptions].interceptors = options.interceptors ? { ...options.interceptors } : void 0; + this[kFactory] = factory; + } + [kGetDispatcher]() { + let dispatcher = this[kClients].find((dispatcher2) => !dispatcher2[kNeedDrain]); + if (dispatcher) { + return dispatcher; + } + if (!this[kConnections] || this[kClients].length < this[kConnections]) { + dispatcher = this[kFactory](this[kUrl], this[kOptions]); + this[kAddClient](dispatcher); + } + return dispatcher; + } + }; + module2.exports = Pool; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/balanced-pool.js +var require_balanced_pool = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/balanced-pool.js"(exports2, module2) { + "use strict"; + var { + BalancedPoolMissingUpstreamError, + InvalidArgumentError + } = require_errors(); + var { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kRemoveClient, + kGetDispatcher + } = require_pool_base(); + var Pool = require_pool(); + var { kUrl, kInterceptors } = require_symbols(); + var { parseOrigin } = require_util(); + var kFactory = Symbol("factory"); + var kOptions = Symbol("options"); + var kGreatestCommonDivisor = Symbol("kGreatestCommonDivisor"); + var kCurrentWeight = Symbol("kCurrentWeight"); + var kIndex = Symbol("kIndex"); + var kWeight = Symbol("kWeight"); + var kMaxWeightPerServer = Symbol("kMaxWeightPerServer"); + var kErrorPenalty = Symbol("kErrorPenalty"); + function getGreatestCommonDivisor(a, b) { + if (b === 0) + return a; + return getGreatestCommonDivisor(b, a % b); + } + function defaultFactory(origin, opts) { + return new Pool(origin, opts); + } + var BalancedPool = class extends PoolBase { + constructor(upstreams = [], { factory = defaultFactory, ...opts } = {}) { + super(); + this[kOptions] = opts; + this[kIndex] = -1; + this[kCurrentWeight] = 0; + this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100; + this[kErrorPenalty] = this[kOptions].errorPenalty || 15; + if (!Array.isArray(upstreams)) { + upstreams = [upstreams]; + } + if (typeof factory !== "function") { + throw new InvalidArgumentError("factory must be a function."); + } + this[kInterceptors] = opts.interceptors && opts.interceptors.BalancedPool && Array.isArray(opts.interceptors.BalancedPool) ? opts.interceptors.BalancedPool : []; + this[kFactory] = factory; + for (const upstream of upstreams) { + this.addUpstream(upstream); + } + this._updateBalancedPoolStats(); + } + addUpstream(upstream) { + const upstreamOrigin = parseOrigin(upstream).origin; + if (this[kClients].find((pool2) => pool2[kUrl].origin === upstreamOrigin && pool2.closed !== true && pool2.destroyed !== true)) { + return this; + } + const pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions])); + this[kAddClient](pool); + pool.on("connect", () => { + pool[kWeight] = Math.min(this[kMaxWeightPerServer], pool[kWeight] + this[kErrorPenalty]); + }); + pool.on("connectionError", () => { + pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]); + this._updateBalancedPoolStats(); + }); + pool.on("disconnect", (...args) => { + const err = args[2]; + if (err && err.code === "UND_ERR_SOCKET") { + pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]); + this._updateBalancedPoolStats(); + } + }); + for (const client of this[kClients]) { + client[kWeight] = this[kMaxWeightPerServer]; + } + this._updateBalancedPoolStats(); + return this; + } + _updateBalancedPoolStats() { + this[kGreatestCommonDivisor] = this[kClients].map((p) => p[kWeight]).reduce(getGreatestCommonDivisor, 0); + } + removeUpstream(upstream) { + const upstreamOrigin = parseOrigin(upstream).origin; + const pool = this[kClients].find((pool2) => pool2[kUrl].origin === upstreamOrigin && pool2.closed !== true && pool2.destroyed !== true); + if (pool) { + this[kRemoveClient](pool); + } + return this; + } + get upstreams() { + return this[kClients].filter((dispatcher) => dispatcher.closed !== true && dispatcher.destroyed !== true).map((p) => p[kUrl].origin); + } + [kGetDispatcher]() { + if (this[kClients].length === 0) { + throw new BalancedPoolMissingUpstreamError(); + } + const dispatcher = this[kClients].find((dispatcher2) => !dispatcher2[kNeedDrain] && dispatcher2.closed !== true && dispatcher2.destroyed !== true); + if (!dispatcher) { + return; + } + const allClientsBusy = this[kClients].map((pool) => pool[kNeedDrain]).reduce((a, b) => a && b, true); + if (allClientsBusy) { + return; + } + let counter = 0; + let maxWeightIndex = this[kClients].findIndex((pool) => !pool[kNeedDrain]); + while (counter++ < this[kClients].length) { + this[kIndex] = (this[kIndex] + 1) % this[kClients].length; + const pool = this[kClients][this[kIndex]]; + if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) { + maxWeightIndex = this[kIndex]; + } + if (this[kIndex] === 0) { + this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor]; + if (this[kCurrentWeight] <= 0) { + this[kCurrentWeight] = this[kMaxWeightPerServer]; + } + } + if (pool[kWeight] >= this[kCurrentWeight] && !pool[kNeedDrain]) { + return pool; + } + } + this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight]; + this[kIndex] = maxWeightIndex; + return this[kClients][maxWeightIndex]; + } + }; + module2.exports = BalancedPool; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/compat/dispatcher-weakref.js +var require_dispatcher_weakref = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/compat/dispatcher-weakref.js"(exports2, module2) { + "use strict"; + var { kConnected, kSize } = require_symbols(); + var CompatWeakRef = class { + constructor(value) { + this.value = value; + } + deref() { + return this.value[kConnected] === 0 && this.value[kSize] === 0 ? void 0 : this.value; + } + }; + var CompatFinalizer = class { + constructor(finalizer) { + this.finalizer = finalizer; + } + register(dispatcher, key) { + if (dispatcher.on) { + dispatcher.on("disconnect", () => { + if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) { + this.finalizer(key); + } + }); + } + } + }; + module2.exports = function() { + if (process.env.NODE_V8_COVERAGE) { + return { + WeakRef: CompatWeakRef, + FinalizationRegistry: CompatFinalizer + }; + } + return { + WeakRef: global.WeakRef || CompatWeakRef, + FinalizationRegistry: global.FinalizationRegistry || CompatFinalizer + }; + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/agent.js +var require_agent = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/agent.js"(exports2, module2) { + "use strict"; + var { InvalidArgumentError } = require_errors(); + var { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = require_symbols(); + var DispatcherBase = require_dispatcher_base(); + var Pool = require_pool(); + var Client = require_client(); + var util = require_util(); + var createRedirectInterceptor = require_redirectInterceptor(); + var { WeakRef: WeakRef2, FinalizationRegistry } = require_dispatcher_weakref()(); + var kOnConnect = Symbol("onConnect"); + var kOnDisconnect = Symbol("onDisconnect"); + var kOnConnectionError = Symbol("onConnectionError"); + var kMaxRedirections = Symbol("maxRedirections"); + var kOnDrain = Symbol("onDrain"); + var kFactory = Symbol("factory"); + var kFinalizer = Symbol("finalizer"); + var kOptions = Symbol("options"); + function defaultFactory(origin, opts) { + return opts && opts.connections === 1 ? new Client(origin, opts) : new Pool(origin, opts); + } + var Agent = class extends DispatcherBase { + constructor({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) { + super(); + if (typeof factory !== "function") { + throw new InvalidArgumentError("factory must be a function."); + } + if (connect != null && typeof connect !== "function" && typeof connect !== "object") { + throw new InvalidArgumentError("connect must be a function or an object"); + } + if (!Number.isInteger(maxRedirections) || maxRedirections < 0) { + throw new InvalidArgumentError("maxRedirections must be a positive number"); + } + if (connect && typeof connect !== "function") { + connect = { ...connect }; + } + this[kInterceptors] = options.interceptors && options.interceptors.Agent && Array.isArray(options.interceptors.Agent) ? options.interceptors.Agent : [createRedirectInterceptor({ maxRedirections })]; + this[kOptions] = { ...util.deepClone(options), connect }; + this[kOptions].interceptors = options.interceptors ? { ...options.interceptors } : void 0; + this[kMaxRedirections] = maxRedirections; + this[kFactory] = factory; + this[kClients] = /* @__PURE__ */ new Map(); + this[kFinalizer] = new FinalizationRegistry( + /* istanbul ignore next: gc is undeterministic */ + (key) => { + const ref = this[kClients].get(key); + if (ref !== void 0 && ref.deref() === void 0) { + this[kClients].delete(key); + } + } + ); + const agent = this; + this[kOnDrain] = (origin, targets) => { + agent.emit("drain", origin, [agent, ...targets]); + }; + this[kOnConnect] = (origin, targets) => { + agent.emit("connect", origin, [agent, ...targets]); + }; + this[kOnDisconnect] = (origin, targets, err) => { + agent.emit("disconnect", origin, [agent, ...targets], err); + }; + this[kOnConnectionError] = (origin, targets, err) => { + agent.emit("connectionError", origin, [agent, ...targets], err); + }; + } + get [kRunning]() { + let ret = 0; + for (const ref of this[kClients].values()) { + const client = ref.deref(); + if (client) { + ret += client[kRunning]; + } + } + return ret; + } + [kDispatch](opts, handler) { + let key; + if (opts.origin && (typeof opts.origin === "string" || opts.origin instanceof URL)) { + key = String(opts.origin); + } else { + throw new InvalidArgumentError("opts.origin must be a non-empty string or URL."); + } + const ref = this[kClients].get(key); + let dispatcher = ref ? ref.deref() : null; + if (!dispatcher) { + dispatcher = this[kFactory](opts.origin, this[kOptions]).on("drain", this[kOnDrain]).on("connect", this[kOnConnect]).on("disconnect", this[kOnDisconnect]).on("connectionError", this[kOnConnectionError]); + this[kClients].set(key, new WeakRef2(dispatcher)); + this[kFinalizer].register(dispatcher, key); + } + return dispatcher.dispatch(opts, handler); + } + async [kClose]() { + const closePromises = []; + for (const ref of this[kClients].values()) { + const client = ref.deref(); + if (client) { + closePromises.push(client.close()); + } + } + await Promise.all(closePromises); + } + async [kDestroy](err) { + const destroyPromises = []; + for (const ref of this[kClients].values()) { + const client = ref.deref(); + if (client) { + destroyPromises.push(client.destroy(err)); + } + } + await Promise.all(destroyPromises); + } + }; + module2.exports = Agent; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/readable.js +var require_readable = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/readable.js"(exports2, module2) { + "use strict"; + var assert = require("assert"); + var { Readable } = require("stream"); + var { RequestAbortedError, NotSupportedError, InvalidArgumentError } = require_errors(); + var util = require_util(); + var { ReadableStreamFrom, toUSVString } = require_util(); + var Blob2; + var kConsume = Symbol("kConsume"); + var kReading = Symbol("kReading"); + var kBody = Symbol("kBody"); + var kAbort = Symbol("abort"); + var kContentType = Symbol("kContentType"); + module2.exports = class BodyReadable extends Readable { + constructor({ + resume, + abort, + contentType = "", + highWaterMark = 64 * 1024 + // Same as nodejs fs streams. + }) { + super({ + autoDestroy: true, + read: resume, + highWaterMark + }); + this._readableState.dataEmitted = false; + this[kAbort] = abort; + this[kConsume] = null; + this[kBody] = null; + this[kContentType] = contentType; + this[kReading] = false; + } + destroy(err) { + if (this.destroyed) { + return this; + } + if (!err && !this._readableState.endEmitted) { + err = new RequestAbortedError(); + } + if (err) { + this[kAbort](); + } + return super.destroy(err); + } + emit(ev, ...args) { + if (ev === "data") { + this._readableState.dataEmitted = true; + } else if (ev === "error") { + this._readableState.errorEmitted = true; + } + return super.emit(ev, ...args); + } + on(ev, ...args) { + if (ev === "data" || ev === "readable") { + this[kReading] = true; + } + return super.on(ev, ...args); + } + addListener(ev, ...args) { + return this.on(ev, ...args); + } + off(ev, ...args) { + const ret = super.off(ev, ...args); + if (ev === "data" || ev === "readable") { + this[kReading] = this.listenerCount("data") > 0 || this.listenerCount("readable") > 0; + } + return ret; + } + removeListener(ev, ...args) { + return this.off(ev, ...args); + } + push(chunk) { + if (this[kConsume] && chunk !== null && this.readableLength === 0) { + consumePush(this[kConsume], chunk); + return this[kReading] ? super.push(chunk) : true; + } + return super.push(chunk); + } + // https://fetch.spec.whatwg.org/#dom-body-text + async text() { + return consume(this, "text"); + } + // https://fetch.spec.whatwg.org/#dom-body-json + async json() { + return consume(this, "json"); + } + // https://fetch.spec.whatwg.org/#dom-body-blob + async blob() { + return consume(this, "blob"); + } + // https://fetch.spec.whatwg.org/#dom-body-arraybuffer + async arrayBuffer() { + return consume(this, "arrayBuffer"); + } + // https://fetch.spec.whatwg.org/#dom-body-formdata + async formData() { + throw new NotSupportedError(); + } + // https://fetch.spec.whatwg.org/#dom-body-bodyused + get bodyUsed() { + return util.isDisturbed(this); + } + // https://fetch.spec.whatwg.org/#dom-body-body + get body() { + if (!this[kBody]) { + this[kBody] = ReadableStreamFrom(this); + if (this[kConsume]) { + this[kBody].getReader(); + assert(this[kBody].locked); + } + } + return this[kBody]; + } + async dump(opts) { + let limit = opts && Number.isFinite(opts.limit) ? opts.limit : 262144; + const signal = opts && opts.signal; + const abortFn = () => { + this.destroy(); + }; + let signalListenerCleanup; + if (signal) { + if (typeof signal !== "object" || !("aborted" in signal)) { + throw new InvalidArgumentError("signal must be an AbortSignal"); + } + util.throwIfAborted(signal); + signalListenerCleanup = util.addAbortListener(signal, abortFn); + } + try { + for await (const chunk of this) { + util.throwIfAborted(signal); + limit -= Buffer.byteLength(chunk); + if (limit < 0) { + return; + } + } + } catch { + util.throwIfAborted(signal); + } finally { + if (typeof signalListenerCleanup === "function") { + signalListenerCleanup(); + } else if (signalListenerCleanup) { + signalListenerCleanup[Symbol.dispose](); + } + } + } + }; + function isLocked(self) { + return self[kBody] && self[kBody].locked === true || self[kConsume]; + } + function isUnusable(self) { + return util.isDisturbed(self) || isLocked(self); + } + async function consume(stream, type) { + if (isUnusable(stream)) { + throw new TypeError("unusable"); + } + assert(!stream[kConsume]); + return new Promise((resolve, reject) => { + stream[kConsume] = { + type, + stream, + resolve, + reject, + length: 0, + body: [] + }; + stream.on("error", function(err) { + consumeFinish(this[kConsume], err); + }).on("close", function() { + if (this[kConsume].body !== null) { + consumeFinish(this[kConsume], new RequestAbortedError()); + } + }); + process.nextTick(consumeStart, stream[kConsume]); + }); + } + function consumeStart(consume2) { + if (consume2.body === null) { + return; + } + const { _readableState: state } = consume2.stream; + for (const chunk of state.buffer) { + consumePush(consume2, chunk); + } + if (state.endEmitted) { + consumeEnd(this[kConsume]); + } else { + consume2.stream.on("end", function() { + consumeEnd(this[kConsume]); + }); + } + consume2.stream.resume(); + while (consume2.stream.read() != null) { + } + } + function consumeEnd(consume2) { + const { type, body, resolve, stream, length } = consume2; + try { + if (type === "text") { + resolve(toUSVString(Buffer.concat(body))); + } else if (type === "json") { + resolve(JSON.parse(Buffer.concat(body))); + } else if (type === "arrayBuffer") { + const dst = new Uint8Array(length); + let pos = 0; + for (const buf of body) { + dst.set(buf, pos); + pos += buf.byteLength; + } + resolve(dst.buffer); + } else if (type === "blob") { + if (!Blob2) { + Blob2 = require("buffer").Blob; + } + resolve(new Blob2(body, { type: stream[kContentType] })); + } + consumeFinish(consume2); + } catch (err) { + stream.destroy(err); + } + } + function consumePush(consume2, chunk) { + consume2.length += chunk.length; + consume2.body.push(chunk); + } + function consumeFinish(consume2, err) { + if (consume2.body === null) { + return; + } + if (err) { + consume2.reject(err); + } else { + consume2.resolve(); + } + consume2.type = null; + consume2.stream = null; + consume2.resolve = null; + consume2.reject = null; + consume2.length = 0; + consume2.body = null; + } + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/util.js +var require_util3 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/util.js"(exports2, module2) { + var assert = require("assert"); + var { + ResponseStatusCodeError + } = require_errors(); + var { toUSVString } = require_util(); + async function getResolveErrorBodyCallback({ callback, body, contentType, statusCode, statusMessage, headers }) { + assert(body); + let chunks = []; + let limit = 0; + for await (const chunk of body) { + chunks.push(chunk); + limit += chunk.length; + if (limit > 128 * 1024) { + chunks = null; + break; + } + } + if (statusCode === 204 || !contentType || !chunks) { + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ""}`, statusCode, headers)); + return; + } + try { + if (contentType.startsWith("application/json")) { + const payload = JSON.parse(toUSVString(Buffer.concat(chunks))); + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ""}`, statusCode, headers, payload)); + return; + } + if (contentType.startsWith("text/")) { + const payload = toUSVString(Buffer.concat(chunks)); + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ""}`, statusCode, headers, payload)); + return; + } + } catch (err) { + } + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ""}`, statusCode, headers)); + } + module2.exports = { getResolveErrorBodyCallback }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/abort-signal.js +var require_abort_signal = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/abort-signal.js"(exports2, module2) { + var { addAbortListener } = require_util(); + var { RequestAbortedError } = require_errors(); + var kListener = Symbol("kListener"); + var kSignal = Symbol("kSignal"); + function abort(self) { + if (self.abort) { + self.abort(); + } else { + self.onError(new RequestAbortedError()); + } + } + function addSignal(self, signal) { + self[kSignal] = null; + self[kListener] = null; + if (!signal) { + return; + } + if (signal.aborted) { + abort(self); + return; + } + self[kSignal] = signal; + self[kListener] = () => { + abort(self); + }; + addAbortListener(self[kSignal], self[kListener]); + } + function removeSignal(self) { + if (!self[kSignal]) { + return; + } + if ("removeEventListener" in self[kSignal]) { + self[kSignal].removeEventListener("abort", self[kListener]); + } else { + self[kSignal].removeListener("abort", self[kListener]); + } + self[kSignal] = null; + self[kListener] = null; + } + module2.exports = { + addSignal, + removeSignal + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-request.js +var require_api_request = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-request.js"(exports2, module2) { + "use strict"; + var Readable = require_readable(); + var { + InvalidArgumentError, + RequestAbortedError + } = require_errors(); + var util = require_util(); + var { getResolveErrorBodyCallback } = require_util3(); + var { AsyncResource } = require("async_hooks"); + var { addSignal, removeSignal } = require_abort_signal(); + var RequestHandler = class extends AsyncResource { + constructor(opts, callback) { + if (!opts || typeof opts !== "object") { + throw new InvalidArgumentError("invalid opts"); + } + const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError, highWaterMark } = opts; + try { + if (typeof callback !== "function") { + throw new InvalidArgumentError("invalid callback"); + } + if (highWaterMark && (typeof highWaterMark !== "number" || highWaterMark < 0)) { + throw new InvalidArgumentError("invalid highWaterMark"); + } + if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") { + throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); + } + if (method === "CONNECT") { + throw new InvalidArgumentError("invalid method"); + } + if (onInfo && typeof onInfo !== "function") { + throw new InvalidArgumentError("invalid onInfo callback"); + } + super("UNDICI_REQUEST"); + } catch (err) { + if (util.isStream(body)) { + util.destroy(body.on("error", util.nop), err); + } + throw err; + } + this.responseHeaders = responseHeaders || null; + this.opaque = opaque || null; + this.callback = callback; + this.res = null; + this.abort = null; + this.body = body; + this.trailers = {}; + this.context = null; + this.onInfo = onInfo || null; + this.throwOnError = throwOnError; + this.highWaterMark = highWaterMark; + if (util.isStream(body)) { + body.on("error", (err) => { + this.onError(err); + }); + } + addSignal(this, signal); + } + onConnect(abort, context) { + if (!this.callback) { + throw new RequestAbortedError(); + } + this.abort = abort; + this.context = context; + } + onHeaders(statusCode, rawHeaders, resume, statusMessage) { + const { callback, opaque, abort, context, responseHeaders, highWaterMark } = this; + const headers = responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + if (statusCode < 200) { + if (this.onInfo) { + this.onInfo({ statusCode, headers }); + } + return; + } + const parsedHeaders = responseHeaders === "raw" ? util.parseHeaders(rawHeaders) : headers; + const contentType = parsedHeaders["content-type"]; + const body = new Readable({ resume, abort, contentType, highWaterMark }); + this.callback = null; + this.res = body; + if (callback !== null) { + if (this.throwOnError && statusCode >= 400) { + this.runInAsyncScope( + getResolveErrorBodyCallback, + null, + { callback, body, contentType, statusCode, statusMessage, headers } + ); + } else { + this.runInAsyncScope(callback, null, null, { + statusCode, + headers, + trailers: this.trailers, + opaque, + body, + context + }); + } + } + } + onData(chunk) { + const { res } = this; + return res.push(chunk); + } + onComplete(trailers) { + const { res } = this; + removeSignal(this); + util.parseHeaders(trailers, this.trailers); + res.push(null); + } + onError(err) { + const { res, callback, body, opaque } = this; + removeSignal(this); + if (callback) { + this.callback = null; + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }); + }); + } + if (res) { + this.res = null; + queueMicrotask(() => { + util.destroy(res, err); + }); + } + if (body) { + this.body = null; + util.destroy(body, err); + } + } + }; + function request3(opts, callback) { + if (callback === void 0) { + return new Promise((resolve, reject) => { + request3.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data); + }); + }); + } + try { + this.dispatch(opts, new RequestHandler(opts, callback)); + } catch (err) { + if (typeof callback !== "function") { + throw err; + } + const opaque = opts && opts.opaque; + queueMicrotask(() => callback(err, { opaque })); + } + } + module2.exports = request3; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-stream.js +var require_api_stream = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-stream.js"(exports2, module2) { + "use strict"; + var { finished, PassThrough } = require("stream"); + var { + InvalidArgumentError, + InvalidReturnValueError, + RequestAbortedError + } = require_errors(); + var util = require_util(); + var { getResolveErrorBodyCallback } = require_util3(); + var { AsyncResource } = require("async_hooks"); + var { addSignal, removeSignal } = require_abort_signal(); + var StreamHandler = class extends AsyncResource { + constructor(opts, factory, callback) { + if (!opts || typeof opts !== "object") { + throw new InvalidArgumentError("invalid opts"); + } + const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError } = opts; + try { + if (typeof callback !== "function") { + throw new InvalidArgumentError("invalid callback"); + } + if (typeof factory !== "function") { + throw new InvalidArgumentError("invalid factory"); + } + if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") { + throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); + } + if (method === "CONNECT") { + throw new InvalidArgumentError("invalid method"); + } + if (onInfo && typeof onInfo !== "function") { + throw new InvalidArgumentError("invalid onInfo callback"); + } + super("UNDICI_STREAM"); + } catch (err) { + if (util.isStream(body)) { + util.destroy(body.on("error", util.nop), err); + } + throw err; + } + this.responseHeaders = responseHeaders || null; + this.opaque = opaque || null; + this.factory = factory; + this.callback = callback; + this.res = null; + this.abort = null; + this.context = null; + this.trailers = null; + this.body = body; + this.onInfo = onInfo || null; + this.throwOnError = throwOnError || false; + if (util.isStream(body)) { + body.on("error", (err) => { + this.onError(err); + }); + } + addSignal(this, signal); + } + onConnect(abort, context) { + if (!this.callback) { + throw new RequestAbortedError(); + } + this.abort = abort; + this.context = context; + } + onHeaders(statusCode, rawHeaders, resume, statusMessage) { + const { factory, opaque, context, callback, responseHeaders } = this; + const headers = responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + if (statusCode < 200) { + if (this.onInfo) { + this.onInfo({ statusCode, headers }); + } + return; + } + this.factory = null; + let res; + if (this.throwOnError && statusCode >= 400) { + const parsedHeaders = responseHeaders === "raw" ? util.parseHeaders(rawHeaders) : headers; + const contentType = parsedHeaders["content-type"]; + res = new PassThrough(); + this.callback = null; + this.runInAsyncScope( + getResolveErrorBodyCallback, + null, + { callback, body: res, contentType, statusCode, statusMessage, headers } + ); + } else { + if (factory === null) { + return; + } + res = this.runInAsyncScope(factory, null, { + statusCode, + headers, + opaque, + context + }); + if (!res || typeof res.write !== "function" || typeof res.end !== "function" || typeof res.on !== "function") { + throw new InvalidReturnValueError("expected Writable"); + } + finished(res, { readable: false }, (err) => { + const { callback: callback2, res: res2, opaque: opaque2, trailers, abort } = this; + this.res = null; + if (err || !res2.readable) { + util.destroy(res2, err); + } + this.callback = null; + this.runInAsyncScope(callback2, null, err || null, { opaque: opaque2, trailers }); + if (err) { + abort(); + } + }); + } + res.on("drain", resume); + this.res = res; + const needDrain = res.writableNeedDrain !== void 0 ? res.writableNeedDrain : res._writableState && res._writableState.needDrain; + return needDrain !== true; + } + onData(chunk) { + const { res } = this; + return res ? res.write(chunk) : true; + } + onComplete(trailers) { + const { res } = this; + removeSignal(this); + if (!res) { + return; + } + this.trailers = util.parseHeaders(trailers); + res.end(); + } + onError(err) { + const { res, callback, opaque, body } = this; + removeSignal(this); + this.factory = null; + if (res) { + this.res = null; + util.destroy(res, err); + } else if (callback) { + this.callback = null; + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }); + }); + } + if (body) { + this.body = null; + util.destroy(body, err); + } + } + }; + function stream(opts, factory, callback) { + if (callback === void 0) { + return new Promise((resolve, reject) => { + stream.call(this, opts, factory, (err, data) => { + return err ? reject(err) : resolve(data); + }); + }); + } + try { + this.dispatch(opts, new StreamHandler(opts, factory, callback)); + } catch (err) { + if (typeof callback !== "function") { + throw err; + } + const opaque = opts && opts.opaque; + queueMicrotask(() => callback(err, { opaque })); + } + } + module2.exports = stream; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-pipeline.js +var require_api_pipeline = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-pipeline.js"(exports2, module2) { + "use strict"; + var { + Readable, + Duplex, + PassThrough + } = require("stream"); + var { + InvalidArgumentError, + InvalidReturnValueError, + RequestAbortedError + } = require_errors(); + var util = require_util(); + var { AsyncResource } = require("async_hooks"); + var { addSignal, removeSignal } = require_abort_signal(); + var assert = require("assert"); + var kResume = Symbol("resume"); + var PipelineRequest = class extends Readable { + constructor() { + super({ autoDestroy: true }); + this[kResume] = null; + } + _read() { + const { [kResume]: resume } = this; + if (resume) { + this[kResume] = null; + resume(); + } + } + _destroy(err, callback) { + this._read(); + callback(err); + } + }; + var PipelineResponse = class extends Readable { + constructor(resume) { + super({ autoDestroy: true }); + this[kResume] = resume; + } + _read() { + this[kResume](); + } + _destroy(err, callback) { + if (!err && !this._readableState.endEmitted) { + err = new RequestAbortedError(); + } + callback(err); + } + }; + var PipelineHandler = class extends AsyncResource { + constructor(opts, handler) { + if (!opts || typeof opts !== "object") { + throw new InvalidArgumentError("invalid opts"); + } + if (typeof handler !== "function") { + throw new InvalidArgumentError("invalid handler"); + } + const { signal, method, opaque, onInfo, responseHeaders } = opts; + if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") { + throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); + } + if (method === "CONNECT") { + throw new InvalidArgumentError("invalid method"); + } + if (onInfo && typeof onInfo !== "function") { + throw new InvalidArgumentError("invalid onInfo callback"); + } + super("UNDICI_PIPELINE"); + this.opaque = opaque || null; + this.responseHeaders = responseHeaders || null; + this.handler = handler; + this.abort = null; + this.context = null; + this.onInfo = onInfo || null; + this.req = new PipelineRequest().on("error", util.nop); + this.ret = new Duplex({ + readableObjectMode: opts.objectMode, + autoDestroy: true, + read: () => { + const { body } = this; + if (body && body.resume) { + body.resume(); + } + }, + write: (chunk, encoding, callback) => { + const { req } = this; + if (req.push(chunk, encoding) || req._readableState.destroyed) { + callback(); + } else { + req[kResume] = callback; + } + }, + destroy: (err, callback) => { + const { body, req, res, ret, abort } = this; + if (!err && !ret._readableState.endEmitted) { + err = new RequestAbortedError(); + } + if (abort && err) { + abort(); + } + util.destroy(body, err); + util.destroy(req, err); + util.destroy(res, err); + removeSignal(this); + callback(err); + } + }).on("prefinish", () => { + const { req } = this; + req.push(null); + }); + this.res = null; + addSignal(this, signal); + } + onConnect(abort, context) { + const { ret, res } = this; + assert(!res, "pipeline cannot be retried"); + if (ret.destroyed) { + throw new RequestAbortedError(); + } + this.abort = abort; + this.context = context; + } + onHeaders(statusCode, rawHeaders, resume) { + const { opaque, handler, context } = this; + if (statusCode < 200) { + if (this.onInfo) { + const headers = this.responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + this.onInfo({ statusCode, headers }); + } + return; + } + this.res = new PipelineResponse(resume); + let body; + try { + this.handler = null; + const headers = this.responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + body = this.runInAsyncScope(handler, null, { + statusCode, + headers, + opaque, + body: this.res, + context + }); + } catch (err) { + this.res.on("error", util.nop); + throw err; + } + if (!body || typeof body.on !== "function") { + throw new InvalidReturnValueError("expected Readable"); + } + body.on("data", (chunk) => { + const { ret, body: body2 } = this; + if (!ret.push(chunk) && body2.pause) { + body2.pause(); + } + }).on("error", (err) => { + const { ret } = this; + util.destroy(ret, err); + }).on("end", () => { + const { ret } = this; + ret.push(null); + }).on("close", () => { + const { ret } = this; + if (!ret._readableState.ended) { + util.destroy(ret, new RequestAbortedError()); + } + }); + this.body = body; + } + onData(chunk) { + const { res } = this; + return res.push(chunk); + } + onComplete(trailers) { + const { res } = this; + res.push(null); + } + onError(err) { + const { ret } = this; + this.handler = null; + util.destroy(ret, err); + } + }; + function pipeline(opts, handler) { + try { + const pipelineHandler = new PipelineHandler(opts, handler); + this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler); + return pipelineHandler.ret; + } catch (err) { + return new PassThrough().destroy(err); + } + } + module2.exports = pipeline; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-upgrade.js +var require_api_upgrade = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-upgrade.js"(exports2, module2) { + "use strict"; + var { InvalidArgumentError, RequestAbortedError, SocketError } = require_errors(); + var { AsyncResource } = require("async_hooks"); + var util = require_util(); + var { addSignal, removeSignal } = require_abort_signal(); + var assert = require("assert"); + var UpgradeHandler = class extends AsyncResource { + constructor(opts, callback) { + if (!opts || typeof opts !== "object") { + throw new InvalidArgumentError("invalid opts"); + } + if (typeof callback !== "function") { + throw new InvalidArgumentError("invalid callback"); + } + const { signal, opaque, responseHeaders } = opts; + if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") { + throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); + } + super("UNDICI_UPGRADE"); + this.responseHeaders = responseHeaders || null; + this.opaque = opaque || null; + this.callback = callback; + this.abort = null; + this.context = null; + addSignal(this, signal); + } + onConnect(abort, context) { + if (!this.callback) { + throw new RequestAbortedError(); + } + this.abort = abort; + this.context = null; + } + onHeaders() { + throw new SocketError("bad upgrade", null); + } + onUpgrade(statusCode, rawHeaders, socket) { + const { callback, opaque, context } = this; + assert.strictEqual(statusCode, 101); + removeSignal(this); + this.callback = null; + const headers = this.responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + this.runInAsyncScope(callback, null, null, { + headers, + socket, + opaque, + context + }); + } + onError(err) { + const { callback, opaque } = this; + removeSignal(this); + if (callback) { + this.callback = null; + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }); + }); + } + } + }; + function upgrade(opts, callback) { + if (callback === void 0) { + return new Promise((resolve, reject) => { + upgrade.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data); + }); + }); + } + try { + const upgradeHandler = new UpgradeHandler(opts, callback); + this.dispatch({ + ...opts, + method: opts.method || "GET", + upgrade: opts.protocol || "Websocket" + }, upgradeHandler); + } catch (err) { + if (typeof callback !== "function") { + throw err; + } + const opaque = opts && opts.opaque; + queueMicrotask(() => callback(err, { opaque })); + } + } + module2.exports = upgrade; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-connect.js +var require_api_connect = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-connect.js"(exports2, module2) { + "use strict"; + var { AsyncResource } = require("async_hooks"); + var { InvalidArgumentError, RequestAbortedError, SocketError } = require_errors(); + var util = require_util(); + var { addSignal, removeSignal } = require_abort_signal(); + var ConnectHandler = class extends AsyncResource { + constructor(opts, callback) { + if (!opts || typeof opts !== "object") { + throw new InvalidArgumentError("invalid opts"); + } + if (typeof callback !== "function") { + throw new InvalidArgumentError("invalid callback"); + } + const { signal, opaque, responseHeaders } = opts; + if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") { + throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); + } + super("UNDICI_CONNECT"); + this.opaque = opaque || null; + this.responseHeaders = responseHeaders || null; + this.callback = callback; + this.abort = null; + addSignal(this, signal); + } + onConnect(abort, context) { + if (!this.callback) { + throw new RequestAbortedError(); + } + this.abort = abort; + this.context = context; + } + onHeaders() { + throw new SocketError("bad connect", null); + } + onUpgrade(statusCode, rawHeaders, socket) { + const { callback, opaque, context } = this; + removeSignal(this); + this.callback = null; + let headers = rawHeaders; + if (headers != null) { + headers = this.responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + } + this.runInAsyncScope(callback, null, null, { + statusCode, + headers, + socket, + opaque, + context + }); + } + onError(err) { + const { callback, opaque } = this; + removeSignal(this); + if (callback) { + this.callback = null; + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }); + }); + } + } + }; + function connect(opts, callback) { + if (callback === void 0) { + return new Promise((resolve, reject) => { + connect.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data); + }); + }); + } + try { + const connectHandler = new ConnectHandler(opts, callback); + this.dispatch({ ...opts, method: "CONNECT" }, connectHandler); + } catch (err) { + if (typeof callback !== "function") { + throw err; + } + const opaque = opts && opts.opaque; + queueMicrotask(() => callback(err, { opaque })); + } + } + module2.exports = connect; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/index.js +var require_api = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/index.js"(exports2, module2) { + "use strict"; + module2.exports.request = require_api_request(); + module2.exports.stream = require_api_stream(); + module2.exports.pipeline = require_api_pipeline(); + module2.exports.upgrade = require_api_upgrade(); + module2.exports.connect = require_api_connect(); + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-errors.js +var require_mock_errors = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-errors.js"(exports2, module2) { + "use strict"; + var { UndiciError } = require_errors(); + var MockNotMatchedError = class _MockNotMatchedError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _MockNotMatchedError); + this.name = "MockNotMatchedError"; + this.message = message || "The request does not match any registered mock dispatches"; + this.code = "UND_MOCK_ERR_MOCK_NOT_MATCHED"; + } + }; + module2.exports = { + MockNotMatchedError + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-symbols.js +var require_mock_symbols = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-symbols.js"(exports2, module2) { + "use strict"; + module2.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") + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-utils.js +var require_mock_utils = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-utils.js"(exports2, module2) { + "use strict"; + var { MockNotMatchedError } = require_mock_errors(); + var { + kDispatches, + kMockAgent, + kOriginalDispatch, + kOrigin, + kGetNetConnect + } = require_mock_symbols(); + var { buildURL, nop } = require_util(); + var { STATUS_CODES } = require("http"); + var { + types: { + isPromise + } + } = require("util"); + function matchValue(match, value) { + if (typeof match === "string") { + return match === value; + } + if (match instanceof RegExp) { + return match.test(value); + } + if (typeof match === "function") { + return match(value) === true; + } + return false; + } + function lowerCaseEntries(headers) { + return Object.fromEntries( + Object.entries(headers).map(([headerName, headerValue]) => { + return [headerName.toLocaleLowerCase(), headerValue]; + }) + ); + } + function getHeaderByName(headers, key) { + if (Array.isArray(headers)) { + for (let i = 0; i < headers.length; i += 2) { + if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) { + return headers[i + 1]; + } + } + return void 0; + } else if (typeof headers.get === "function") { + return headers.get(key); + } else { + return lowerCaseEntries(headers)[key.toLocaleLowerCase()]; + } + } + function buildHeadersFromArray(headers) { + const clone = headers.slice(); + const entries = []; + for (let index = 0; index < clone.length; index += 2) { + entries.push([clone[index], clone[index + 1]]); + } + return Object.fromEntries(entries); + } + function matchHeaders(mockDispatch2, headers) { + if (typeof mockDispatch2.headers === "function") { + if (Array.isArray(headers)) { + headers = buildHeadersFromArray(headers); + } + return mockDispatch2.headers(headers ? lowerCaseEntries(headers) : {}); + } + if (typeof mockDispatch2.headers === "undefined") { + return true; + } + if (typeof headers !== "object" || typeof mockDispatch2.headers !== "object") { + return false; + } + for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch2.headers)) { + const headerValue = getHeaderByName(headers, matchHeaderName); + if (!matchValue(matchHeaderValue, headerValue)) { + return false; + } + } + return true; + } + function safeUrl(path) { + if (typeof path !== "string") { + return path; + } + const pathSegments = path.split("?"); + if (pathSegments.length !== 2) { + return path; + } + const qp = new URLSearchParams(pathSegments.pop()); + qp.sort(); + return [...pathSegments, qp.toString()].join("?"); + } + function matchKey(mockDispatch2, { path, method, body, headers }) { + const pathMatch = matchValue(mockDispatch2.path, path); + const methodMatch = matchValue(mockDispatch2.method, method); + const bodyMatch = typeof mockDispatch2.body !== "undefined" ? matchValue(mockDispatch2.body, body) : true; + const headersMatch = matchHeaders(mockDispatch2, headers); + return pathMatch && methodMatch && bodyMatch && headersMatch; + } + function getResponseData(data) { + if (Buffer.isBuffer(data)) { + return data; + } else if (typeof data === "object") { + return JSON.stringify(data); + } else { + return data.toString(); + } + } + function getMockDispatch(mockDispatches, key) { + const basePath = key.query ? buildURL(key.path, key.query) : key.path; + const resolvedPath = typeof basePath === "string" ? safeUrl(basePath) : basePath; + let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path }) => matchValue(safeUrl(path), resolvedPath)); + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`); + } + matchedMockDispatches = matchedMockDispatches.filter(({ method }) => matchValue(method, key.method)); + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}'`); + } + matchedMockDispatches = matchedMockDispatches.filter(({ body }) => typeof body !== "undefined" ? matchValue(body, key.body) : true); + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}'`); + } + matchedMockDispatches = matchedMockDispatches.filter((mockDispatch2) => matchHeaders(mockDispatch2, key.headers)); + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for headers '${typeof key.headers === "object" ? JSON.stringify(key.headers) : key.headers}'`); + } + return matchedMockDispatches[0]; + } + function addMockDispatch(mockDispatches, key, data) { + const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false }; + const replyData = typeof data === "function" ? { callback: data } : { ...data }; + const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } }; + mockDispatches.push(newMockDispatch); + return newMockDispatch; + } + function deleteMockDispatch(mockDispatches, key) { + const index = mockDispatches.findIndex((dispatch) => { + if (!dispatch.consumed) { + return false; + } + return matchKey(dispatch, key); + }); + if (index !== -1) { + mockDispatches.splice(index, 1); + } + } + function buildKey(opts) { + const { path, method, body, headers, query } = opts; + return { + path, + method, + body, + headers, + query + }; + } + function generateKeyValues(data) { + return Object.entries(data).reduce((keyValuePairs, [key, value]) => [ + ...keyValuePairs, + Buffer.from(`${key}`), + Array.isArray(value) ? value.map((x) => Buffer.from(`${x}`)) : Buffer.from(`${value}`) + ], []); + } + function getStatusText(statusCode) { + return STATUS_CODES[statusCode] || "unknown"; + } + async function getResponse(body) { + const buffers = []; + for await (const data of body) { + buffers.push(data); + } + return Buffer.concat(buffers).toString("utf8"); + } + function mockDispatch(opts, handler) { + const key = buildKey(opts); + const mockDispatch2 = getMockDispatch(this[kDispatches], key); + mockDispatch2.timesInvoked++; + if (mockDispatch2.data.callback) { + mockDispatch2.data = { ...mockDispatch2.data, ...mockDispatch2.data.callback(opts) }; + } + const { data: { statusCode, data, headers, trailers, error }, delay, persist } = mockDispatch2; + const { timesInvoked, times } = mockDispatch2; + mockDispatch2.consumed = !persist && timesInvoked >= times; + mockDispatch2.pending = timesInvoked < times; + if (error !== null) { + deleteMockDispatch(this[kDispatches], key); + handler.onError(error); + return true; + } + if (typeof delay === "number" && delay > 0) { + setTimeout(() => { + handleReply(this[kDispatches]); + }, delay); + } else { + handleReply(this[kDispatches]); + } + function handleReply(mockDispatches, _data = data) { + const optsHeaders = Array.isArray(opts.headers) ? buildHeadersFromArray(opts.headers) : opts.headers; + const body = typeof _data === "function" ? _data({ ...opts, headers: optsHeaders }) : _data; + if (isPromise(body)) { + body.then((newData) => handleReply(mockDispatches, newData)); + return; + } + const responseData = getResponseData(body); + const responseHeaders = generateKeyValues(headers); + const responseTrailers = generateKeyValues(trailers); + handler.abort = nop; + handler.onHeaders(statusCode, responseHeaders, resume, getStatusText(statusCode)); + handler.onData(Buffer.from(responseData)); + handler.onComplete(responseTrailers); + deleteMockDispatch(mockDispatches, key); + } + function resume() { + } + return true; + } + function buildMockDispatch() { + const agent = this[kMockAgent]; + const origin = this[kOrigin]; + const originalDispatch = this[kOriginalDispatch]; + return function dispatch(opts, handler) { + if (agent.isMockActive) { + try { + mockDispatch.call(this, opts, handler); + } catch (error) { + if (error instanceof MockNotMatchedError) { + const netConnect = agent[kGetNetConnect](); + if (netConnect === false) { + throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`); + } + if (checkNetConnect(netConnect, origin)) { + originalDispatch.call(this, opts, handler); + } else { + throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)`); + } + } else { + throw error; + } + } + } else { + originalDispatch.call(this, opts, handler); + } + }; + } + function checkNetConnect(netConnect, origin) { + const url = new URL(origin); + if (netConnect === true) { + return true; + } else if (Array.isArray(netConnect) && netConnect.some((matcher) => matchValue(matcher, url.host))) { + return true; + } + return false; + } + function buildMockOptions(opts) { + if (opts) { + const { agent, ...mockOptions } = opts; + return mockOptions; + } + } + module2.exports = { + getResponseData, + getMockDispatch, + addMockDispatch, + deleteMockDispatch, + buildKey, + generateKeyValues, + matchValue, + getResponse, + getStatusText, + mockDispatch, + buildMockDispatch, + checkNetConnect, + buildMockOptions, + getHeaderByName + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-interceptor.js +var require_mock_interceptor = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-interceptor.js"(exports2, module2) { + "use strict"; + var { getResponseData, buildKey, addMockDispatch } = require_mock_utils(); + var { + kDispatches, + kDispatchKey, + kDefaultHeaders, + kDefaultTrailers, + kContentLength, + kMockDispatch + } = require_mock_symbols(); + var { InvalidArgumentError } = require_errors(); + var { buildURL } = require_util(); + var MockScope = class { + constructor(mockDispatch) { + this[kMockDispatch] = mockDispatch; + } + /** + * Delay a reply by a set amount in ms. + */ + delay(waitInMs) { + if (typeof waitInMs !== "number" || !Number.isInteger(waitInMs) || waitInMs <= 0) { + throw new InvalidArgumentError("waitInMs must be a valid integer > 0"); + } + this[kMockDispatch].delay = waitInMs; + return this; + } + /** + * For a defined reply, never mark as consumed. + */ + persist() { + this[kMockDispatch].persist = true; + return this; + } + /** + * Allow one to define a reply for a set amount of matching requests. + */ + times(repeatTimes) { + if (typeof repeatTimes !== "number" || !Number.isInteger(repeatTimes) || repeatTimes <= 0) { + throw new InvalidArgumentError("repeatTimes must be a valid integer > 0"); + } + this[kMockDispatch].times = repeatTimes; + return this; + } + }; + var MockInterceptor = class { + constructor(opts, mockDispatches) { + if (typeof opts !== "object") { + throw new InvalidArgumentError("opts must be an object"); + } + if (typeof opts.path === "undefined") { + throw new InvalidArgumentError("opts.path must be defined"); + } + if (typeof opts.method === "undefined") { + opts.method = "GET"; + } + if (typeof opts.path === "string") { + if (opts.query) { + opts.path = buildURL(opts.path, opts.query); + } else { + const parsedURL = new URL(opts.path, "data://"); + opts.path = parsedURL.pathname + parsedURL.search; + } + } + if (typeof opts.method === "string") { + opts.method = opts.method.toUpperCase(); + } + this[kDispatchKey] = buildKey(opts); + this[kDispatches] = mockDispatches; + this[kDefaultHeaders] = {}; + this[kDefaultTrailers] = {}; + this[kContentLength] = false; + } + createMockScopeDispatchData(statusCode, data, responseOptions = {}) { + const responseData = getResponseData(data); + const contentLength = this[kContentLength] ? { "content-length": responseData.length } : {}; + const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers }; + const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers }; + return { statusCode, data, headers, trailers }; + } + validateReplyParameters(statusCode, data, responseOptions) { + if (typeof statusCode === "undefined") { + throw new InvalidArgumentError("statusCode must be defined"); + } + if (typeof data === "undefined") { + throw new InvalidArgumentError("data must be defined"); + } + if (typeof responseOptions !== "object") { + throw new InvalidArgumentError("responseOptions must be an object"); + } + } + /** + * Mock an undici request with a defined reply. + */ + reply(replyData) { + if (typeof replyData === "function") { + const wrappedDefaultsCallback = (opts) => { + const resolvedData = replyData(opts); + if (typeof resolvedData !== "object") { + throw new InvalidArgumentError("reply options callback must return an object"); + } + const { statusCode: statusCode2, data: data2 = "", responseOptions: responseOptions2 = {} } = resolvedData; + this.validateReplyParameters(statusCode2, data2, responseOptions2); + return { + ...this.createMockScopeDispatchData(statusCode2, data2, responseOptions2) + }; + }; + const newMockDispatch2 = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback); + return new MockScope(newMockDispatch2); + } + const [statusCode, data = "", responseOptions = {}] = [...arguments]; + this.validateReplyParameters(statusCode, data, responseOptions); + const dispatchData = this.createMockScopeDispatchData(statusCode, data, responseOptions); + const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], dispatchData); + return new MockScope(newMockDispatch); + } + /** + * Mock an undici request with a defined error. + */ + replyWithError(error) { + if (typeof error === "undefined") { + throw new InvalidArgumentError("error must be defined"); + } + const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error }); + return new MockScope(newMockDispatch); + } + /** + * Set default reply headers on the interceptor for subsequent replies + */ + defaultReplyHeaders(headers) { + if (typeof headers === "undefined") { + throw new InvalidArgumentError("headers must be defined"); + } + this[kDefaultHeaders] = headers; + return this; + } + /** + * Set default reply trailers on the interceptor for subsequent replies + */ + defaultReplyTrailers(trailers) { + if (typeof trailers === "undefined") { + throw new InvalidArgumentError("trailers must be defined"); + } + this[kDefaultTrailers] = trailers; + return this; + } + /** + * Set reply content length header for replies on the interceptor + */ + replyContentLength() { + this[kContentLength] = true; + return this; + } + }; + module2.exports.MockInterceptor = MockInterceptor; + module2.exports.MockScope = MockScope; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-client.js +var require_mock_client = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-client.js"(exports2, module2) { + "use strict"; + var { promisify } = require("util"); + var Client = require_client(); + var { buildMockDispatch } = require_mock_utils(); + var { + kDispatches, + kMockAgent, + kClose, + kOriginalClose, + kOrigin, + kOriginalDispatch, + kConnected + } = require_mock_symbols(); + var { MockInterceptor } = require_mock_interceptor(); + var Symbols = require_symbols(); + var { InvalidArgumentError } = require_errors(); + var MockClient = class extends Client { + constructor(origin, opts) { + super(origin, opts); + if (!opts || !opts.agent || typeof opts.agent.dispatch !== "function") { + throw new InvalidArgumentError("Argument opts.agent must implement Agent"); + } + this[kMockAgent] = opts.agent; + this[kOrigin] = origin; + this[kDispatches] = []; + this[kConnected] = 1; + this[kOriginalDispatch] = this.dispatch; + this[kOriginalClose] = this.close.bind(this); + this.dispatch = buildMockDispatch.call(this); + this.close = this[kClose]; + } + get [Symbols.kConnected]() { + return this[kConnected]; + } + /** + * Sets up the base interceptor for mocking replies from undici. + */ + intercept(opts) { + return new MockInterceptor(opts, this[kDispatches]); + } + async [kClose]() { + await promisify(this[kOriginalClose])(); + this[kConnected] = 0; + this[kMockAgent][Symbols.kClients].delete(this[kOrigin]); + } + }; + module2.exports = MockClient; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-pool.js +var require_mock_pool = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-pool.js"(exports2, module2) { + "use strict"; + var { promisify } = require("util"); + var Pool = require_pool(); + var { buildMockDispatch } = require_mock_utils(); + var { + kDispatches, + kMockAgent, + kClose, + kOriginalClose, + kOrigin, + kOriginalDispatch, + kConnected + } = require_mock_symbols(); + var { MockInterceptor } = require_mock_interceptor(); + var Symbols = require_symbols(); + var { InvalidArgumentError } = require_errors(); + var MockPool = class extends Pool { + constructor(origin, opts) { + super(origin, opts); + if (!opts || !opts.agent || typeof opts.agent.dispatch !== "function") { + throw new InvalidArgumentError("Argument opts.agent must implement Agent"); + } + this[kMockAgent] = opts.agent; + this[kOrigin] = origin; + this[kDispatches] = []; + this[kConnected] = 1; + this[kOriginalDispatch] = this.dispatch; + this[kOriginalClose] = this.close.bind(this); + this.dispatch = buildMockDispatch.call(this); + this.close = this[kClose]; + } + get [Symbols.kConnected]() { + return this[kConnected]; + } + /** + * Sets up the base interceptor for mocking replies from undici. + */ + intercept(opts) { + return new MockInterceptor(opts, this[kDispatches]); + } + async [kClose]() { + await promisify(this[kOriginalClose])(); + this[kConnected] = 0; + this[kMockAgent][Symbols.kClients].delete(this[kOrigin]); + } + }; + module2.exports = MockPool; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/pluralizer.js +var require_pluralizer = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/pluralizer.js"(exports2, module2) { + "use strict"; + var singulars = { + pronoun: "it", + is: "is", + was: "was", + this: "this" + }; + var plurals = { + pronoun: "they", + is: "are", + was: "were", + this: "these" + }; + module2.exports = class Pluralizer { + constructor(singular, plural) { + this.singular = singular; + this.plural = plural; + } + pluralize(count) { + const one = count === 1; + const keys = one ? singulars : plurals; + const noun = one ? this.singular : this.plural; + return { ...keys, count, noun }; + } + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/pending-interceptors-formatter.js +var require_pending_interceptors_formatter = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/pending-interceptors-formatter.js"(exports2, module2) { + "use strict"; + var { Transform } = require("stream"); + var { Console } = require("console"); + module2.exports = class PendingInterceptorsFormatter { + constructor({ disableColors } = {}) { + this.transform = new Transform({ + transform(chunk, _enc, cb) { + cb(null, chunk); + } + }); + this.logger = new Console({ + stdout: this.transform, + inspectOptions: { + colors: !disableColors && !process.env.CI + } + }); + } + format(pendingInterceptors) { + const withPrettyHeaders = pendingInterceptors.map( + ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({ + Method: method, + Origin: origin, + Path: path, + "Status code": statusCode, + Persistent: persist ? "\u2705" : "\u274C", + Invocations: timesInvoked, + Remaining: persist ? Infinity : times - timesInvoked + }) + ); + this.logger.table(withPrettyHeaders); + return this.transform.read().toString(); + } + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-agent.js +var require_mock_agent = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-agent.js"(exports2, module2) { + "use strict"; + var { kClients } = require_symbols(); + var Agent = require_agent(); + var { + kAgent, + kMockAgentSet, + kMockAgentGet, + kDispatches, + kIsMockActive, + kNetConnect, + kGetNetConnect, + kOptions, + kFactory + } = require_mock_symbols(); + var MockClient = require_mock_client(); + var MockPool = require_mock_pool(); + var { matchValue, buildMockOptions } = require_mock_utils(); + var { InvalidArgumentError, UndiciError } = require_errors(); + var Dispatcher = require_dispatcher(); + var Pluralizer = require_pluralizer(); + var PendingInterceptorsFormatter = require_pending_interceptors_formatter(); + var FakeWeakRef = class { + constructor(value) { + this.value = value; + } + deref() { + return this.value; + } + }; + var MockAgent = class extends Dispatcher { + constructor(opts) { + super(opts); + this[kNetConnect] = true; + this[kIsMockActive] = true; + if (opts && opts.agent && typeof opts.agent.dispatch !== "function") { + throw new InvalidArgumentError("Argument opts.agent must implement Agent"); + } + const agent = opts && opts.agent ? opts.agent : new Agent(opts); + this[kAgent] = agent; + this[kClients] = agent[kClients]; + this[kOptions] = buildMockOptions(opts); + } + get(origin) { + let dispatcher = this[kMockAgentGet](origin); + if (!dispatcher) { + dispatcher = this[kFactory](origin); + this[kMockAgentSet](origin, dispatcher); + } + return dispatcher; + } + dispatch(opts, handler) { + this.get(opts.origin); + return this[kAgent].dispatch(opts, handler); + } + async close() { + await this[kAgent].close(); + this[kClients].clear(); + } + deactivate() { + this[kIsMockActive] = false; + } + activate() { + this[kIsMockActive] = true; + } + enableNetConnect(matcher) { + if (typeof matcher === "string" || typeof matcher === "function" || matcher instanceof RegExp) { + if (Array.isArray(this[kNetConnect])) { + this[kNetConnect].push(matcher); + } else { + this[kNetConnect] = [matcher]; + } + } else if (typeof matcher === "undefined") { + this[kNetConnect] = true; + } else { + throw new InvalidArgumentError("Unsupported matcher. Must be one of String|Function|RegExp."); + } + } + disableNetConnect() { + this[kNetConnect] = false; + } + // This is required to bypass issues caused by using global symbols - see: + // https://github.com/nodejs/undici/issues/1447 + get isMockActive() { + return this[kIsMockActive]; + } + [kMockAgentSet](origin, dispatcher) { + this[kClients].set(origin, new FakeWeakRef(dispatcher)); + } + [kFactory](origin) { + const mockOptions = Object.assign({ agent: this }, this[kOptions]); + return this[kOptions] && this[kOptions].connections === 1 ? new MockClient(origin, mockOptions) : new MockPool(origin, mockOptions); + } + [kMockAgentGet](origin) { + const ref = this[kClients].get(origin); + if (ref) { + return ref.deref(); + } + if (typeof origin !== "string") { + const dispatcher = this[kFactory]("http://localhost:9999"); + this[kMockAgentSet](origin, dispatcher); + return dispatcher; + } + for (const [keyMatcher, nonExplicitRef] of Array.from(this[kClients])) { + const nonExplicitDispatcher = nonExplicitRef.deref(); + if (nonExplicitDispatcher && typeof keyMatcher !== "string" && matchValue(keyMatcher, origin)) { + const dispatcher = this[kFactory](origin); + this[kMockAgentSet](origin, dispatcher); + dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches]; + return dispatcher; + } + } + } + [kGetNetConnect]() { + return this[kNetConnect]; + } + pendingInterceptors() { + const mockAgentClients = this[kClients]; + return Array.from(mockAgentClients.entries()).flatMap(([origin, scope]) => scope.deref()[kDispatches].map((dispatch) => ({ ...dispatch, origin }))).filter(({ pending }) => pending); + } + assertNoPendingInterceptors({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) { + const pending = this.pendingInterceptors(); + if (pending.length === 0) { + return; + } + const pluralizer = new Pluralizer("interceptor", "interceptors").pluralize(pending.length); + throw new UndiciError(` +${pluralizer.count} ${pluralizer.noun} ${pluralizer.is} pending: + +${pendingInterceptorsFormatter.format(pending)} +`.trim()); + } + }; + module2.exports = MockAgent; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/proxy-agent.js +var require_proxy_agent = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/proxy-agent.js"(exports2, module2) { + "use strict"; + var { kProxy, kClose, kDestroy, kInterceptors } = require_symbols(); + var { URL: URL2 } = require("url"); + var Agent = require_agent(); + var Pool = require_pool(); + var DispatcherBase = require_dispatcher_base(); + var { InvalidArgumentError, RequestAbortedError } = require_errors(); + var buildConnector = require_connect(); + var kAgent = Symbol("proxy agent"); + var kClient = Symbol("proxy client"); + var kProxyHeaders = Symbol("proxy headers"); + var kRequestTls = Symbol("request tls settings"); + var kProxyTls = Symbol("proxy tls settings"); + var kConnectEndpoint = Symbol("connect endpoint function"); + function defaultProtocolPort(protocol) { + return protocol === "https:" ? 443 : 80; + } + function buildProxyOptions(opts) { + if (typeof opts === "string") { + opts = { uri: opts }; + } + if (!opts || !opts.uri) { + throw new InvalidArgumentError("Proxy opts.uri is mandatory"); + } + return { + uri: opts.uri, + protocol: opts.protocol || "https" + }; + } + function defaultFactory(origin, opts) { + return new Pool(origin, opts); + } + var ProxyAgent = class extends DispatcherBase { + constructor(opts) { + super(opts); + this[kProxy] = buildProxyOptions(opts); + this[kAgent] = new Agent(opts); + this[kInterceptors] = opts.interceptors && opts.interceptors.ProxyAgent && Array.isArray(opts.interceptors.ProxyAgent) ? opts.interceptors.ProxyAgent : []; + if (typeof opts === "string") { + opts = { uri: opts }; + } + if (!opts || !opts.uri) { + throw new InvalidArgumentError("Proxy opts.uri is mandatory"); + } + const { clientFactory = defaultFactory } = opts; + if (typeof clientFactory !== "function") { + throw new InvalidArgumentError("Proxy opts.clientFactory must be a function."); + } + this[kRequestTls] = opts.requestTls; + this[kProxyTls] = opts.proxyTls; + this[kProxyHeaders] = opts.headers || {}; + if (opts.auth && opts.token) { + throw new InvalidArgumentError("opts.auth cannot be used in combination with opts.token"); + } else if (opts.auth) { + this[kProxyHeaders]["proxy-authorization"] = `Basic ${opts.auth}`; + } else if (opts.token) { + this[kProxyHeaders]["proxy-authorization"] = opts.token; + } + const resolvedUrl = new URL2(opts.uri); + const { origin, port, host } = resolvedUrl; + const connect = buildConnector({ ...opts.proxyTls }); + this[kConnectEndpoint] = buildConnector({ ...opts.requestTls }); + this[kClient] = clientFactory(resolvedUrl, { connect }); + this[kAgent] = new Agent({ + ...opts, + connect: async (opts2, callback) => { + let requestedHost = opts2.host; + if (!opts2.port) { + requestedHost += `:${defaultProtocolPort(opts2.protocol)}`; + } + try { + const { socket, statusCode } = await this[kClient].connect({ + origin, + port, + path: requestedHost, + signal: opts2.signal, + headers: { + ...this[kProxyHeaders], + host + } + }); + if (statusCode !== 200) { + socket.on("error", () => { + }).destroy(); + callback(new RequestAbortedError("Proxy response !== 200 when HTTP Tunneling")); + } + if (opts2.protocol !== "https:") { + callback(null, socket); + return; + } + let servername; + if (this[kRequestTls]) { + servername = this[kRequestTls].servername; + } else { + servername = opts2.servername; + } + this[kConnectEndpoint]({ ...opts2, servername, httpSocket: socket }, callback); + } catch (err) { + callback(err); + } + } + }); + } + dispatch(opts, handler) { + const { host } = new URL2(opts.origin); + const headers = buildHeaders(opts.headers); + throwIfProxyAuthIsSent(headers); + return this[kAgent].dispatch( + { + ...opts, + headers: { + ...headers, + host + } + }, + handler + ); + } + async [kClose]() { + await this[kAgent].close(); + await this[kClient].close(); + } + async [kDestroy]() { + await this[kAgent].destroy(); + await this[kClient].destroy(); + } + }; + function buildHeaders(headers) { + if (Array.isArray(headers)) { + const headersPair = {}; + for (let i = 0; i < headers.length; i += 2) { + headersPair[headers[i]] = headers[i + 1]; + } + return headersPair; + } + return headers; + } + function throwIfProxyAuthIsSent(headers) { + const existProxyAuth = headers && Object.keys(headers).find((key) => key.toLowerCase() === "proxy-authorization"); + if (existProxyAuth) { + throw new InvalidArgumentError("Proxy-Authorization should be sent in ProxyAgent constructor"); + } + } + module2.exports = ProxyAgent; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/global.js +var require_global2 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/global.js"(exports2, module2) { + "use strict"; + var globalDispatcher = Symbol.for("undici.globalDispatcher.1"); + var { InvalidArgumentError } = require_errors(); + var Agent = require_agent(); + if (getGlobalDispatcher() === void 0) { + setGlobalDispatcher(new Agent()); + } + function setGlobalDispatcher(agent) { + if (!agent || typeof agent.dispatch !== "function") { + throw new InvalidArgumentError("Argument agent must implement Agent"); + } + Object.defineProperty(globalThis, globalDispatcher, { + value: agent, + writable: true, + enumerable: false, + configurable: false + }); + } + function getGlobalDispatcher() { + return globalThis[globalDispatcher]; + } + module2.exports = { + setGlobalDispatcher, + getGlobalDispatcher + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/handler/DecoratorHandler.js +var require_DecoratorHandler = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/handler/DecoratorHandler.js"(exports2, module2) { + "use strict"; + module2.exports = class DecoratorHandler { + constructor(handler) { + this.handler = handler; + } + onConnect(...args) { + return this.handler.onConnect(...args); + } + onError(...args) { + return this.handler.onError(...args); + } + onUpgrade(...args) { + return this.handler.onUpgrade(...args); + } + onHeaders(...args) { + return this.handler.onHeaders(...args); + } + onData(...args) { + return this.handler.onData(...args); + } + onComplete(...args) { + return this.handler.onComplete(...args); + } + onBodySent(...args) { + return this.handler.onBodySent(...args); + } + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/headers.js +var require_headers = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/headers.js"(exports2, module2) { + "use strict"; + var { kHeadersList } = require_symbols(); + var { kGuard } = require_symbols2(); + var { kEnumerableProperty } = require_util(); + var { + makeIterator, + isValidHeaderName, + isValidHeaderValue + } = require_util2(); + var { webidl } = require_webidl(); + var assert = require("assert"); + var kHeadersMap = Symbol("headers map"); + var kHeadersSortedMap = Symbol("headers map sorted"); + function headerValueNormalize(potentialValue) { + let i = potentialValue.length; + while (/[\r\n\t ]/.test(potentialValue.charAt(--i))) + ; + return potentialValue.slice(0, i + 1).replace(/^[\r\n\t ]+/, ""); + } + function fill(headers, object) { + if (Array.isArray(object)) { + for (const header of object) { + if (header.length !== 2) { + throw webidl.errors.exception({ + header: "Headers constructor", + message: `expected name/value pair to be length 2, found ${header.length}.` + }); + } + headers.append(header[0], header[1]); + } + } else if (typeof object === "object" && object !== null) { + for (const [key, value] of Object.entries(object)) { + headers.append(key, value); + } + } else { + throw webidl.errors.conversionFailed({ + prefix: "Headers constructor", + argument: "Argument 1", + types: ["sequence>", "record"] + }); + } + } + var HeadersList = class _HeadersList { + /** @type {[string, string][]|null} */ + cookies = null; + constructor(init) { + if (init instanceof _HeadersList) { + this[kHeadersMap] = new Map(init[kHeadersMap]); + this[kHeadersSortedMap] = init[kHeadersSortedMap]; + this.cookies = init.cookies; + } else { + this[kHeadersMap] = new Map(init); + this[kHeadersSortedMap] = null; + } + } + // https://fetch.spec.whatwg.org/#header-list-contains + contains(name) { + name = name.toLowerCase(); + return this[kHeadersMap].has(name); + } + clear() { + this[kHeadersMap].clear(); + this[kHeadersSortedMap] = null; + this.cookies = null; + } + // https://fetch.spec.whatwg.org/#concept-header-list-append + append(name, value) { + this[kHeadersSortedMap] = null; + const lowercaseName = name.toLowerCase(); + const exists = this[kHeadersMap].get(lowercaseName); + if (exists) { + const delimiter = lowercaseName === "cookie" ? "; " : ", "; + this[kHeadersMap].set(lowercaseName, { + name: exists.name, + value: `${exists.value}${delimiter}${value}` + }); + } else { + this[kHeadersMap].set(lowercaseName, { name, value }); + } + if (lowercaseName === "set-cookie") { + this.cookies ?? (this.cookies = []); + this.cookies.push(value); + } + } + // https://fetch.spec.whatwg.org/#concept-header-list-set + set(name, value) { + this[kHeadersSortedMap] = null; + const lowercaseName = name.toLowerCase(); + if (lowercaseName === "set-cookie") { + this.cookies = [value]; + } + return this[kHeadersMap].set(lowercaseName, { name, value }); + } + // https://fetch.spec.whatwg.org/#concept-header-list-delete + delete(name) { + this[kHeadersSortedMap] = null; + name = name.toLowerCase(); + if (name === "set-cookie") { + this.cookies = null; + } + return this[kHeadersMap].delete(name); + } + // https://fetch.spec.whatwg.org/#concept-header-list-get + get(name) { + var _a; + if (!this.contains(name)) { + return null; + } + return ((_a = this[kHeadersMap].get(name.toLowerCase())) == null ? void 0 : _a.value) ?? null; + } + *[Symbol.iterator]() { + for (const [name, { value }] of this[kHeadersMap]) { + yield [name, value]; + } + } + get entries() { + const headers = {}; + if (this[kHeadersMap].size) { + for (const { name, value } of this[kHeadersMap].values()) { + headers[name] = value; + } + } + return headers; + } + }; + var Headers = class _Headers { + constructor(init = void 0) { + this[kHeadersList] = new HeadersList(); + this[kGuard] = "none"; + if (init !== void 0) { + init = webidl.converters.HeadersInit(init); + fill(this, init); + } + } + // https://fetch.spec.whatwg.org/#dom-headers-append + append(name, value) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 2, { header: "Headers.append" }); + name = webidl.converters.ByteString(name); + value = webidl.converters.ByteString(value); + value = headerValueNormalize(value); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: "Headers.append", + value: name, + type: "header name" + }); + } else if (!isValidHeaderValue(value)) { + throw webidl.errors.invalidArgument({ + prefix: "Headers.append", + value, + type: "header value" + }); + } + if (this[kGuard] === "immutable") { + throw new TypeError("immutable"); + } else if (this[kGuard] === "request-no-cors") { + } + return this[kHeadersList].append(name, value); + } + // https://fetch.spec.whatwg.org/#dom-headers-delete + delete(name) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 1, { header: "Headers.delete" }); + name = webidl.converters.ByteString(name); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: "Headers.delete", + value: name, + type: "header name" + }); + } + if (this[kGuard] === "immutable") { + throw new TypeError("immutable"); + } else if (this[kGuard] === "request-no-cors") { + } + if (!this[kHeadersList].contains(name)) { + return; + } + return this[kHeadersList].delete(name); + } + // https://fetch.spec.whatwg.org/#dom-headers-get + get(name) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 1, { header: "Headers.get" }); + name = webidl.converters.ByteString(name); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: "Headers.get", + value: name, + type: "header name" + }); + } + return this[kHeadersList].get(name); + } + // https://fetch.spec.whatwg.org/#dom-headers-has + has(name) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 1, { header: "Headers.has" }); + name = webidl.converters.ByteString(name); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: "Headers.has", + value: name, + type: "header name" + }); + } + return this[kHeadersList].contains(name); + } + // https://fetch.spec.whatwg.org/#dom-headers-set + set(name, value) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 2, { header: "Headers.set" }); + name = webidl.converters.ByteString(name); + value = webidl.converters.ByteString(value); + value = headerValueNormalize(value); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: "Headers.set", + value: name, + type: "header name" + }); + } else if (!isValidHeaderValue(value)) { + throw webidl.errors.invalidArgument({ + prefix: "Headers.set", + value, + type: "header value" + }); + } + if (this[kGuard] === "immutable") { + throw new TypeError("immutable"); + } else if (this[kGuard] === "request-no-cors") { + } + return this[kHeadersList].set(name, value); + } + // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie + getSetCookie() { + webidl.brandCheck(this, _Headers); + const list = this[kHeadersList].cookies; + if (list) { + return [...list]; + } + return []; + } + // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine + get [kHeadersSortedMap]() { + if (this[kHeadersList][kHeadersSortedMap]) { + return this[kHeadersList][kHeadersSortedMap]; + } + const headers = []; + const names = [...this[kHeadersList]].sort((a, b) => a[0] < b[0] ? -1 : 1); + const cookies = this[kHeadersList].cookies; + for (const [name, value] of names) { + if (name === "set-cookie") { + for (const value2 of cookies) { + headers.push([name, value2]); + } + } else { + assert(value !== null); + headers.push([name, value]); + } + } + this[kHeadersList][kHeadersSortedMap] = headers; + return headers; + } + keys() { + webidl.brandCheck(this, _Headers); + return makeIterator( + () => [...this[kHeadersSortedMap].values()], + "Headers", + "key" + ); + } + values() { + webidl.brandCheck(this, _Headers); + return makeIterator( + () => [...this[kHeadersSortedMap].values()], + "Headers", + "value" + ); + } + entries() { + webidl.brandCheck(this, _Headers); + return makeIterator( + () => [...this[kHeadersSortedMap].values()], + "Headers", + "key+value" + ); + } + /** + * @param {(value: string, key: string, self: Headers) => void} callbackFn + * @param {unknown} thisArg + */ + forEach(callbackFn, thisArg = globalThis) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 1, { header: "Headers.forEach" }); + if (typeof callbackFn !== "function") { + throw new TypeError( + "Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'." + ); + } + for (const [key, value] of this) { + callbackFn.apply(thisArg, [value, key, this]); + } + } + [Symbol.for("nodejs.util.inspect.custom")]() { + webidl.brandCheck(this, _Headers); + return this[kHeadersList]; + } + }; + Headers.prototype[Symbol.iterator] = Headers.prototype.entries; + Object.defineProperties(Headers.prototype, { + append: kEnumerableProperty, + delete: kEnumerableProperty, + get: kEnumerableProperty, + has: kEnumerableProperty, + set: kEnumerableProperty, + getSetCookie: kEnumerableProperty, + keys: kEnumerableProperty, + values: kEnumerableProperty, + entries: kEnumerableProperty, + forEach: kEnumerableProperty, + [Symbol.iterator]: { enumerable: false }, + [Symbol.toStringTag]: { + value: "Headers", + configurable: true + } + }); + webidl.converters.HeadersInit = function(V) { + if (webidl.util.Type(V) === "Object") { + if (V[Symbol.iterator]) { + return webidl.converters["sequence>"](V); + } + return webidl.converters["record"](V); + } + throw webidl.errors.conversionFailed({ + prefix: "Headers constructor", + argument: "Argument 1", + types: ["sequence>", "record"] + }); + }; + module2.exports = { + fill, + Headers, + HeadersList + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/response.js +var require_response = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/response.js"(exports2, module2) { + "use strict"; + var { Headers, HeadersList, fill } = require_headers(); + var { extractBody, cloneBody, mixinBody } = require_body(); + var util = require_util(); + var { kEnumerableProperty } = util; + var { + isValidReasonPhrase, + isCancelled, + isAborted, + isBlobLike, + serializeJavascriptValueToJSONString, + isErrorLike, + isomorphicEncode + } = require_util2(); + var { + redirectStatusSet, + nullBodyStatus, + DOMException: DOMException2 + } = require_constants(); + var { kState, kHeaders, kGuard, kRealm } = require_symbols2(); + var { webidl } = require_webidl(); + var { FormData } = require_formdata(); + var { getGlobalOrigin } = require_global(); + var { URLSerializer } = require_dataURL(); + var { kHeadersList } = require_symbols(); + var assert = require("assert"); + var { types } = require("util"); + var ReadableStream = globalThis.ReadableStream || require("stream/web").ReadableStream; + var textEncoder = new TextEncoder("utf-8"); + var Response = class _Response { + // Creates network error Response. + static error() { + const relevantRealm = { settingsObject: {} }; + const responseObject = new _Response(); + responseObject[kState] = makeNetworkError(); + responseObject[kRealm] = relevantRealm; + responseObject[kHeaders][kHeadersList] = responseObject[kState].headersList; + responseObject[kHeaders][kGuard] = "immutable"; + responseObject[kHeaders][kRealm] = relevantRealm; + return responseObject; + } + // https://fetch.spec.whatwg.org/#dom-response-json + static json(data, init = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: "Response.json" }); + if (init !== null) { + init = webidl.converters.ResponseInit(init); + } + const bytes = textEncoder.encode( + serializeJavascriptValueToJSONString(data) + ); + const body = extractBody(bytes); + const relevantRealm = { settingsObject: {} }; + const responseObject = new _Response(); + responseObject[kRealm] = relevantRealm; + responseObject[kHeaders][kGuard] = "response"; + responseObject[kHeaders][kRealm] = relevantRealm; + initializeResponse(responseObject, init, { body: body[0], type: "application/json" }); + return responseObject; + } + // Creates a redirect Response that redirects to url with status status. + static redirect(url, status = 302) { + const relevantRealm = { settingsObject: {} }; + webidl.argumentLengthCheck(arguments, 1, { header: "Response.redirect" }); + url = webidl.converters.USVString(url); + status = webidl.converters["unsigned short"](status); + let parsedURL; + try { + parsedURL = new URL(url, getGlobalOrigin()); + } catch (err) { + throw Object.assign(new TypeError("Failed to parse URL from " + url), { + cause: err + }); + } + if (!redirectStatusSet.has(status)) { + throw new RangeError("Invalid status code " + status); + } + const responseObject = new _Response(); + responseObject[kRealm] = relevantRealm; + responseObject[kHeaders][kGuard] = "immutable"; + responseObject[kHeaders][kRealm] = relevantRealm; + responseObject[kState].status = status; + const value = isomorphicEncode(URLSerializer(parsedURL)); + responseObject[kState].headersList.append("location", value); + return responseObject; + } + // https://fetch.spec.whatwg.org/#dom-response + constructor(body = null, init = {}) { + if (body !== null) { + body = webidl.converters.BodyInit(body); + } + init = webidl.converters.ResponseInit(init); + this[kRealm] = { settingsObject: {} }; + this[kState] = makeResponse({}); + this[kHeaders] = new Headers(); + this[kHeaders][kGuard] = "response"; + this[kHeaders][kHeadersList] = this[kState].headersList; + this[kHeaders][kRealm] = this[kRealm]; + let bodyWithType = null; + if (body != null) { + const [extractedBody, type] = extractBody(body); + bodyWithType = { body: extractedBody, type }; + } + initializeResponse(this, init, bodyWithType); + } + // Returns response’s type, e.g., "cors". + get type() { + webidl.brandCheck(this, _Response); + return this[kState].type; + } + // Returns response’s URL, if it has one; otherwise the empty string. + get url() { + webidl.brandCheck(this, _Response); + const urlList = this[kState].urlList; + const url = urlList[urlList.length - 1] ?? null; + if (url === null) { + return ""; + } + return URLSerializer(url, true); + } + // Returns whether response was obtained through a redirect. + get redirected() { + webidl.brandCheck(this, _Response); + return this[kState].urlList.length > 1; + } + // Returns response’s status. + get status() { + webidl.brandCheck(this, _Response); + return this[kState].status; + } + // Returns whether response’s status is an ok status. + get ok() { + webidl.brandCheck(this, _Response); + return this[kState].status >= 200 && this[kState].status <= 299; + } + // Returns response’s status message. + get statusText() { + webidl.brandCheck(this, _Response); + return this[kState].statusText; + } + // Returns response’s headers as Headers. + get headers() { + webidl.brandCheck(this, _Response); + return this[kHeaders]; + } + get body() { + webidl.brandCheck(this, _Response); + return this[kState].body ? this[kState].body.stream : null; + } + get bodyUsed() { + webidl.brandCheck(this, _Response); + return !!this[kState].body && util.isDisturbed(this[kState].body.stream); + } + // Returns a clone of response. + clone() { + webidl.brandCheck(this, _Response); + if (this.bodyUsed || this.body && this.body.locked) { + throw webidl.errors.exception({ + header: "Response.clone", + message: "Body has already been consumed." + }); + } + const clonedResponse = cloneResponse(this[kState]); + const clonedResponseObject = new _Response(); + clonedResponseObject[kState] = clonedResponse; + clonedResponseObject[kRealm] = this[kRealm]; + clonedResponseObject[kHeaders][kHeadersList] = clonedResponse.headersList; + clonedResponseObject[kHeaders][kGuard] = this[kHeaders][kGuard]; + clonedResponseObject[kHeaders][kRealm] = this[kHeaders][kRealm]; + return clonedResponseObject; + } + }; + mixinBody(Response); + Object.defineProperties(Response.prototype, { + type: kEnumerableProperty, + url: kEnumerableProperty, + status: kEnumerableProperty, + ok: kEnumerableProperty, + redirected: kEnumerableProperty, + statusText: kEnumerableProperty, + headers: kEnumerableProperty, + clone: kEnumerableProperty, + body: kEnumerableProperty, + bodyUsed: kEnumerableProperty, + [Symbol.toStringTag]: { + value: "Response", + configurable: true + } + }); + Object.defineProperties(Response, { + json: kEnumerableProperty, + redirect: kEnumerableProperty, + error: kEnumerableProperty + }); + function cloneResponse(response) { + if (response.internalResponse) { + return filterResponse( + cloneResponse(response.internalResponse), + response.type + ); + } + const newResponse = makeResponse({ ...response, body: null }); + if (response.body != null) { + newResponse.body = cloneBody(response.body); + } + return newResponse; + } + function makeResponse(init) { + return { + aborted: false, + rangeRequested: false, + timingAllowPassed: false, + requestIncludesCredentials: false, + type: "default", + status: 200, + timingInfo: null, + cacheState: "", + statusText: "", + ...init, + headersList: init.headersList ? new HeadersList(init.headersList) : new HeadersList(), + urlList: init.urlList ? [...init.urlList] : [] + }; + } + function makeNetworkError(reason) { + const isError = isErrorLike(reason); + return makeResponse({ + type: "error", + status: 0, + error: isError ? reason : new Error(reason ? String(reason) : reason), + aborted: reason && reason.name === "AbortError" + }); + } + function makeFilteredResponse(response, state) { + state = { + internalResponse: response, + ...state + }; + return new Proxy(response, { + get(target, p) { + return p in state ? state[p] : target[p]; + }, + set(target, p, value) { + assert(!(p in state)); + target[p] = value; + return true; + } + }); + } + function filterResponse(response, type) { + if (type === "basic") { + return makeFilteredResponse(response, { + type: "basic", + headersList: response.headersList + }); + } else if (type === "cors") { + return makeFilteredResponse(response, { + type: "cors", + headersList: response.headersList + }); + } else if (type === "opaque") { + return makeFilteredResponse(response, { + type: "opaque", + urlList: Object.freeze([]), + status: 0, + statusText: "", + body: null + }); + } else if (type === "opaqueredirect") { + return makeFilteredResponse(response, { + type: "opaqueredirect", + status: 0, + statusText: "", + headersList: [], + body: null + }); + } else { + assert(false); + } + } + function makeAppropriateNetworkError(fetchParams, err = null) { + assert(isCancelled(fetchParams)); + return isAborted(fetchParams) ? makeNetworkError(Object.assign(new DOMException2("The operation was aborted.", "AbortError"), { cause: err })) : makeNetworkError(Object.assign(new DOMException2("Request was cancelled."), { cause: err })); + } + function initializeResponse(response, init, body) { + if (init.status !== null && (init.status < 200 || init.status > 599)) { + throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.'); + } + if ("statusText" in init && init.statusText != null) { + if (!isValidReasonPhrase(String(init.statusText))) { + throw new TypeError("Invalid statusText"); + } + } + if ("status" in init && init.status != null) { + response[kState].status = init.status; + } + if ("statusText" in init && init.statusText != null) { + response[kState].statusText = init.statusText; + } + if ("headers" in init && init.headers != null) { + fill(response[kHeaders], init.headers); + } + if (body) { + if (nullBodyStatus.includes(response.status)) { + throw webidl.errors.exception({ + header: "Response constructor", + message: "Invalid response status code " + response.status + }); + } + response[kState].body = body.body; + if (body.type != null && !response[kState].headersList.contains("Content-Type")) { + response[kState].headersList.append("content-type", body.type); + } + } + } + webidl.converters.ReadableStream = webidl.interfaceConverter( + ReadableStream + ); + webidl.converters.FormData = webidl.interfaceConverter( + FormData + ); + webidl.converters.URLSearchParams = webidl.interfaceConverter( + URLSearchParams + ); + webidl.converters.XMLHttpRequestBodyInit = function(V) { + if (typeof V === "string") { + return webidl.converters.USVString(V); + } + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }); + } + if (types.isAnyArrayBuffer(V) || types.isTypedArray(V) || types.isDataView(V)) { + return webidl.converters.BufferSource(V); + } + if (util.isFormDataLike(V)) { + return webidl.converters.FormData(V, { strict: false }); + } + if (V instanceof URLSearchParams) { + return webidl.converters.URLSearchParams(V); + } + return webidl.converters.DOMString(V); + }; + webidl.converters.BodyInit = function(V) { + if (V instanceof ReadableStream) { + return webidl.converters.ReadableStream(V); + } + if (V == null ? void 0 : V[Symbol.asyncIterator]) { + return V; + } + return webidl.converters.XMLHttpRequestBodyInit(V); + }; + webidl.converters.ResponseInit = webidl.dictionaryConverter([ + { + key: "status", + converter: webidl.converters["unsigned short"], + defaultValue: 200 + }, + { + key: "statusText", + converter: webidl.converters.ByteString, + defaultValue: "" + }, + { + key: "headers", + converter: webidl.converters.HeadersInit + } + ]); + module2.exports = { + makeNetworkError, + makeResponse, + makeAppropriateNetworkError, + filterResponse, + Response, + cloneResponse + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/request.js +var require_request2 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/request.js"(exports2, module2) { + "use strict"; + var { extractBody, mixinBody, cloneBody } = require_body(); + var { Headers, fill: fillHeaders, HeadersList } = require_headers(); + var { FinalizationRegistry } = require_dispatcher_weakref()(); + var util = require_util(); + var { + isValidHTTPToken, + sameOrigin, + normalizeMethod, + makePolicyContainer + } = require_util2(); + var { + forbiddenMethodsSet, + corsSafeListedMethodsSet, + referrerPolicy, + requestRedirect, + requestMode, + requestCredentials, + requestCache, + requestDuplex + } = require_constants(); + var { kEnumerableProperty } = util; + var { kHeaders, kSignal, kState, kGuard, kRealm } = require_symbols2(); + var { webidl } = require_webidl(); + var { getGlobalOrigin } = require_global(); + var { URLSerializer } = require_dataURL(); + var { kHeadersList } = require_symbols(); + var assert = require("assert"); + var { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = require("events"); + var TransformStream = globalThis.TransformStream; + var kInit = Symbol("init"); + var kAbortController = Symbol("abortController"); + var requestFinalizer = new FinalizationRegistry(({ signal, abort }) => { + signal.removeEventListener("abort", abort); + }); + var Request = class _Request { + // https://fetch.spec.whatwg.org/#dom-request + constructor(input, init = {}) { + var _a, _b; + if (input === kInit) { + return; + } + webidl.argumentLengthCheck(arguments, 1, { header: "Request constructor" }); + input = webidl.converters.RequestInfo(input); + init = webidl.converters.RequestInit(init); + this[kRealm] = { + settingsObject: { + baseUrl: getGlobalOrigin(), + get origin() { + var _a2; + return (_a2 = this.baseUrl) == null ? void 0 : _a2.origin; + }, + policyContainer: makePolicyContainer() + } + }; + let request3 = null; + let fallbackMode = null; + const baseUrl = this[kRealm].settingsObject.baseUrl; + let signal = null; + if (typeof input === "string") { + let parsedURL; + try { + parsedURL = new URL(input, baseUrl); + } catch (err) { + throw new TypeError("Failed to parse URL from " + input, { cause: err }); + } + if (parsedURL.username || parsedURL.password) { + throw new TypeError( + "Request cannot be constructed from a URL that includes credentials: " + input + ); + } + request3 = makeRequest({ urlList: [parsedURL] }); + fallbackMode = "cors"; + } else { + assert(input instanceof _Request); + request3 = input[kState]; + signal = input[kSignal]; + } + const origin = this[kRealm].settingsObject.origin; + let window = "client"; + if (((_b = (_a = request3.window) == null ? void 0 : _a.constructor) == null ? void 0 : _b.name) === "EnvironmentSettingsObject" && sameOrigin(request3.window, origin)) { + window = request3.window; + } + if (init.window != null) { + throw new TypeError(`'window' option '${window}' must be null`); + } + if ("window" in init) { + window = "no-window"; + } + request3 = makeRequest({ + // URL request’s URL. + // undici implementation note: this is set as the first item in request's urlList in makeRequest + // method request’s method. + method: request3.method, + // header list A copy of request’s header list. + // undici implementation note: headersList is cloned in makeRequest + headersList: request3.headersList, + // unsafe-request flag Set. + unsafeRequest: request3.unsafeRequest, + // client This’s relevant settings object. + client: this[kRealm].settingsObject, + // window window. + window, + // priority request’s priority. + priority: request3.priority, + // origin request’s origin. The propagation of the origin is only significant for navigation requests + // being handled by a service worker. In this scenario a request can have an origin that is different + // from the current client. + origin: request3.origin, + // referrer request’s referrer. + referrer: request3.referrer, + // referrer policy request’s referrer policy. + referrerPolicy: request3.referrerPolicy, + // mode request’s mode. + mode: request3.mode, + // credentials mode request’s credentials mode. + credentials: request3.credentials, + // cache mode request’s cache mode. + cache: request3.cache, + // redirect mode request’s redirect mode. + redirect: request3.redirect, + // integrity metadata request’s integrity metadata. + integrity: request3.integrity, + // keepalive request’s keepalive. + keepalive: request3.keepalive, + // reload-navigation flag request’s reload-navigation flag. + reloadNavigation: request3.reloadNavigation, + // history-navigation flag request’s history-navigation flag. + historyNavigation: request3.historyNavigation, + // URL list A clone of request’s URL list. + urlList: [...request3.urlList] + }); + if (Object.keys(init).length > 0) { + if (request3.mode === "navigate") { + request3.mode = "same-origin"; + } + request3.reloadNavigation = false; + request3.historyNavigation = false; + request3.origin = "client"; + request3.referrer = "client"; + request3.referrerPolicy = ""; + request3.url = request3.urlList[request3.urlList.length - 1]; + request3.urlList = [request3.url]; + } + if (init.referrer !== void 0) { + const referrer = init.referrer; + if (referrer === "") { + request3.referrer = "no-referrer"; + } else { + let parsedReferrer; + try { + parsedReferrer = new URL(referrer, baseUrl); + } catch (err) { + throw new TypeError(`Referrer "${referrer}" is not a valid URL.`, { cause: err }); + } + if (parsedReferrer.protocol === "about:" && parsedReferrer.hostname === "client" || origin && !sameOrigin(parsedReferrer, this[kRealm].settingsObject.baseUrl)) { + request3.referrer = "client"; + } else { + request3.referrer = parsedReferrer; + } + } + } + if (init.referrerPolicy !== void 0) { + request3.referrerPolicy = init.referrerPolicy; + } + let mode; + if (init.mode !== void 0) { + mode = init.mode; + } else { + mode = fallbackMode; + } + if (mode === "navigate") { + throw webidl.errors.exception({ + header: "Request constructor", + message: "invalid request mode navigate." + }); + } + if (mode != null) { + request3.mode = mode; + } + if (init.credentials !== void 0) { + request3.credentials = init.credentials; + } + if (init.cache !== void 0) { + request3.cache = init.cache; + } + if (request3.cache === "only-if-cached" && request3.mode !== "same-origin") { + throw new TypeError( + "'only-if-cached' can be set only with 'same-origin' mode" + ); + } + if (init.redirect !== void 0) { + request3.redirect = init.redirect; + } + if (init.integrity !== void 0 && init.integrity != null) { + request3.integrity = String(init.integrity); + } + if (init.keepalive !== void 0) { + request3.keepalive = Boolean(init.keepalive); + } + if (init.method !== void 0) { + let method = init.method; + if (!isValidHTTPToken(init.method)) { + throw TypeError(`'${init.method}' is not a valid HTTP method.`); + } + if (forbiddenMethodsSet.has(method.toUpperCase())) { + throw TypeError(`'${init.method}' HTTP method is unsupported.`); + } + method = normalizeMethod(init.method); + request3.method = method; + } + if (init.signal !== void 0) { + signal = init.signal; + } + this[kState] = request3; + const ac = new AbortController(); + this[kSignal] = ac.signal; + this[kSignal][kRealm] = this[kRealm]; + if (signal != null) { + if (!signal || typeof signal.aborted !== "boolean" || typeof signal.addEventListener !== "function") { + throw new TypeError( + "Failed to construct 'Request': member signal is not of type AbortSignal." + ); + } + if (signal.aborted) { + ac.abort(signal.reason); + } else { + this[kAbortController] = ac; + const acRef = new WeakRef(ac); + const abort = function() { + const ac2 = acRef.deref(); + if (ac2 !== void 0) { + ac2.abort(this.reason); + } + }; + try { + if (typeof getMaxListeners === "function" && getMaxListeners(signal) === defaultMaxListeners) { + setMaxListeners(100, signal); + } else if (getEventListeners(signal, "abort").length >= defaultMaxListeners) { + setMaxListeners(100, signal); + } + } catch { + } + util.addAbortListener(signal, abort); + requestFinalizer.register(ac, { signal, abort }); + } + } + this[kHeaders] = new Headers(); + this[kHeaders][kHeadersList] = request3.headersList; + this[kHeaders][kGuard] = "request"; + this[kHeaders][kRealm] = this[kRealm]; + if (mode === "no-cors") { + if (!corsSafeListedMethodsSet.has(request3.method)) { + throw new TypeError( + `'${request3.method} is unsupported in no-cors mode.` + ); + } + this[kHeaders][kGuard] = "request-no-cors"; + } + if (Object.keys(init).length !== 0) { + let headers = new Headers(this[kHeaders]); + if (init.headers !== void 0) { + headers = init.headers; + } + this[kHeaders][kHeadersList].clear(); + if (headers.constructor.name === "Headers") { + for (const [key, val] of headers) { + this[kHeaders].append(key, val); + } + } else { + fillHeaders(this[kHeaders], headers); + } + } + const inputBody = input instanceof _Request ? input[kState].body : null; + if ((init.body != null || inputBody != null) && (request3.method === "GET" || request3.method === "HEAD")) { + throw new TypeError("Request with GET/HEAD method cannot have body."); + } + let initBody = null; + if (init.body != null) { + const [extractedBody, contentType] = extractBody( + init.body, + request3.keepalive + ); + initBody = extractedBody; + if (contentType && !this[kHeaders][kHeadersList].contains("content-type")) { + this[kHeaders].append("content-type", contentType); + } + } + const inputOrInitBody = initBody ?? inputBody; + if (inputOrInitBody != null && inputOrInitBody.source == null) { + if (initBody != null && init.duplex == null) { + throw new TypeError("RequestInit: duplex option is required when sending a body."); + } + if (request3.mode !== "same-origin" && request3.mode !== "cors") { + throw new TypeError( + 'If request is made from ReadableStream, mode should be "same-origin" or "cors"' + ); + } + request3.useCORSPreflightFlag = true; + } + let finalBody = inputOrInitBody; + if (initBody == null && inputBody != null) { + if (util.isDisturbed(inputBody.stream) || inputBody.stream.locked) { + throw new TypeError( + "Cannot construct a Request with a Request object that has already been used." + ); + } + if (!TransformStream) { + TransformStream = require("stream/web").TransformStream; + } + const identityTransform = new TransformStream(); + inputBody.stream.pipeThrough(identityTransform); + finalBody = { + source: inputBody.source, + length: inputBody.length, + stream: identityTransform.readable + }; + } + this[kState].body = finalBody; + } + // Returns request’s HTTP method, which is "GET" by default. + get method() { + webidl.brandCheck(this, _Request); + return this[kState].method; + } + // Returns the URL of request as a string. + get url() { + webidl.brandCheck(this, _Request); + return URLSerializer(this[kState].url); + } + // Returns a Headers object consisting of the headers associated with request. + // Note that headers added in the network layer by the user agent will not + // be accounted for in this object, e.g., the "Host" header. + get headers() { + webidl.brandCheck(this, _Request); + return this[kHeaders]; + } + // Returns the kind of resource requested by request, e.g., "document" + // or "script". + get destination() { + webidl.brandCheck(this, _Request); + return this[kState].destination; + } + // Returns the referrer of request. Its value can be a same-origin URL if + // explicitly set in init, the empty string to indicate no referrer, and + // "about:client" when defaulting to the global’s default. This is used + // during fetching to determine the value of the `Referer` header of the + // request being made. + get referrer() { + webidl.brandCheck(this, _Request); + if (this[kState].referrer === "no-referrer") { + return ""; + } + if (this[kState].referrer === "client") { + return "about:client"; + } + return this[kState].referrer.toString(); + } + // Returns the referrer policy associated with request. + // This is used during fetching to compute the value of the request’s + // referrer. + get referrerPolicy() { + webidl.brandCheck(this, _Request); + return this[kState].referrerPolicy; + } + // Returns the mode associated with request, which is a string indicating + // whether the request will use CORS, or will be restricted to same-origin + // URLs. + get mode() { + webidl.brandCheck(this, _Request); + return this[kState].mode; + } + // Returns the credentials mode associated with request, + // which is a string indicating whether credentials will be sent with the + // request always, never, or only when sent to a same-origin URL. + get credentials() { + return this[kState].credentials; + } + // Returns the cache mode associated with request, + // which is a string indicating how the request will + // interact with the browser’s cache when fetching. + get cache() { + webidl.brandCheck(this, _Request); + return this[kState].cache; + } + // Returns the redirect mode associated with request, + // which is a string indicating how redirects for the + // request will be handled during fetching. A request + // will follow redirects by default. + get redirect() { + webidl.brandCheck(this, _Request); + return this[kState].redirect; + } + // Returns request’s subresource integrity metadata, which is a + // cryptographic hash of the resource being fetched. Its value + // consists of multiple hashes separated by whitespace. [SRI] + get integrity() { + webidl.brandCheck(this, _Request); + return this[kState].integrity; + } + // Returns a boolean indicating whether or not request can outlive the + // global in which it was created. + get keepalive() { + webidl.brandCheck(this, _Request); + return this[kState].keepalive; + } + // Returns a boolean indicating whether or not request is for a reload + // navigation. + get isReloadNavigation() { + webidl.brandCheck(this, _Request); + return this[kState].reloadNavigation; + } + // Returns a boolean indicating whether or not request is for a history + // navigation (a.k.a. back-foward navigation). + get isHistoryNavigation() { + webidl.brandCheck(this, _Request); + return this[kState].historyNavigation; + } + // Returns the signal associated with request, which is an AbortSignal + // object indicating whether or not request has been aborted, and its + // abort event handler. + get signal() { + webidl.brandCheck(this, _Request); + return this[kSignal]; + } + get body() { + webidl.brandCheck(this, _Request); + return this[kState].body ? this[kState].body.stream : null; + } + get bodyUsed() { + webidl.brandCheck(this, _Request); + return !!this[kState].body && util.isDisturbed(this[kState].body.stream); + } + get duplex() { + webidl.brandCheck(this, _Request); + return "half"; + } + // Returns a clone of request. + clone() { + var _a; + webidl.brandCheck(this, _Request); + if (this.bodyUsed || ((_a = this.body) == null ? void 0 : _a.locked)) { + throw new TypeError("unusable"); + } + const clonedRequest = cloneRequest(this[kState]); + const clonedRequestObject = new _Request(kInit); + clonedRequestObject[kState] = clonedRequest; + clonedRequestObject[kRealm] = this[kRealm]; + clonedRequestObject[kHeaders] = new Headers(); + clonedRequestObject[kHeaders][kHeadersList] = clonedRequest.headersList; + clonedRequestObject[kHeaders][kGuard] = this[kHeaders][kGuard]; + clonedRequestObject[kHeaders][kRealm] = this[kHeaders][kRealm]; + const ac = new AbortController(); + if (this.signal.aborted) { + ac.abort(this.signal.reason); + } else { + util.addAbortListener( + this.signal, + () => { + ac.abort(this.signal.reason); + } + ); + } + clonedRequestObject[kSignal] = ac.signal; + return clonedRequestObject; + } + }; + mixinBody(Request); + function makeRequest(init) { + const request3 = { + method: "GET", + localURLsOnly: false, + unsafeRequest: false, + body: null, + client: null, + reservedClient: null, + replacesClientId: "", + window: "client", + keepalive: false, + serviceWorkers: "all", + initiator: "", + destination: "", + priority: null, + origin: "client", + policyContainer: "client", + referrer: "client", + referrerPolicy: "", + mode: "no-cors", + useCORSPreflightFlag: false, + credentials: "same-origin", + useCredentials: false, + cache: "default", + redirect: "follow", + integrity: "", + cryptoGraphicsNonceMetadata: "", + parserMetadata: "", + reloadNavigation: false, + historyNavigation: false, + userActivation: false, + taintedOrigin: false, + redirectCount: 0, + responseTainting: "basic", + preventNoCacheCacheControlHeaderModification: false, + done: false, + timingAllowFailed: false, + ...init, + headersList: init.headersList ? new HeadersList(init.headersList) : new HeadersList() + }; + request3.url = request3.urlList[0]; + return request3; + } + function cloneRequest(request3) { + const newRequest = makeRequest({ ...request3, body: null }); + if (request3.body != null) { + newRequest.body = cloneBody(request3.body); + } + return newRequest; + } + Object.defineProperties(Request.prototype, { + method: kEnumerableProperty, + url: kEnumerableProperty, + headers: kEnumerableProperty, + redirect: kEnumerableProperty, + clone: kEnumerableProperty, + signal: kEnumerableProperty, + duplex: kEnumerableProperty, + destination: kEnumerableProperty, + body: kEnumerableProperty, + bodyUsed: kEnumerableProperty, + isHistoryNavigation: kEnumerableProperty, + isReloadNavigation: kEnumerableProperty, + keepalive: kEnumerableProperty, + integrity: kEnumerableProperty, + cache: kEnumerableProperty, + credentials: kEnumerableProperty, + attribute: kEnumerableProperty, + referrerPolicy: kEnumerableProperty, + referrer: kEnumerableProperty, + mode: kEnumerableProperty, + [Symbol.toStringTag]: { + value: "Request", + configurable: true + } + }); + webidl.converters.Request = webidl.interfaceConverter( + Request + ); + webidl.converters.RequestInfo = function(V) { + if (typeof V === "string") { + return webidl.converters.USVString(V); + } + if (V instanceof Request) { + return webidl.converters.Request(V); + } + return webidl.converters.USVString(V); + }; + webidl.converters.AbortSignal = webidl.interfaceConverter( + AbortSignal + ); + webidl.converters.RequestInit = webidl.dictionaryConverter([ + { + key: "method", + converter: webidl.converters.ByteString + }, + { + key: "headers", + converter: webidl.converters.HeadersInit + }, + { + key: "body", + converter: webidl.nullableConverter( + webidl.converters.BodyInit + ) + }, + { + key: "referrer", + converter: webidl.converters.USVString + }, + { + key: "referrerPolicy", + converter: webidl.converters.DOMString, + // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy + allowedValues: referrerPolicy + }, + { + key: "mode", + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#concept-request-mode + allowedValues: requestMode + }, + { + key: "credentials", + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestcredentials + allowedValues: requestCredentials + }, + { + key: "cache", + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestcache + allowedValues: requestCache + }, + { + key: "redirect", + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestredirect + allowedValues: requestRedirect + }, + { + key: "integrity", + converter: webidl.converters.DOMString + }, + { + key: "keepalive", + converter: webidl.converters.boolean + }, + { + key: "signal", + converter: webidl.nullableConverter( + (signal) => webidl.converters.AbortSignal( + signal, + { strict: false } + ) + ) + }, + { + key: "window", + converter: webidl.converters.any + }, + { + key: "duplex", + converter: webidl.converters.DOMString, + allowedValues: requestDuplex + } + ]); + module2.exports = { Request, makeRequest }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/index.js +var require_fetch = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/index.js"(exports2, module2) { + "use strict"; + var { + Response, + makeNetworkError, + makeAppropriateNetworkError, + filterResponse, + makeResponse + } = require_response(); + var { Headers } = require_headers(); + var { Request, makeRequest } = require_request2(); + var zlib = require("zlib"); + var { + bytesMatch, + makePolicyContainer, + clonePolicyContainer, + requestBadPort, + TAOCheck, + appendRequestOriginHeader, + responseLocationURL, + requestCurrentURL, + setRequestReferrerPolicyOnRedirect, + tryUpgradeRequestToAPotentiallyTrustworthyURL, + createOpaqueTimingInfo, + appendFetchMetadata, + corsCheck, + crossOriginResourcePolicyCheck, + determineRequestsReferrer, + coarsenedSharedCurrentTime, + createDeferredPromise, + isBlobLike, + sameOrigin, + isCancelled, + isAborted, + isErrorLike, + fullyReadBody, + readableStreamClose, + isomorphicEncode, + urlIsLocal, + urlIsHttpHttpsScheme, + urlHasHttpsScheme + } = require_util2(); + var { kState, kHeaders, kGuard, kRealm } = require_symbols2(); + var assert = require("assert"); + var { safelyExtractBody } = require_body(); + var { + redirectStatusSet, + nullBodyStatus, + safeMethodsSet, + requestBodyHeader, + subresourceSet, + DOMException: DOMException2 + } = require_constants(); + var { kHeadersList } = require_symbols(); + var EE = require("events"); + var { Readable, pipeline } = require("stream"); + var { addAbortListener, isErrored, isReadable, nodeMajor, nodeMinor } = require_util(); + var { dataURLProcessor, serializeAMimeType } = require_dataURL(); + var { TransformStream } = require("stream/web"); + var { getGlobalDispatcher } = require_global2(); + var { webidl } = require_webidl(); + var { STATUS_CODES } = require("http"); + var GET_OR_HEAD = ["GET", "HEAD"]; + var resolveObjectURL; + var ReadableStream = globalThis.ReadableStream; + var Fetch = class extends EE { + constructor(dispatcher) { + super(); + this.dispatcher = dispatcher; + this.connection = null; + this.dump = false; + this.state = "ongoing"; + this.setMaxListeners(21); + } + terminate(reason) { + var _a; + if (this.state !== "ongoing") { + return; + } + this.state = "terminated"; + (_a = this.connection) == null ? void 0 : _a.destroy(reason); + this.emit("terminated", reason); + } + // https://fetch.spec.whatwg.org/#fetch-controller-abort + abort(error) { + var _a; + if (this.state !== "ongoing") { + return; + } + this.state = "aborted"; + if (!error) { + error = new DOMException2("The operation was aborted.", "AbortError"); + } + this.serializedAbortReason = error; + (_a = this.connection) == null ? void 0 : _a.destroy(error); + this.emit("terminated", error); + } + }; + function fetch(input, init = {}) { + var _a; + webidl.argumentLengthCheck(arguments, 1, { header: "globalThis.fetch" }); + const p = createDeferredPromise(); + let requestObject; + try { + requestObject = new Request(input, init); + } catch (e) { + p.reject(e); + return p.promise; + } + const request3 = requestObject[kState]; + if (requestObject.signal.aborted) { + abortFetch(p, request3, null, requestObject.signal.reason); + return p.promise; + } + const globalObject = request3.client.globalObject; + if (((_a = globalObject == null ? void 0 : globalObject.constructor) == null ? void 0 : _a.name) === "ServiceWorkerGlobalScope") { + request3.serviceWorkers = "none"; + } + let responseObject = null; + const relevantRealm = null; + let locallyAborted = false; + let controller = null; + addAbortListener( + requestObject.signal, + () => { + locallyAborted = true; + assert(controller != null); + controller.abort(requestObject.signal.reason); + abortFetch(p, request3, responseObject, requestObject.signal.reason); + } + ); + const handleFetchDone = (response) => finalizeAndReportTiming(response, "fetch"); + const processResponse = (response) => { + if (locallyAborted) { + return Promise.resolve(); + } + if (response.aborted) { + abortFetch(p, request3, responseObject, controller.serializedAbortReason); + return Promise.resolve(); + } + if (response.type === "error") { + p.reject( + Object.assign(new TypeError("fetch failed"), { cause: response.error }) + ); + return Promise.resolve(); + } + responseObject = new Response(); + responseObject[kState] = response; + responseObject[kRealm] = relevantRealm; + responseObject[kHeaders][kHeadersList] = response.headersList; + responseObject[kHeaders][kGuard] = "immutable"; + responseObject[kHeaders][kRealm] = relevantRealm; + p.resolve(responseObject); + }; + controller = fetching({ + request: request3, + processResponseEndOfBody: handleFetchDone, + processResponse, + dispatcher: init.dispatcher ?? getGlobalDispatcher() + // undici + }); + return p.promise; + } + function finalizeAndReportTiming(response, initiatorType = "other") { + var _a; + if (response.type === "error" && response.aborted) { + return; + } + if (!((_a = response.urlList) == null ? void 0 : _a.length)) { + return; + } + const originalURL = response.urlList[0]; + let timingInfo = response.timingInfo; + let cacheState = response.cacheState; + if (!urlIsHttpHttpsScheme(originalURL)) { + return; + } + if (timingInfo === null) { + return; + } + if (!timingInfo.timingAllowPassed) { + timingInfo = createOpaqueTimingInfo({ + startTime: timingInfo.startTime + }); + cacheState = ""; + } + timingInfo.endTime = coarsenedSharedCurrentTime(); + response.timingInfo = timingInfo; + markResourceTiming( + timingInfo, + originalURL, + initiatorType, + globalThis, + cacheState + ); + } + function markResourceTiming(timingInfo, originalURL, initiatorType, globalThis2, cacheState) { + if (nodeMajor > 18 || nodeMajor === 18 && nodeMinor >= 2) { + performance.markResourceTiming(timingInfo, originalURL.href, initiatorType, globalThis2, cacheState); + } + } + function abortFetch(p, request3, responseObject, error) { + var _a, _b; + if (!error) { + error = new DOMException2("The operation was aborted.", "AbortError"); + } + p.reject(error); + if (request3.body != null && isReadable((_a = request3.body) == null ? void 0 : _a.stream)) { + request3.body.stream.cancel(error).catch((err) => { + if (err.code === "ERR_INVALID_STATE") { + return; + } + throw err; + }); + } + if (responseObject == null) { + return; + } + const response = responseObject[kState]; + if (response.body != null && isReadable((_b = response.body) == null ? void 0 : _b.stream)) { + response.body.stream.cancel(error).catch((err) => { + if (err.code === "ERR_INVALID_STATE") { + return; + } + throw err; + }); + } + } + function fetching({ + request: request3, + processRequestBodyChunkLength, + processRequestEndOfBody, + processResponse, + processResponseEndOfBody, + processResponseConsumeBody, + useParallelQueue = false, + dispatcher + // undici + }) { + var _a, _b, _c, _d; + let taskDestination = null; + let crossOriginIsolatedCapability = false; + if (request3.client != null) { + taskDestination = request3.client.globalObject; + crossOriginIsolatedCapability = request3.client.crossOriginIsolatedCapability; + } + const currenTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability); + const timingInfo = createOpaqueTimingInfo({ + startTime: currenTime + }); + const fetchParams = { + controller: new Fetch(dispatcher), + request: request3, + timingInfo, + processRequestBodyChunkLength, + processRequestEndOfBody, + processResponse, + processResponseConsumeBody, + processResponseEndOfBody, + taskDestination, + crossOriginIsolatedCapability + }; + assert(!request3.body || request3.body.stream); + if (request3.window === "client") { + request3.window = ((_c = (_b = (_a = request3.client) == null ? void 0 : _a.globalObject) == null ? void 0 : _b.constructor) == null ? void 0 : _c.name) === "Window" ? request3.client : "no-window"; + } + if (request3.origin === "client") { + request3.origin = (_d = request3.client) == null ? void 0 : _d.origin; + } + if (request3.policyContainer === "client") { + if (request3.client != null) { + request3.policyContainer = clonePolicyContainer( + request3.client.policyContainer + ); + } else { + request3.policyContainer = makePolicyContainer(); + } + } + if (!request3.headersList.contains("accept")) { + const value = "*/*"; + request3.headersList.append("accept", value); + } + if (!request3.headersList.contains("accept-language")) { + request3.headersList.append("accept-language", "*"); + } + if (request3.priority === null) { + } + if (subresourceSet.has(request3.destination)) { + } + mainFetch(fetchParams).catch((err) => { + fetchParams.controller.terminate(err); + }); + return fetchParams.controller; + } + async function mainFetch(fetchParams, recursive = false) { + const request3 = fetchParams.request; + let response = null; + if (request3.localURLsOnly && !urlIsLocal(requestCurrentURL(request3))) { + response = makeNetworkError("local URLs only"); + } + tryUpgradeRequestToAPotentiallyTrustworthyURL(request3); + if (requestBadPort(request3) === "blocked") { + response = makeNetworkError("bad port"); + } + if (request3.referrerPolicy === "") { + request3.referrerPolicy = request3.policyContainer.referrerPolicy; + } + if (request3.referrer !== "no-referrer") { + request3.referrer = determineRequestsReferrer(request3); + } + if (response === null) { + response = await (async () => { + const currentURL = requestCurrentURL(request3); + if ( + // - request’s current URL’s origin is same origin with request’s origin, + // and request’s response tainting is "basic" + sameOrigin(currentURL, request3.url) && request3.responseTainting === "basic" || // request’s current URL’s scheme is "data" + currentURL.protocol === "data:" || // - request’s mode is "navigate" or "websocket" + (request3.mode === "navigate" || request3.mode === "websocket") + ) { + request3.responseTainting = "basic"; + return await schemeFetch(fetchParams); + } + if (request3.mode === "same-origin") { + return makeNetworkError('request mode cannot be "same-origin"'); + } + if (request3.mode === "no-cors") { + if (request3.redirect !== "follow") { + return makeNetworkError( + 'redirect mode cannot be "follow" for "no-cors" request' + ); + } + request3.responseTainting = "opaque"; + return await schemeFetch(fetchParams); + } + if (!urlIsHttpHttpsScheme(requestCurrentURL(request3))) { + return makeNetworkError("URL scheme must be a HTTP(S) scheme"); + } + request3.responseTainting = "cors"; + return await httpFetch(fetchParams); + })(); + } + if (recursive) { + return response; + } + if (response.status !== 0 && !response.internalResponse) { + if (request3.responseTainting === "cors") { + } + if (request3.responseTainting === "basic") { + response = filterResponse(response, "basic"); + } else if (request3.responseTainting === "cors") { + response = filterResponse(response, "cors"); + } else if (request3.responseTainting === "opaque") { + response = filterResponse(response, "opaque"); + } else { + assert(false); + } + } + let internalResponse = response.status === 0 ? response : response.internalResponse; + if (internalResponse.urlList.length === 0) { + internalResponse.urlList.push(...request3.urlList); + } + if (!request3.timingAllowFailed) { + response.timingAllowPassed = true; + } + if (response.type === "opaque" && internalResponse.status === 206 && internalResponse.rangeRequested && !request3.headers.contains("range")) { + response = internalResponse = makeNetworkError(); + } + if (response.status !== 0 && (request3.method === "HEAD" || request3.method === "CONNECT" || nullBodyStatus.includes(internalResponse.status))) { + internalResponse.body = null; + fetchParams.controller.dump = true; + } + if (request3.integrity) { + const processBodyError = (reason) => fetchFinale(fetchParams, makeNetworkError(reason)); + if (request3.responseTainting === "opaque" || response.body == null) { + processBodyError(response.error); + return; + } + const processBody = (bytes) => { + if (!bytesMatch(bytes, request3.integrity)) { + processBodyError("integrity mismatch"); + return; + } + response.body = safelyExtractBody(bytes)[0]; + fetchFinale(fetchParams, response); + }; + await fullyReadBody(response.body, processBody, processBodyError); + } else { + fetchFinale(fetchParams, response); + } + } + function schemeFetch(fetchParams) { + if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) { + return Promise.resolve(makeAppropriateNetworkError(fetchParams)); + } + const { request: request3 } = fetchParams; + const { protocol: scheme } = requestCurrentURL(request3); + switch (scheme) { + case "about:": { + return Promise.resolve(makeNetworkError("about scheme is not supported")); + } + case "blob:": { + if (!resolveObjectURL) { + resolveObjectURL = require("buffer").resolveObjectURL; + } + const blobURLEntry = requestCurrentURL(request3); + if (blobURLEntry.search.length !== 0) { + return Promise.resolve(makeNetworkError("NetworkError when attempting to fetch resource.")); + } + const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString()); + if (request3.method !== "GET" || !isBlobLike(blobURLEntryObject)) { + return Promise.resolve(makeNetworkError("invalid method")); + } + const bodyWithType = safelyExtractBody(blobURLEntryObject); + const body = bodyWithType[0]; + const length = isomorphicEncode(`${body.length}`); + const type = bodyWithType[1] ?? ""; + const response = makeResponse({ + statusText: "OK", + headersList: [ + ["content-length", { name: "Content-Length", value: length }], + ["content-type", { name: "Content-Type", value: type }] + ] + }); + response.body = body; + return Promise.resolve(response); + } + case "data:": { + const currentURL = requestCurrentURL(request3); + const dataURLStruct = dataURLProcessor(currentURL); + if (dataURLStruct === "failure") { + return Promise.resolve(makeNetworkError("failed to fetch the data URL")); + } + const mimeType = serializeAMimeType(dataURLStruct.mimeType); + return Promise.resolve(makeResponse({ + statusText: "OK", + headersList: [ + ["content-type", { name: "Content-Type", value: mimeType }] + ], + body: safelyExtractBody(dataURLStruct.body)[0] + })); + } + case "file:": { + return Promise.resolve(makeNetworkError("not implemented... yet...")); + } + case "http:": + case "https:": { + return httpFetch(fetchParams).catch((err) => makeNetworkError(err)); + } + default: { + return Promise.resolve(makeNetworkError("unknown scheme")); + } + } + } + function finalizeResponse(fetchParams, response) { + fetchParams.request.done = true; + if (fetchParams.processResponseDone != null) { + queueMicrotask(() => fetchParams.processResponseDone(response)); + } + } + function fetchFinale(fetchParams, response) { + if (response.type === "error") { + response.urlList = [fetchParams.request.urlList[0]]; + response.timingInfo = createOpaqueTimingInfo({ + startTime: fetchParams.timingInfo.startTime + }); + } + const processResponseEndOfBody = () => { + fetchParams.request.done = true; + if (fetchParams.processResponseEndOfBody != null) { + queueMicrotask(() => fetchParams.processResponseEndOfBody(response)); + } + }; + if (fetchParams.processResponse != null) { + queueMicrotask(() => fetchParams.processResponse(response)); + } + if (response.body == null) { + processResponseEndOfBody(); + } else { + const identityTransformAlgorithm = (chunk, controller) => { + controller.enqueue(chunk); + }; + const transformStream = new TransformStream({ + start() { + }, + transform: identityTransformAlgorithm, + flush: processResponseEndOfBody + }, { + size() { + return 1; + } + }, { + size() { + return 1; + } + }); + response.body = { stream: response.body.stream.pipeThrough(transformStream) }; + } + if (fetchParams.processResponseConsumeBody != null) { + const processBody = (nullOrBytes) => fetchParams.processResponseConsumeBody(response, nullOrBytes); + const processBodyError = (failure) => fetchParams.processResponseConsumeBody(response, failure); + if (response.body == null) { + queueMicrotask(() => processBody(null)); + } else { + return fullyReadBody(response.body, processBody, processBodyError); + } + return Promise.resolve(); + } + } + async function httpFetch(fetchParams) { + const request3 = fetchParams.request; + let response = null; + let actualResponse = null; + const timingInfo = fetchParams.timingInfo; + if (request3.serviceWorkers === "all") { + } + if (response === null) { + if (request3.redirect === "follow") { + request3.serviceWorkers = "none"; + } + actualResponse = response = await httpNetworkOrCacheFetch(fetchParams); + if (request3.responseTainting === "cors" && corsCheck(request3, response) === "failure") { + return makeNetworkError("cors failure"); + } + if (TAOCheck(request3, response) === "failure") { + request3.timingAllowFailed = true; + } + } + if ((request3.responseTainting === "opaque" || response.type === "opaque") && crossOriginResourcePolicyCheck( + request3.origin, + request3.client, + request3.destination, + actualResponse + ) === "blocked") { + return makeNetworkError("blocked"); + } + if (redirectStatusSet.has(actualResponse.status)) { + if (request3.redirect !== "manual") { + fetchParams.controller.connection.destroy(); + } + if (request3.redirect === "error") { + response = makeNetworkError("unexpected redirect"); + } else if (request3.redirect === "manual") { + response = actualResponse; + } else if (request3.redirect === "follow") { + response = await httpRedirectFetch(fetchParams, response); + } else { + assert(false); + } + } + response.timingInfo = timingInfo; + return response; + } + function httpRedirectFetch(fetchParams, response) { + const request3 = fetchParams.request; + const actualResponse = response.internalResponse ? response.internalResponse : response; + let locationURL; + try { + locationURL = responseLocationURL( + actualResponse, + requestCurrentURL(request3).hash + ); + if (locationURL == null) { + return response; + } + } catch (err) { + return Promise.resolve(makeNetworkError(err)); + } + if (!urlIsHttpHttpsScheme(locationURL)) { + return Promise.resolve(makeNetworkError("URL scheme must be a HTTP(S) scheme")); + } + if (request3.redirectCount === 20) { + return Promise.resolve(makeNetworkError("redirect count exceeded")); + } + request3.redirectCount += 1; + if (request3.mode === "cors" && (locationURL.username || locationURL.password) && !sameOrigin(request3, locationURL)) { + return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"')); + } + if (request3.responseTainting === "cors" && (locationURL.username || locationURL.password)) { + return Promise.resolve(makeNetworkError( + 'URL cannot contain credentials for request mode "cors"' + )); + } + if (actualResponse.status !== 303 && request3.body != null && request3.body.source == null) { + return Promise.resolve(makeNetworkError()); + } + if ([301, 302].includes(actualResponse.status) && request3.method === "POST" || actualResponse.status === 303 && !GET_OR_HEAD.includes(request3.method)) { + request3.method = "GET"; + request3.body = null; + for (const headerName of requestBodyHeader) { + request3.headersList.delete(headerName); + } + } + if (!sameOrigin(requestCurrentURL(request3), locationURL)) { + request3.headersList.delete("authorization"); + request3.headersList.delete("cookie"); + request3.headersList.delete("host"); + } + if (request3.body != null) { + assert(request3.body.source != null); + request3.body = safelyExtractBody(request3.body.source)[0]; + } + const timingInfo = fetchParams.timingInfo; + timingInfo.redirectEndTime = timingInfo.postRedirectStartTime = coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability); + if (timingInfo.redirectStartTime === 0) { + timingInfo.redirectStartTime = timingInfo.startTime; + } + request3.urlList.push(locationURL); + setRequestReferrerPolicyOnRedirect(request3, actualResponse); + return mainFetch(fetchParams, true); + } + async function httpNetworkOrCacheFetch(fetchParams, isAuthenticationFetch = false, isNewConnectionFetch = false) { + const request3 = fetchParams.request; + let httpFetchParams = null; + let httpRequest = null; + let response = null; + const httpCache = null; + const revalidatingFlag = false; + if (request3.window === "no-window" && request3.redirect === "error") { + httpFetchParams = fetchParams; + httpRequest = request3; + } else { + httpRequest = makeRequest(request3); + httpFetchParams = { ...fetchParams }; + httpFetchParams.request = httpRequest; + } + const includeCredentials = request3.credentials === "include" || request3.credentials === "same-origin" && request3.responseTainting === "basic"; + const contentLength = httpRequest.body ? httpRequest.body.length : null; + let contentLengthHeaderValue = null; + if (httpRequest.body == null && ["POST", "PUT"].includes(httpRequest.method)) { + contentLengthHeaderValue = "0"; + } + if (contentLength != null) { + contentLengthHeaderValue = isomorphicEncode(`${contentLength}`); + } + if (contentLengthHeaderValue != null) { + httpRequest.headersList.append("content-length", contentLengthHeaderValue); + } + if (contentLength != null && httpRequest.keepalive) { + } + if (httpRequest.referrer instanceof URL) { + httpRequest.headersList.append("referer", isomorphicEncode(httpRequest.referrer.href)); + } + appendRequestOriginHeader(httpRequest); + appendFetchMetadata(httpRequest); + if (!httpRequest.headersList.contains("user-agent")) { + httpRequest.headersList.append("user-agent", typeof esbuildDetection === "undefined" ? "undici" : "node"); + } + if (httpRequest.cache === "default" && (httpRequest.headersList.contains("if-modified-since") || httpRequest.headersList.contains("if-none-match") || httpRequest.headersList.contains("if-unmodified-since") || httpRequest.headersList.contains("if-match") || httpRequest.headersList.contains("if-range"))) { + httpRequest.cache = "no-store"; + } + if (httpRequest.cache === "no-cache" && !httpRequest.preventNoCacheCacheControlHeaderModification && !httpRequest.headersList.contains("cache-control")) { + httpRequest.headersList.append("cache-control", "max-age=0"); + } + if (httpRequest.cache === "no-store" || httpRequest.cache === "reload") { + if (!httpRequest.headersList.contains("pragma")) { + httpRequest.headersList.append("pragma", "no-cache"); + } + if (!httpRequest.headersList.contains("cache-control")) { + httpRequest.headersList.append("cache-control", "no-cache"); + } + } + if (httpRequest.headersList.contains("range")) { + httpRequest.headersList.append("accept-encoding", "identity"); + } + if (!httpRequest.headersList.contains("accept-encoding")) { + if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) { + httpRequest.headersList.append("accept-encoding", "br, gzip, deflate"); + } else { + httpRequest.headersList.append("accept-encoding", "gzip, deflate"); + } + } + httpRequest.headersList.delete("host"); + if (includeCredentials) { + } + if (httpCache == null) { + httpRequest.cache = "no-store"; + } + if (httpRequest.mode !== "no-store" && httpRequest.mode !== "reload") { + } + if (response == null) { + if (httpRequest.mode === "only-if-cached") { + return makeNetworkError("only if cached"); + } + const forwardResponse = await httpNetworkFetch( + httpFetchParams, + includeCredentials, + isNewConnectionFetch + ); + if (!safeMethodsSet.has(httpRequest.method) && forwardResponse.status >= 200 && forwardResponse.status <= 399) { + } + if (revalidatingFlag && forwardResponse.status === 304) { + } + if (response == null) { + response = forwardResponse; + } + } + response.urlList = [...httpRequest.urlList]; + if (httpRequest.headersList.contains("range")) { + response.rangeRequested = true; + } + response.requestIncludesCredentials = includeCredentials; + if (response.status === 407) { + if (request3.window === "no-window") { + return makeNetworkError(); + } + if (isCancelled(fetchParams)) { + return makeAppropriateNetworkError(fetchParams); + } + return makeNetworkError("proxy authentication required"); + } + if ( + // response’s status is 421 + response.status === 421 && // isNewConnectionFetch is false + !isNewConnectionFetch && // request’s body is null, or request’s body is non-null and request’s body’s source is non-null + (request3.body == null || request3.body.source != null) + ) { + if (isCancelled(fetchParams)) { + return makeAppropriateNetworkError(fetchParams); + } + fetchParams.controller.connection.destroy(); + response = await httpNetworkOrCacheFetch( + fetchParams, + isAuthenticationFetch, + true + ); + } + if (isAuthenticationFetch) { + } + return response; + } + async function httpNetworkFetch(fetchParams, includeCredentials = false, forceNewConnection = false) { + assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed); + fetchParams.controller.connection = { + abort: null, + destroyed: false, + destroy(err) { + var _a; + if (!this.destroyed) { + this.destroyed = true; + (_a = this.abort) == null ? void 0 : _a.call(this, err ?? new DOMException2("The operation was aborted.", "AbortError")); + } + } + }; + const request3 = fetchParams.request; + let response = null; + const timingInfo = fetchParams.timingInfo; + const httpCache = null; + if (httpCache == null) { + request3.cache = "no-store"; + } + const newConnection = forceNewConnection ? "yes" : "no"; + if (request3.mode === "websocket") { + } else { + } + let requestBody = null; + if (request3.body == null && fetchParams.processRequestEndOfBody) { + queueMicrotask(() => fetchParams.processRequestEndOfBody()); + } else if (request3.body != null) { + const processBodyChunk = async function* (bytes) { + var _a; + if (isCancelled(fetchParams)) { + return; + } + yield bytes; + (_a = fetchParams.processRequestBodyChunkLength) == null ? void 0 : _a.call(fetchParams, bytes.byteLength); + }; + const processEndOfBody = () => { + if (isCancelled(fetchParams)) { + return; + } + if (fetchParams.processRequestEndOfBody) { + fetchParams.processRequestEndOfBody(); + } + }; + const processBodyError = (e) => { + if (isCancelled(fetchParams)) { + return; + } + if (e.name === "AbortError") { + fetchParams.controller.abort(); + } else { + fetchParams.controller.terminate(e); + } + }; + requestBody = async function* () { + try { + for await (const bytes of request3.body.stream) { + yield* processBodyChunk(bytes); + } + processEndOfBody(); + } catch (err) { + processBodyError(err); + } + }(); + } + try { + const { body, status, statusText, headersList, socket } = await dispatch({ body: requestBody }); + if (socket) { + response = makeResponse({ status, statusText, headersList, socket }); + } else { + const iterator = body[Symbol.asyncIterator](); + fetchParams.controller.next = () => iterator.next(); + response = makeResponse({ status, statusText, headersList }); + } + } catch (err) { + if (err.name === "AbortError") { + fetchParams.controller.connection.destroy(); + return makeAppropriateNetworkError(fetchParams, err); + } + return makeNetworkError(err); + } + const pullAlgorithm = () => { + fetchParams.controller.resume(); + }; + const cancelAlgorithm = (reason) => { + fetchParams.controller.abort(reason); + }; + if (!ReadableStream) { + ReadableStream = require("stream/web").ReadableStream; + } + const stream = new ReadableStream( + { + async start(controller) { + fetchParams.controller.controller = controller; + }, + async pull(controller) { + await pullAlgorithm(controller); + }, + async cancel(reason) { + await cancelAlgorithm(reason); + } + }, + { + highWaterMark: 0, + size() { + return 1; + } + } + ); + response.body = { stream }; + fetchParams.controller.on("terminated", onAborted); + fetchParams.controller.resume = async () => { + while (true) { + let bytes; + let isFailure; + try { + const { done, value } = await fetchParams.controller.next(); + if (isAborted(fetchParams)) { + break; + } + bytes = done ? void 0 : value; + } catch (err) { + if (fetchParams.controller.ended && !timingInfo.encodedBodySize) { + bytes = void 0; + } else { + bytes = err; + isFailure = true; + } + } + if (bytes === void 0) { + readableStreamClose(fetchParams.controller.controller); + finalizeResponse(fetchParams, response); + return; + } + timingInfo.decodedBodySize += (bytes == null ? void 0 : bytes.byteLength) ?? 0; + if (isFailure) { + fetchParams.controller.terminate(bytes); + return; + } + fetchParams.controller.controller.enqueue(new Uint8Array(bytes)); + if (isErrored(stream)) { + fetchParams.controller.terminate(); + return; + } + if (!fetchParams.controller.controller.desiredSize) { + return; + } + } + }; + function onAborted(reason) { + if (isAborted(fetchParams)) { + response.aborted = true; + if (isReadable(stream)) { + fetchParams.controller.controller.error( + fetchParams.controller.serializedAbortReason + ); + } + } else { + if (isReadable(stream)) { + fetchParams.controller.controller.error(new TypeError("terminated", { + cause: isErrorLike(reason) ? reason : void 0 + })); + } + } + fetchParams.controller.connection.destroy(); + } + return response; + async function dispatch({ body }) { + const url = requestCurrentURL(request3); + const agent = fetchParams.controller.dispatcher; + return new Promise((resolve, reject) => agent.dispatch( + { + path: url.pathname + url.search, + origin: url.origin, + method: request3.method, + body: fetchParams.controller.dispatcher.isMockActive ? request3.body && request3.body.source : body, + headers: request3.headersList.entries, + maxRedirections: 0, + upgrade: request3.mode === "websocket" ? "websocket" : void 0 + }, + { + body: null, + abort: null, + onConnect(abort) { + const { connection } = fetchParams.controller; + if (connection.destroyed) { + abort(new DOMException2("The operation was aborted.", "AbortError")); + } else { + fetchParams.controller.on("terminated", abort); + this.abort = connection.abort = abort; + } + }, + onHeaders(status, headersList, resume, statusText) { + if (status < 200) { + return; + } + let codings = []; + let location = ""; + const headers = new Headers(); + if (Array.isArray(headersList)) { + for (let n = 0; n < headersList.length; n += 2) { + const key = headersList[n + 0].toString("latin1"); + const val = headersList[n + 1].toString("latin1"); + if (key.toLowerCase() === "content-encoding") { + codings = val.toLowerCase().split(",").map((x) => x.trim()); + } else if (key.toLowerCase() === "location") { + location = val; + } + headers.append(key, val); + } + } else { + const keys = Object.keys(headersList); + for (const key of keys) { + const val = headersList[key]; + if (key.toLowerCase() === "content-encoding") { + codings = val.toLowerCase().split(",").map((x) => x.trim()).reverse(); + } else if (key.toLowerCase() === "location") { + location = val; + } + headers.append(key, val); + } + } + this.body = new Readable({ read: resume }); + const decoders = []; + const willFollow = request3.redirect === "follow" && location && redirectStatusSet.has(status); + if (request3.method !== "HEAD" && request3.method !== "CONNECT" && !nullBodyStatus.includes(status) && !willFollow) { + for (const coding of codings) { + if (coding === "x-gzip" || coding === "gzip") { + decoders.push(zlib.createGunzip({ + // Be less strict when decoding compressed responses, since sometimes + // servers send slightly invalid responses that are still accepted + // by common browsers. + // Always using Z_SYNC_FLUSH is what cURL does. + flush: zlib.constants.Z_SYNC_FLUSH, + finishFlush: zlib.constants.Z_SYNC_FLUSH + })); + } else if (coding === "deflate") { + decoders.push(zlib.createInflate()); + } else if (coding === "br") { + decoders.push(zlib.createBrotliDecompress()); + } else { + decoders.length = 0; + break; + } + } + } + resolve({ + status, + statusText, + headersList: headers[kHeadersList], + body: decoders.length ? pipeline(this.body, ...decoders, () => { + }) : this.body.on("error", () => { + }) + }); + return true; + }, + onData(chunk) { + if (fetchParams.controller.dump) { + return; + } + const bytes = chunk; + timingInfo.encodedBodySize += bytes.byteLength; + return this.body.push(bytes); + }, + onComplete() { + if (this.abort) { + fetchParams.controller.off("terminated", this.abort); + } + fetchParams.controller.ended = true; + this.body.push(null); + }, + onError(error) { + var _a; + if (this.abort) { + fetchParams.controller.off("terminated", this.abort); + } + (_a = this.body) == null ? void 0 : _a.destroy(error); + fetchParams.controller.terminate(error); + reject(error); + }, + onUpgrade(status, headersList, socket) { + if (status !== 101) { + return; + } + const headers = new Headers(); + for (let n = 0; n < headersList.length; n += 2) { + const key = headersList[n + 0].toString("latin1"); + const val = headersList[n + 1].toString("latin1"); + headers.append(key, val); + } + resolve({ + status, + statusText: STATUS_CODES[status], + headersList: headers[kHeadersList], + socket + }); + return true; + } + } + )); + } + } + module2.exports = { + fetch, + Fetch, + fetching, + finalizeAndReportTiming + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/symbols.js +var require_symbols3 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/symbols.js"(exports2, module2) { + "use strict"; + module2.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") + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/progressevent.js +var require_progressevent = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/progressevent.js"(exports2, module2) { + "use strict"; + var { webidl } = require_webidl(); + var kState = Symbol("ProgressEvent state"); + var ProgressEvent = class _ProgressEvent extends Event { + constructor(type, eventInitDict = {}) { + type = webidl.converters.DOMString(type); + eventInitDict = webidl.converters.ProgressEventInit(eventInitDict ?? {}); + super(type, eventInitDict); + this[kState] = { + lengthComputable: eventInitDict.lengthComputable, + loaded: eventInitDict.loaded, + total: eventInitDict.total + }; + } + get lengthComputable() { + webidl.brandCheck(this, _ProgressEvent); + return this[kState].lengthComputable; + } + get loaded() { + webidl.brandCheck(this, _ProgressEvent); + return this[kState].loaded; + } + get total() { + webidl.brandCheck(this, _ProgressEvent); + return this[kState].total; + } + }; + webidl.converters.ProgressEventInit = webidl.dictionaryConverter([ + { + key: "lengthComputable", + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: "loaded", + converter: webidl.converters["unsigned long long"], + defaultValue: 0 + }, + { + key: "total", + converter: webidl.converters["unsigned long long"], + defaultValue: 0 + }, + { + key: "bubbles", + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: "cancelable", + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: "composed", + converter: webidl.converters.boolean, + defaultValue: false + } + ]); + module2.exports = { + ProgressEvent + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/encoding.js +var require_encoding = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/encoding.js"(exports2, module2) { + "use strict"; + function getEncoding(label) { + if (!label) { + return "failure"; + } + switch (label.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"; + } + } + module2.exports = { + getEncoding + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/util.js +var require_util4 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/util.js"(exports2, module2) { + "use strict"; + var { + kState, + kError, + kResult, + kAborted, + kLastProgressEventFired + } = require_symbols3(); + var { ProgressEvent } = require_progressevent(); + var { getEncoding } = require_encoding(); + var { DOMException: DOMException2 } = require_constants(); + var { serializeAMimeType, parseMIMEType } = require_dataURL(); + var { types } = require("util"); + var { StringDecoder } = require("string_decoder"); + var { btoa } = require("buffer"); + var staticPropertyDescriptors = { + enumerable: true, + writable: false, + configurable: false + }; + function readOperation(fr, blob, type, encodingName) { + if (fr[kState] === "loading") { + throw new DOMException2("Invalid state", "InvalidStateError"); + } + fr[kState] = "loading"; + fr[kResult] = null; + fr[kError] = null; + const stream = blob.stream(); + const reader = stream.getReader(); + const bytes = []; + let chunkPromise = reader.read(); + let isFirstChunk = true; + (async () => { + while (!fr[kAborted]) { + try { + const { done, value } = await chunkPromise; + if (isFirstChunk && !fr[kAborted]) { + queueMicrotask(() => { + fireAProgressEvent("loadstart", fr); + }); + } + isFirstChunk = false; + if (!done && types.isUint8Array(value)) { + bytes.push(value); + if ((fr[kLastProgressEventFired] === void 0 || Date.now() - fr[kLastProgressEventFired] >= 50) && !fr[kAborted]) { + fr[kLastProgressEventFired] = Date.now(); + queueMicrotask(() => { + fireAProgressEvent("progress", fr); + }); + } + chunkPromise = reader.read(); + } else if (done) { + queueMicrotask(() => { + fr[kState] = "done"; + try { + const result = packageData(bytes, type, blob.type, encodingName); + if (fr[kAborted]) { + return; + } + fr[kResult] = result; + fireAProgressEvent("load", fr); + } catch (error) { + fr[kError] = error; + fireAProgressEvent("error", fr); + } + if (fr[kState] !== "loading") { + fireAProgressEvent("loadend", fr); + } + }); + break; + } + } catch (error) { + if (fr[kAborted]) { + return; + } + queueMicrotask(() => { + fr[kState] = "done"; + fr[kError] = error; + fireAProgressEvent("error", fr); + if (fr[kState] !== "loading") { + fireAProgressEvent("loadend", fr); + } + }); + break; + } + } + })(); + } + function fireAProgressEvent(e, reader) { + const event = new ProgressEvent(e, { + bubbles: false, + cancelable: false + }); + reader.dispatchEvent(event); + } + function packageData(bytes, type, mimeType, encodingName) { + switch (type) { + case "DataURL": { + let dataURL = "data:"; + const parsed = parseMIMEType(mimeType || "application/octet-stream"); + if (parsed !== "failure") { + dataURL += serializeAMimeType(parsed); + } + dataURL += ";base64,"; + const decoder = new StringDecoder("latin1"); + for (const chunk of bytes) { + dataURL += btoa(decoder.write(chunk)); + } + dataURL += btoa(decoder.end()); + return dataURL; + } + case "Text": { + let encoding = "failure"; + if (encodingName) { + encoding = getEncoding(encodingName); + } + if (encoding === "failure" && mimeType) { + const type2 = parseMIMEType(mimeType); + if (type2 !== "failure") { + encoding = getEncoding(type2.parameters.get("charset")); + } + } + if (encoding === "failure") { + encoding = "UTF-8"; + } + return decode(bytes, encoding); + } + case "ArrayBuffer": { + const sequence = combineByteSequences(bytes); + return sequence.buffer; + } + case "BinaryString": { + let binaryString = ""; + const decoder = new StringDecoder("latin1"); + for (const chunk of bytes) { + binaryString += decoder.write(chunk); + } + binaryString += decoder.end(); + return binaryString; + } + } + } + function decode(ioQueue, encoding) { + const bytes = combineByteSequences(ioQueue); + const BOMEncoding = BOMSniffing(bytes); + let slice = 0; + if (BOMEncoding !== null) { + encoding = BOMEncoding; + slice = BOMEncoding === "UTF-8" ? 3 : 2; + } + const sliced = bytes.slice(slice); + return new TextDecoder(encoding).decode(sliced); + } + function BOMSniffing(ioQueue) { + const [a, b, c] = ioQueue; + if (a === 239 && b === 187 && c === 191) { + return "UTF-8"; + } else if (a === 254 && b === 255) { + return "UTF-16BE"; + } else if (a === 255 && b === 254) { + return "UTF-16LE"; + } + return null; + } + function combineByteSequences(sequences) { + const size = sequences.reduce((a, b) => { + return a + b.byteLength; + }, 0); + let offset = 0; + return sequences.reduce((a, b) => { + a.set(b, offset); + offset += b.byteLength; + return a; + }, new Uint8Array(size)); + } + module2.exports = { + staticPropertyDescriptors, + readOperation, + fireAProgressEvent + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/filereader.js +var require_filereader = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/filereader.js"(exports2, module2) { + "use strict"; + var { + staticPropertyDescriptors, + readOperation, + fireAProgressEvent + } = require_util4(); + var { + kState, + kError, + kResult, + kEvents, + kAborted + } = require_symbols3(); + var { webidl } = require_webidl(); + var { kEnumerableProperty } = require_util(); + var FileReader = class _FileReader extends EventTarget { + constructor() { + super(); + this[kState] = "empty"; + this[kResult] = null; + this[kError] = null; + this[kEvents] = { + loadend: null, + error: null, + abort: null, + load: null, + progress: null, + loadstart: null + }; + } + /** + * @see https://w3c.github.io/FileAPI/#dfn-readAsArrayBuffer + * @param {import('buffer').Blob} blob + */ + readAsArrayBuffer(blob) { + webidl.brandCheck(this, _FileReader); + webidl.argumentLengthCheck(arguments, 1, { header: "FileReader.readAsArrayBuffer" }); + blob = webidl.converters.Blob(blob, { strict: false }); + readOperation(this, blob, "ArrayBuffer"); + } + /** + * @see https://w3c.github.io/FileAPI/#readAsBinaryString + * @param {import('buffer').Blob} blob + */ + readAsBinaryString(blob) { + webidl.brandCheck(this, _FileReader); + webidl.argumentLengthCheck(arguments, 1, { header: "FileReader.readAsBinaryString" }); + blob = webidl.converters.Blob(blob, { strict: false }); + readOperation(this, blob, "BinaryString"); + } + /** + * @see https://w3c.github.io/FileAPI/#readAsDataText + * @param {import('buffer').Blob} blob + * @param {string?} encoding + */ + readAsText(blob, encoding = void 0) { + webidl.brandCheck(this, _FileReader); + webidl.argumentLengthCheck(arguments, 1, { header: "FileReader.readAsText" }); + blob = webidl.converters.Blob(blob, { strict: false }); + if (encoding !== void 0) { + encoding = webidl.converters.DOMString(encoding); + } + readOperation(this, blob, "Text", encoding); + } + /** + * @see https://w3c.github.io/FileAPI/#dfn-readAsDataURL + * @param {import('buffer').Blob} blob + */ + readAsDataURL(blob) { + webidl.brandCheck(this, _FileReader); + webidl.argumentLengthCheck(arguments, 1, { header: "FileReader.readAsDataURL" }); + blob = webidl.converters.Blob(blob, { strict: false }); + readOperation(this, blob, "DataURL"); + } + /** + * @see https://w3c.github.io/FileAPI/#dfn-abort + */ + abort() { + if (this[kState] === "empty" || this[kState] === "done") { + this[kResult] = null; + return; + } + if (this[kState] === "loading") { + this[kState] = "done"; + this[kResult] = null; + } + this[kAborted] = true; + fireAProgressEvent("abort", this); + if (this[kState] !== "loading") { + fireAProgressEvent("loadend", this); + } + } + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-readystate + */ + get readyState() { + webidl.brandCheck(this, _FileReader); + switch (this[kState]) { + case "empty": + return this.EMPTY; + case "loading": + return this.LOADING; + case "done": + return this.DONE; + } + } + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-result + */ + get result() { + webidl.brandCheck(this, _FileReader); + return this[kResult]; + } + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-error + */ + get error() { + webidl.brandCheck(this, _FileReader); + return this[kError]; + } + get onloadend() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].loadend; + } + set onloadend(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].loadend) { + this.removeEventListener("loadend", this[kEvents].loadend); + } + if (typeof fn === "function") { + this[kEvents].loadend = fn; + this.addEventListener("loadend", fn); + } else { + this[kEvents].loadend = null; + } + } + get onerror() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].error; + } + set onerror(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].error) { + this.removeEventListener("error", this[kEvents].error); + } + if (typeof fn === "function") { + this[kEvents].error = fn; + this.addEventListener("error", fn); + } else { + this[kEvents].error = null; + } + } + get onloadstart() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].loadstart; + } + set onloadstart(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].loadstart) { + this.removeEventListener("loadstart", this[kEvents].loadstart); + } + if (typeof fn === "function") { + this[kEvents].loadstart = fn; + this.addEventListener("loadstart", fn); + } else { + this[kEvents].loadstart = null; + } + } + get onprogress() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].progress; + } + set onprogress(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].progress) { + this.removeEventListener("progress", this[kEvents].progress); + } + if (typeof fn === "function") { + this[kEvents].progress = fn; + this.addEventListener("progress", fn); + } else { + this[kEvents].progress = null; + } + } + get onload() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].load; + } + set onload(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].load) { + this.removeEventListener("load", this[kEvents].load); + } + if (typeof fn === "function") { + this[kEvents].load = fn; + this.addEventListener("load", fn); + } else { + this[kEvents].load = null; + } + } + get onabort() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].abort; + } + set onabort(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].abort) { + this.removeEventListener("abort", this[kEvents].abort); + } + if (typeof fn === "function") { + this[kEvents].abort = fn; + this.addEventListener("abort", fn); + } else { + this[kEvents].abort = null; + } + } + }; + FileReader.EMPTY = FileReader.prototype.EMPTY = 0; + FileReader.LOADING = FileReader.prototype.LOADING = 1; + FileReader.DONE = FileReader.prototype.DONE = 2; + Object.defineProperties(FileReader.prototype, { + EMPTY: staticPropertyDescriptors, + LOADING: staticPropertyDescriptors, + DONE: staticPropertyDescriptors, + readAsArrayBuffer: kEnumerableProperty, + readAsBinaryString: kEnumerableProperty, + readAsText: kEnumerableProperty, + readAsDataURL: kEnumerableProperty, + abort: kEnumerableProperty, + readyState: kEnumerableProperty, + result: kEnumerableProperty, + error: kEnumerableProperty, + onloadstart: kEnumerableProperty, + onprogress: kEnumerableProperty, + onload: kEnumerableProperty, + onabort: kEnumerableProperty, + onerror: kEnumerableProperty, + onloadend: kEnumerableProperty, + [Symbol.toStringTag]: { + value: "FileReader", + writable: false, + enumerable: false, + configurable: true + } + }); + Object.defineProperties(FileReader, { + EMPTY: staticPropertyDescriptors, + LOADING: staticPropertyDescriptors, + DONE: staticPropertyDescriptors + }); + module2.exports = { + FileReader + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cache/symbols.js +var require_symbols4 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cache/symbols.js"(exports2, module2) { + "use strict"; + module2.exports = { + kConstruct: Symbol("constructable") + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cache/util.js +var require_util5 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cache/util.js"(exports2, module2) { + "use strict"; + var assert = require("assert"); + var { URLSerializer } = require_dataURL(); + var { isValidHeaderName } = require_util2(); + function urlEquals(A, B, excludeFragment = false) { + const serializedA = URLSerializer(A, excludeFragment); + const serializedB = URLSerializer(B, excludeFragment); + return serializedA === serializedB; + } + function fieldValues(header) { + assert(header !== null); + const values = []; + for (let value of header.split(",")) { + value = value.trim(); + if (!value.length) { + continue; + } else if (!isValidHeaderName(value)) { + continue; + } + values.push(value); + } + return values; + } + module2.exports = { + urlEquals, + fieldValues + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cache/cache.js +var require_cache = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cache/cache.js"(exports2, module2) { + "use strict"; + var { kConstruct } = require_symbols4(); + var { urlEquals, fieldValues: getFieldValues } = require_util5(); + var { kEnumerableProperty, isDisturbed } = require_util(); + var { kHeadersList } = require_symbols(); + var { webidl } = require_webidl(); + var { Response, cloneResponse } = require_response(); + var { Request } = require_request2(); + var { kState, kHeaders, kGuard, kRealm } = require_symbols2(); + var { fetching } = require_fetch(); + var { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = require_util2(); + var assert = require("assert"); + var { getGlobalDispatcher } = require_global2(); + var _relevantRequestResponseList, _batchCacheOperations, batchCacheOperations_fn, _queryCache, queryCache_fn, _requestMatchesCachedItem, requestMatchesCachedItem_fn; + var _Cache = class _Cache { + constructor() { + /** + * @see https://w3c.github.io/ServiceWorker/#batch-cache-operations-algorithm + * @param {CacheBatchOperation[]} operations + * @returns {requestResponseList} + */ + __privateAdd(this, _batchCacheOperations); + /** + * @see https://w3c.github.io/ServiceWorker/#query-cache + * @param {any} requestQuery + * @param {import('../../types/cache').CacheQueryOptions} options + * @param {requestResponseList} targetStorage + * @returns {requestResponseList} + */ + __privateAdd(this, _queryCache); + /** + * @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm + * @param {any} requestQuery + * @param {any} request + * @param {any | null} response + * @param {import('../../types/cache').CacheQueryOptions | undefined} options + * @returns {boolean} + */ + __privateAdd(this, _requestMatchesCachedItem); + /** + * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list + * @type {requestResponseList} + */ + __privateAdd(this, _relevantRequestResponseList, void 0); + if (arguments[0] !== kConstruct) { + webidl.illegalConstructor(); + } + __privateSet(this, _relevantRequestResponseList, arguments[1]); + } + async match(request3, options = {}) { + webidl.brandCheck(this, _Cache); + webidl.argumentLengthCheck(arguments, 1, { header: "Cache.match" }); + request3 = webidl.converters.RequestInfo(request3); + options = webidl.converters.CacheQueryOptions(options); + const p = await this.matchAll(request3, options); + if (p.length === 0) { + return; + } + return p[0]; + } + async matchAll(request3 = void 0, options = {}) { + var _a; + webidl.brandCheck(this, _Cache); + if (request3 !== void 0) + request3 = webidl.converters.RequestInfo(request3); + options = webidl.converters.CacheQueryOptions(options); + let r = null; + if (request3 !== void 0) { + if (request3 instanceof Request) { + r = request3[kState]; + if (r.method !== "GET" && !options.ignoreMethod) { + return []; + } + } else if (typeof request3 === "string") { + r = new Request(request3)[kState]; + } + } + const responses = []; + if (request3 === void 0) { + for (const requestResponse of __privateGet(this, _relevantRequestResponseList)) { + responses.push(requestResponse[1]); + } + } else { + const requestResponses = __privateMethod(this, _queryCache, queryCache_fn).call(this, r, options); + for (const requestResponse of requestResponses) { + responses.push(requestResponse[1]); + } + } + const responseList = []; + for (const response of responses) { + const responseObject = new Response(((_a = response.body) == null ? void 0 : _a.source) ?? null); + const body = responseObject[kState].body; + responseObject[kState] = response; + responseObject[kState].body = body; + responseObject[kHeaders][kHeadersList] = response.headersList; + responseObject[kHeaders][kGuard] = "immutable"; + responseList.push(responseObject); + } + return Object.freeze(responseList); + } + async add(request3) { + webidl.brandCheck(this, _Cache); + webidl.argumentLengthCheck(arguments, 1, { header: "Cache.add" }); + request3 = webidl.converters.RequestInfo(request3); + const requests = [request3]; + const responseArrayPromise = this.addAll(requests); + return await responseArrayPromise; + } + async addAll(requests) { + webidl.brandCheck(this, _Cache); + webidl.argumentLengthCheck(arguments, 1, { header: "Cache.addAll" }); + requests = webidl.converters["sequence"](requests); + const responsePromises = []; + const requestList = []; + for (const request3 of requests) { + if (typeof request3 === "string") { + continue; + } + const r = request3[kState]; + if (!urlIsHttpHttpsScheme(r.url) || r.method !== "GET") { + throw webidl.errors.exception({ + header: "Cache.addAll", + message: "Expected http/s scheme when method is not GET." + }); + } + } + const fetchControllers = []; + for (const request3 of requests) { + const r = new Request(request3)[kState]; + if (!urlIsHttpHttpsScheme(r.url)) { + throw webidl.errors.exception({ + header: "Cache.addAll", + message: "Expected http/s scheme." + }); + } + r.initiator = "fetch"; + r.destination = "subresource"; + requestList.push(r); + const responsePromise = createDeferredPromise(); + fetchControllers.push(fetching({ + request: r, + dispatcher: getGlobalDispatcher(), + processResponse(response) { + if (response.type === "error" || response.status === 206 || response.status < 200 || response.status > 299) { + responsePromise.reject(webidl.errors.exception({ + header: "Cache.addAll", + message: "Received an invalid status code or the request failed." + })); + } else if (response.headersList.contains("vary")) { + const fieldValues = getFieldValues(response.headersList.get("vary")); + for (const fieldValue of fieldValues) { + if (fieldValue === "*") { + responsePromise.reject(webidl.errors.exception({ + header: "Cache.addAll", + message: "invalid vary field value" + })); + for (const controller of fetchControllers) { + controller.abort(); + } + return; + } + } + } + }, + processResponseEndOfBody(response) { + if (response.aborted) { + responsePromise.reject(new DOMException("aborted", "AbortError")); + return; + } + responsePromise.resolve(response); + } + })); + responsePromises.push(responsePromise.promise); + } + const p = Promise.all(responsePromises); + const responses = await p; + const operations = []; + let index = 0; + for (const response of responses) { + const operation = { + type: "put", + // 7.3.2 + request: requestList[index], + // 7.3.3 + response + // 7.3.4 + }; + operations.push(operation); + index++; + } + const cacheJobPromise = createDeferredPromise(); + let errorData = null; + try { + __privateMethod(this, _batchCacheOperations, batchCacheOperations_fn).call(this, operations); + } catch (e) { + errorData = e; + } + queueMicrotask(() => { + if (errorData === null) { + cacheJobPromise.resolve(void 0); + } else { + cacheJobPromise.reject(errorData); + } + }); + return cacheJobPromise.promise; + } + async put(request3, response) { + webidl.brandCheck(this, _Cache); + webidl.argumentLengthCheck(arguments, 2, { header: "Cache.put" }); + request3 = webidl.converters.RequestInfo(request3); + response = webidl.converters.Response(response); + let innerRequest = null; + if (request3 instanceof Request) { + innerRequest = request3[kState]; + } else { + innerRequest = new Request(request3)[kState]; + } + if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== "GET") { + throw webidl.errors.exception({ + header: "Cache.put", + message: "Expected an http/s scheme when method is not GET" + }); + } + const innerResponse = response[kState]; + if (innerResponse.status === 206) { + throw webidl.errors.exception({ + header: "Cache.put", + message: "Got 206 status" + }); + } + if (innerResponse.headersList.contains("vary")) { + const fieldValues = getFieldValues(innerResponse.headersList.get("vary")); + for (const fieldValue of fieldValues) { + if (fieldValue === "*") { + throw webidl.errors.exception({ + header: "Cache.put", + message: "Got * vary field value" + }); + } + } + } + if (innerResponse.body && (isDisturbed(innerResponse.body.stream) || innerResponse.body.stream.locked)) { + throw webidl.errors.exception({ + header: "Cache.put", + message: "Response body is locked or disturbed" + }); + } + const clonedResponse = cloneResponse(innerResponse); + const bodyReadPromise = createDeferredPromise(); + if (innerResponse.body != null) { + const stream = innerResponse.body.stream; + const reader = stream.getReader(); + readAllBytes(reader).then(bodyReadPromise.resolve, bodyReadPromise.reject); + } else { + bodyReadPromise.resolve(void 0); + } + const operations = []; + const operation = { + type: "put", + // 14. + request: innerRequest, + // 15. + response: clonedResponse + // 16. + }; + operations.push(operation); + const bytes = await bodyReadPromise.promise; + if (clonedResponse.body != null) { + clonedResponse.body.source = bytes; + } + const cacheJobPromise = createDeferredPromise(); + let errorData = null; + try { + __privateMethod(this, _batchCacheOperations, batchCacheOperations_fn).call(this, operations); + } catch (e) { + errorData = e; + } + queueMicrotask(() => { + if (errorData === null) { + cacheJobPromise.resolve(); + } else { + cacheJobPromise.reject(errorData); + } + }); + return cacheJobPromise.promise; + } + async delete(request3, options = {}) { + webidl.brandCheck(this, _Cache); + webidl.argumentLengthCheck(arguments, 1, { header: "Cache.delete" }); + request3 = webidl.converters.RequestInfo(request3); + options = webidl.converters.CacheQueryOptions(options); + let r = null; + if (request3 instanceof Request) { + r = request3[kState]; + if (r.method !== "GET" && !options.ignoreMethod) { + return false; + } + } else { + assert(typeof request3 === "string"); + r = new Request(request3)[kState]; + } + const operations = []; + const operation = { + type: "delete", + request: r, + options + }; + operations.push(operation); + const cacheJobPromise = createDeferredPromise(); + let errorData = null; + let requestResponses; + try { + requestResponses = __privateMethod(this, _batchCacheOperations, batchCacheOperations_fn).call(this, operations); + } catch (e) { + errorData = e; + } + queueMicrotask(() => { + if (errorData === null) { + cacheJobPromise.resolve(!!(requestResponses == null ? void 0 : requestResponses.length)); + } else { + cacheJobPromise.reject(errorData); + } + }); + return cacheJobPromise.promise; + } + /** + * @see https://w3c.github.io/ServiceWorker/#dom-cache-keys + * @param {any} request + * @param {import('../../types/cache').CacheQueryOptions} options + * @returns {readonly Request[]} + */ + async keys(request3 = void 0, options = {}) { + webidl.brandCheck(this, _Cache); + if (request3 !== void 0) + request3 = webidl.converters.RequestInfo(request3); + options = webidl.converters.CacheQueryOptions(options); + let r = null; + if (request3 !== void 0) { + if (request3 instanceof Request) { + r = request3[kState]; + if (r.method !== "GET" && !options.ignoreMethod) { + return []; + } + } else if (typeof request3 === "string") { + r = new Request(request3)[kState]; + } + } + const promise = createDeferredPromise(); + const requests = []; + if (request3 === void 0) { + for (const requestResponse of __privateGet(this, _relevantRequestResponseList)) { + requests.push(requestResponse[0]); + } + } else { + const requestResponses = __privateMethod(this, _queryCache, queryCache_fn).call(this, r, options); + for (const requestResponse of requestResponses) { + requests.push(requestResponse[0]); + } + } + queueMicrotask(() => { + const requestList = []; + for (const request4 of requests) { + const requestObject = new Request("https://a"); + requestObject[kState] = request4; + requestObject[kHeaders][kHeadersList] = request4.headersList; + requestObject[kHeaders][kGuard] = "immutable"; + requestObject[kRealm] = request4.client; + requestList.push(requestObject); + } + promise.resolve(Object.freeze(requestList)); + }); + return promise.promise; + } + }; + _relevantRequestResponseList = new WeakMap(); + _batchCacheOperations = new WeakSet(); + batchCacheOperations_fn = function(operations) { + const cache = __privateGet(this, _relevantRequestResponseList); + const backupCache = [...cache]; + const addedItems = []; + const resultList = []; + try { + for (const operation of operations) { + if (operation.type !== "delete" && operation.type !== "put") { + throw webidl.errors.exception({ + header: "Cache.#batchCacheOperations", + message: 'operation type does not match "delete" or "put"' + }); + } + if (operation.type === "delete" && operation.response != null) { + throw webidl.errors.exception({ + header: "Cache.#batchCacheOperations", + message: "delete operation should not have an associated response" + }); + } + if (__privateMethod(this, _queryCache, queryCache_fn).call(this, operation.request, operation.options, addedItems).length) { + throw new DOMException("???", "InvalidStateError"); + } + let requestResponses; + if (operation.type === "delete") { + requestResponses = __privateMethod(this, _queryCache, queryCache_fn).call(this, operation.request, operation.options); + if (requestResponses.length === 0) { + return []; + } + for (const requestResponse of requestResponses) { + const idx = cache.indexOf(requestResponse); + assert(idx !== -1); + cache.splice(idx, 1); + } + } else if (operation.type === "put") { + if (operation.response == null) { + throw webidl.errors.exception({ + header: "Cache.#batchCacheOperations", + message: "put operation should have an associated response" + }); + } + const r = operation.request; + if (!urlIsHttpHttpsScheme(r.url)) { + throw webidl.errors.exception({ + header: "Cache.#batchCacheOperations", + message: "expected http or https scheme" + }); + } + if (r.method !== "GET") { + throw webidl.errors.exception({ + header: "Cache.#batchCacheOperations", + message: "not get method" + }); + } + if (operation.options != null) { + throw webidl.errors.exception({ + header: "Cache.#batchCacheOperations", + message: "options must not be defined" + }); + } + requestResponses = __privateMethod(this, _queryCache, queryCache_fn).call(this, operation.request); + for (const requestResponse of requestResponses) { + const idx = cache.indexOf(requestResponse); + assert(idx !== -1); + cache.splice(idx, 1); + } + cache.push([operation.request, operation.response]); + addedItems.push([operation.request, operation.response]); + } + resultList.push([operation.request, operation.response]); + } + return resultList; + } catch (e) { + __privateGet(this, _relevantRequestResponseList).length = 0; + __privateSet(this, _relevantRequestResponseList, backupCache); + throw e; + } + }; + _queryCache = new WeakSet(); + queryCache_fn = function(requestQuery, options, targetStorage) { + const resultList = []; + const storage = targetStorage ?? __privateGet(this, _relevantRequestResponseList); + for (const requestResponse of storage) { + const [cachedRequest, cachedResponse] = requestResponse; + if (__privateMethod(this, _requestMatchesCachedItem, requestMatchesCachedItem_fn).call(this, requestQuery, cachedRequest, cachedResponse, options)) { + resultList.push(requestResponse); + } + } + return resultList; + }; + _requestMatchesCachedItem = new WeakSet(); + requestMatchesCachedItem_fn = function(requestQuery, request3, response = null, options) { + const queryURL = new URL(requestQuery.url); + const cachedURL = new URL(request3.url); + if (options == null ? void 0 : options.ignoreSearch) { + cachedURL.search = ""; + queryURL.search = ""; + } + if (!urlEquals(queryURL, cachedURL, true)) { + return false; + } + if (response == null || (options == null ? void 0 : options.ignoreVary) || !response.headersList.contains("vary")) { + return true; + } + const fieldValues = getFieldValues(response.headersList.get("vary")); + for (const fieldValue of fieldValues) { + if (fieldValue === "*") { + return false; + } + const requestValue = request3.headersList.get(fieldValue); + const queryValue = requestQuery.headersList.get(fieldValue); + if (requestValue !== queryValue) { + return false; + } + } + return true; + }; + var Cache = _Cache; + Object.defineProperties(Cache.prototype, { + [Symbol.toStringTag]: { + value: "Cache", + configurable: true + }, + match: kEnumerableProperty, + matchAll: kEnumerableProperty, + add: kEnumerableProperty, + addAll: kEnumerableProperty, + put: kEnumerableProperty, + delete: kEnumerableProperty, + keys: kEnumerableProperty + }); + var cacheQueryOptionConverters = [ + { + key: "ignoreSearch", + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: "ignoreMethod", + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: "ignoreVary", + converter: webidl.converters.boolean, + defaultValue: false + } + ]; + webidl.converters.CacheQueryOptions = webidl.dictionaryConverter(cacheQueryOptionConverters); + webidl.converters.MultiCacheQueryOptions = webidl.dictionaryConverter([ + ...cacheQueryOptionConverters, + { + key: "cacheName", + converter: webidl.converters.DOMString + } + ]); + webidl.converters.Response = webidl.interfaceConverter(Response); + webidl.converters["sequence"] = webidl.sequenceConverter( + webidl.converters.RequestInfo + ); + module2.exports = { + Cache + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cache/cachestorage.js +var require_cachestorage = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cache/cachestorage.js"(exports2, module2) { + "use strict"; + var { kConstruct } = require_symbols4(); + var { Cache } = require_cache(); + var { webidl } = require_webidl(); + var { kEnumerableProperty } = require_util(); + var _caches; + var _CacheStorage = class _CacheStorage { + constructor() { + /** + * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-name-to-cache-map + * @type {Map} + */ + async has(cacheName) { + webidl.brandCheck(this, _CacheStorage); + webidl.argumentLengthCheck(arguments, 1, { header: "CacheStorage.has" }); + cacheName = webidl.converters.DOMString(cacheName); + return __privateGet(this, _caches).has(cacheName); + } + /** + * @see https://w3c.github.io/ServiceWorker/#dom-cachestorage-open + * @param {string} cacheName + * @returns {Promise} + */ + async open(cacheName) { + webidl.brandCheck(this, _CacheStorage); + webidl.argumentLengthCheck(arguments, 1, { header: "CacheStorage.open" }); + cacheName = webidl.converters.DOMString(cacheName); + if (__privateGet(this, _caches).has(cacheName)) { + const cache2 = __privateGet(this, _caches).get(cacheName); + return new Cache(kConstruct, cache2); + } + const cache = []; + __privateGet(this, _caches).set(cacheName, cache); + return new Cache(kConstruct, cache); + } + /** + * @see https://w3c.github.io/ServiceWorker/#cache-storage-delete + * @param {string} cacheName + * @returns {Promise} + */ + async delete(cacheName) { + webidl.brandCheck(this, _CacheStorage); + webidl.argumentLengthCheck(arguments, 1, { header: "CacheStorage.delete" }); + cacheName = webidl.converters.DOMString(cacheName); + return __privateGet(this, _caches).delete(cacheName); + } + /** + * @see https://w3c.github.io/ServiceWorker/#cache-storage-keys + * @returns {string[]} + */ + async keys() { + webidl.brandCheck(this, _CacheStorage); + const keys = __privateGet(this, _caches).keys(); + return [...keys]; + } + }; + _caches = new WeakMap(); + var CacheStorage = _CacheStorage; + Object.defineProperties(CacheStorage.prototype, { + [Symbol.toStringTag]: { + value: "CacheStorage", + configurable: true + }, + match: kEnumerableProperty, + has: kEnumerableProperty, + open: kEnumerableProperty, + delete: kEnumerableProperty, + keys: kEnumerableProperty + }); + module2.exports = { + CacheStorage + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cookies/constants.js +var require_constants3 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cookies/constants.js"(exports2, module2) { + "use strict"; + var maxAttributeValueSize = 1024; + var maxNameValuePairSize = 4096; + module2.exports = { + maxAttributeValueSize, + maxNameValuePairSize + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cookies/util.js +var require_util6 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cookies/util.js"(exports2, module2) { + "use strict"; + var assert = require("assert"); + var { kHeadersList } = require_symbols(); + function isCTLExcludingHtab(value) { + if (value.length === 0) { + return false; + } + for (const char of value) { + const code = char.charCodeAt(0); + if (code >= 0 || code <= 8 || (code >= 10 || code <= 31) || code === 127) { + return false; + } + } + } + function validateCookieName(name) { + for (const char of name) { + const code = char.charCodeAt(0); + if (code <= 32 || code > 127 || char === "(" || char === ")" || char === ">" || char === "<" || char === "@" || char === "," || char === ";" || char === ":" || char === "\\" || char === '"' || char === "/" || char === "[" || char === "]" || char === "?" || char === "=" || char === "{" || char === "}") { + throw new Error("Invalid cookie name"); + } + } + } + function validateCookieValue(value) { + for (const char of value) { + const code = char.charCodeAt(0); + if (code < 33 || // exclude CTLs (0-31) + code === 34 || code === 44 || code === 59 || code === 92 || code > 126) { + throw new Error("Invalid header value"); + } + } + } + function validateCookiePath(path) { + for (const char of path) { + const code = char.charCodeAt(0); + if (code < 33 || char === ";") { + throw new Error("Invalid cookie path"); + } + } + } + function validateCookieDomain(domain) { + if (domain.startsWith("-") || domain.endsWith(".") || domain.endsWith("-")) { + throw new Error("Invalid cookie domain"); + } + } + function toIMFDate(date) { + if (typeof date === "number") { + date = new Date(date); + } + const days = [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ]; + const months = [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ]; + const dayName = days[date.getUTCDay()]; + const day = date.getUTCDate().toString().padStart(2, "0"); + const month = months[date.getUTCMonth()]; + const year = date.getUTCFullYear(); + const hour = date.getUTCHours().toString().padStart(2, "0"); + const minute = date.getUTCMinutes().toString().padStart(2, "0"); + const second = date.getUTCSeconds().toString().padStart(2, "0"); + return `${dayName}, ${day} ${month} ${year} ${hour}:${minute}:${second} GMT`; + } + function validateCookieMaxAge(maxAge) { + if (maxAge < 0) { + throw new Error("Invalid cookie max-age"); + } + } + function stringify(cookie) { + if (cookie.name.length === 0) { + return null; + } + validateCookieName(cookie.name); + validateCookieValue(cookie.value); + const out = [`${cookie.name}=${cookie.value}`]; + if (cookie.name.startsWith("__Secure-")) { + cookie.secure = true; + } + if (cookie.name.startsWith("__Host-")) { + cookie.secure = true; + cookie.domain = null; + cookie.path = "/"; + } + if (cookie.secure) { + out.push("Secure"); + } + if (cookie.httpOnly) { + out.push("HttpOnly"); + } + if (typeof cookie.maxAge === "number") { + validateCookieMaxAge(cookie.maxAge); + out.push(`Max-Age=${cookie.maxAge}`); + } + if (cookie.domain) { + validateCookieDomain(cookie.domain); + out.push(`Domain=${cookie.domain}`); + } + if (cookie.path) { + validateCookiePath(cookie.path); + out.push(`Path=${cookie.path}`); + } + if (cookie.expires && cookie.expires.toString() !== "Invalid Date") { + out.push(`Expires=${toIMFDate(cookie.expires)}`); + } + if (cookie.sameSite) { + out.push(`SameSite=${cookie.sameSite}`); + } + for (const part of cookie.unparsed) { + if (!part.includes("=")) { + throw new Error("Invalid unparsed"); + } + const [key, ...value] = part.split("="); + out.push(`${key.trim()}=${value.join("=")}`); + } + return out.join("; "); + } + var kHeadersListNode; + function getHeadersList(headers) { + if (headers[kHeadersList]) { + return headers[kHeadersList]; + } + if (!kHeadersListNode) { + kHeadersListNode = Object.getOwnPropertySymbols(headers).find( + (symbol) => symbol.description === "headers list" + ); + assert(kHeadersListNode, "Headers cannot be parsed"); + } + const headersList = headers[kHeadersListNode]; + assert(headersList); + return headersList; + } + module2.exports = { + isCTLExcludingHtab, + stringify, + getHeadersList + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cookies/parse.js +var require_parse = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cookies/parse.js"(exports2, module2) { + "use strict"; + var { maxNameValuePairSize, maxAttributeValueSize } = require_constants3(); + var { isCTLExcludingHtab } = require_util6(); + var { collectASequenceOfCodePointsFast } = require_dataURL(); + var assert = require("assert"); + function parseSetCookie(header) { + if (isCTLExcludingHtab(header)) { + return null; + } + let nameValuePair = ""; + let unparsedAttributes = ""; + let name = ""; + let value = ""; + if (header.includes(";")) { + const position = { position: 0 }; + nameValuePair = collectASequenceOfCodePointsFast(";", header, position); + unparsedAttributes = header.slice(position.position); + } else { + nameValuePair = header; + } + if (!nameValuePair.includes("=")) { + value = nameValuePair; + } else { + const position = { position: 0 }; + name = collectASequenceOfCodePointsFast( + "=", + nameValuePair, + position + ); + value = nameValuePair.slice(position.position + 1); + } + name = name.trim(); + value = value.trim(); + if (name.length + value.length > maxNameValuePairSize) { + return null; + } + return { + name, + value, + ...parseUnparsedAttributes(unparsedAttributes) + }; + } + function parseUnparsedAttributes(unparsedAttributes, cookieAttributeList = {}) { + if (unparsedAttributes.length === 0) { + return cookieAttributeList; + } + assert(unparsedAttributes[0] === ";"); + unparsedAttributes = unparsedAttributes.slice(1); + let cookieAv = ""; + if (unparsedAttributes.includes(";")) { + cookieAv = collectASequenceOfCodePointsFast( + ";", + unparsedAttributes, + { position: 0 } + ); + unparsedAttributes = unparsedAttributes.slice(cookieAv.length); + } else { + cookieAv = unparsedAttributes; + unparsedAttributes = ""; + } + let attributeName = ""; + let attributeValue = ""; + if (cookieAv.includes("=")) { + const position = { position: 0 }; + attributeName = collectASequenceOfCodePointsFast( + "=", + cookieAv, + position + ); + attributeValue = cookieAv.slice(position.position + 1); + } else { + attributeName = cookieAv; + } + attributeName = attributeName.trim(); + attributeValue = attributeValue.trim(); + if (attributeValue.length > maxAttributeValueSize) { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); + } + const attributeNameLowercase = attributeName.toLowerCase(); + if (attributeNameLowercase === "expires") { + const expiryTime = new Date(attributeValue); + cookieAttributeList.expires = expiryTime; + } else if (attributeNameLowercase === "max-age") { + const charCode = attributeValue.charCodeAt(0); + if ((charCode < 48 || charCode > 57) && attributeValue[0] !== "-") { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); + } + if (!/^\d+$/.test(attributeValue)) { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); + } + const deltaSeconds = Number(attributeValue); + cookieAttributeList.maxAge = deltaSeconds; + } else if (attributeNameLowercase === "domain") { + let cookieDomain = attributeValue; + if (cookieDomain[0] === ".") { + cookieDomain = cookieDomain.slice(1); + } + cookieDomain = cookieDomain.toLowerCase(); + cookieAttributeList.domain = cookieDomain; + } else if (attributeNameLowercase === "path") { + let cookiePath = ""; + if (attributeValue.length === 0 || attributeValue[0] !== "/") { + cookiePath = "/"; + } else { + cookiePath = attributeValue; + } + cookieAttributeList.path = cookiePath; + } else if (attributeNameLowercase === "secure") { + cookieAttributeList.secure = true; + } else if (attributeNameLowercase === "httponly") { + cookieAttributeList.httpOnly = true; + } else if (attributeNameLowercase === "samesite") { + let enforcement = "Default"; + const attributeValueLowercase = attributeValue.toLowerCase(); + if (attributeValueLowercase.includes("none")) { + enforcement = "None"; + } + if (attributeValueLowercase.includes("strict")) { + enforcement = "Strict"; + } + if (attributeValueLowercase.includes("lax")) { + enforcement = "Lax"; + } + cookieAttributeList.sameSite = enforcement; + } else { + cookieAttributeList.unparsed ?? (cookieAttributeList.unparsed = []); + cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`); + } + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); + } + module2.exports = { + parseSetCookie, + parseUnparsedAttributes + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cookies/index.js +var require_cookies = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cookies/index.js"(exports2, module2) { + "use strict"; + var { parseSetCookie } = require_parse(); + var { stringify, getHeadersList } = require_util6(); + var { webidl } = require_webidl(); + var { Headers } = require_headers(); + function getCookies(headers) { + webidl.argumentLengthCheck(arguments, 1, { header: "getCookies" }); + webidl.brandCheck(headers, Headers, { strict: false }); + const cookie = headers.get("cookie"); + const out = {}; + if (!cookie) { + return out; + } + for (const piece of cookie.split(";")) { + const [name, ...value] = piece.split("="); + out[name.trim()] = value.join("="); + } + return out; + } + function deleteCookie(headers, name, attributes) { + webidl.argumentLengthCheck(arguments, 2, { header: "deleteCookie" }); + webidl.brandCheck(headers, Headers, { strict: false }); + name = webidl.converters.DOMString(name); + attributes = webidl.converters.DeleteCookieAttributes(attributes); + setCookie(headers, { + name, + value: "", + expires: /* @__PURE__ */ new Date(0), + ...attributes + }); + } + function getSetCookies(headers) { + webidl.argumentLengthCheck(arguments, 1, { header: "getSetCookies" }); + webidl.brandCheck(headers, Headers, { strict: false }); + const cookies = getHeadersList(headers).cookies; + if (!cookies) { + return []; + } + return cookies.map((pair) => parseSetCookie(Array.isArray(pair) ? pair[1] : pair)); + } + function setCookie(headers, cookie) { + webidl.argumentLengthCheck(arguments, 2, { header: "setCookie" }); + webidl.brandCheck(headers, Headers, { strict: false }); + cookie = webidl.converters.Cookie(cookie); + const str = stringify(cookie); + if (str) { + headers.append("Set-Cookie", stringify(cookie)); + } + } + webidl.converters.DeleteCookieAttributes = webidl.dictionaryConverter([ + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: "path", + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: "domain", + defaultValue: null + } + ]); + webidl.converters.Cookie = webidl.dictionaryConverter([ + { + converter: webidl.converters.DOMString, + key: "name" + }, + { + converter: webidl.converters.DOMString, + key: "value" + }, + { + converter: webidl.nullableConverter((value) => { + if (typeof value === "number") { + return webidl.converters["unsigned long long"](value); + } + return new Date(value); + }), + key: "expires", + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters["long long"]), + key: "maxAge", + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: "domain", + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: "path", + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.boolean), + key: "secure", + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.boolean), + key: "httpOnly", + defaultValue: null + }, + { + converter: webidl.converters.USVString, + key: "sameSite", + allowedValues: ["Strict", "Lax", "None"] + }, + { + converter: webidl.sequenceConverter(webidl.converters.DOMString), + key: "unparsed", + defaultValue: [] + } + ]); + module2.exports = { + getCookies, + deleteCookie, + getSetCookies, + setCookie + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/constants.js +var require_constants4 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/constants.js"(exports2, module2) { + "use strict"; + var uid = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"; + var staticPropertyDescriptors = { + enumerable: true, + writable: false, + configurable: false + }; + var states = { + CONNECTING: 0, + OPEN: 1, + CLOSING: 2, + CLOSED: 3 + }; + var opcodes = { + CONTINUATION: 0, + TEXT: 1, + BINARY: 2, + CLOSE: 8, + PING: 9, + PONG: 10 + }; + var maxUnsigned16Bit = 2 ** 16 - 1; + var parserStates = { + INFO: 0, + PAYLOADLENGTH_16: 2, + PAYLOADLENGTH_64: 3, + READ_DATA: 4 + }; + var emptyBuffer = Buffer.allocUnsafe(0); + module2.exports = { + uid, + staticPropertyDescriptors, + states, + opcodes, + maxUnsigned16Bit, + parserStates, + emptyBuffer + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/symbols.js +var require_symbols5 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/symbols.js"(exports2, module2) { + "use strict"; + module2.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") + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/events.js +var require_events = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/events.js"(exports2, module2) { + "use strict"; + var { webidl } = require_webidl(); + var { kEnumerableProperty } = require_util(); + var { MessagePort } = require("worker_threads"); + var _eventInit; + var _MessageEvent = class _MessageEvent extends Event { + constructor(type, eventInitDict = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: "MessageEvent constructor" }); + type = webidl.converters.DOMString(type); + eventInitDict = webidl.converters.MessageEventInit(eventInitDict); + super(type, eventInitDict); + __privateAdd(this, _eventInit, void 0); + __privateSet(this, _eventInit, eventInitDict); + } + get data() { + webidl.brandCheck(this, _MessageEvent); + return __privateGet(this, _eventInit).data; + } + get origin() { + webidl.brandCheck(this, _MessageEvent); + return __privateGet(this, _eventInit).origin; + } + get lastEventId() { + webidl.brandCheck(this, _MessageEvent); + return __privateGet(this, _eventInit).lastEventId; + } + get source() { + webidl.brandCheck(this, _MessageEvent); + return __privateGet(this, _eventInit).source; + } + get ports() { + webidl.brandCheck(this, _MessageEvent); + if (!Object.isFrozen(__privateGet(this, _eventInit).ports)) { + Object.freeze(__privateGet(this, _eventInit).ports); + } + return __privateGet(this, _eventInit).ports; + } + initMessageEvent(type, bubbles = false, cancelable = false, data = null, origin = "", lastEventId = "", source = null, ports = []) { + webidl.brandCheck(this, _MessageEvent); + webidl.argumentLengthCheck(arguments, 1, { header: "MessageEvent.initMessageEvent" }); + return new _MessageEvent(type, { + bubbles, + cancelable, + data, + origin, + lastEventId, + source, + ports + }); + } + }; + _eventInit = new WeakMap(); + var MessageEvent = _MessageEvent; + var _eventInit2; + var _CloseEvent = class _CloseEvent extends Event { + constructor(type, eventInitDict = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: "CloseEvent constructor" }); + type = webidl.converters.DOMString(type); + eventInitDict = webidl.converters.CloseEventInit(eventInitDict); + super(type, eventInitDict); + __privateAdd(this, _eventInit2, void 0); + __privateSet(this, _eventInit2, eventInitDict); + } + get wasClean() { + webidl.brandCheck(this, _CloseEvent); + return __privateGet(this, _eventInit2).wasClean; + } + get code() { + webidl.brandCheck(this, _CloseEvent); + return __privateGet(this, _eventInit2).code; + } + get reason() { + webidl.brandCheck(this, _CloseEvent); + return __privateGet(this, _eventInit2).reason; + } + }; + _eventInit2 = new WeakMap(); + var CloseEvent = _CloseEvent; + var _eventInit3; + var _ErrorEvent = class _ErrorEvent extends Event { + constructor(type, eventInitDict) { + webidl.argumentLengthCheck(arguments, 1, { header: "ErrorEvent constructor" }); + super(type, eventInitDict); + __privateAdd(this, _eventInit3, void 0); + type = webidl.converters.DOMString(type); + eventInitDict = webidl.converters.ErrorEventInit(eventInitDict ?? {}); + __privateSet(this, _eventInit3, eventInitDict); + } + get message() { + webidl.brandCheck(this, _ErrorEvent); + return __privateGet(this, _eventInit3).message; + } + get filename() { + webidl.brandCheck(this, _ErrorEvent); + return __privateGet(this, _eventInit3).filename; + } + get lineno() { + webidl.brandCheck(this, _ErrorEvent); + return __privateGet(this, _eventInit3).lineno; + } + get colno() { + webidl.brandCheck(this, _ErrorEvent); + return __privateGet(this, _eventInit3).colno; + } + get error() { + webidl.brandCheck(this, _ErrorEvent); + return __privateGet(this, _eventInit3).error; + } + }; + _eventInit3 = new WeakMap(); + var ErrorEvent = _ErrorEvent; + Object.defineProperties(MessageEvent.prototype, { + [Symbol.toStringTag]: { + value: "MessageEvent", + configurable: true + }, + data: kEnumerableProperty, + origin: kEnumerableProperty, + lastEventId: kEnumerableProperty, + source: kEnumerableProperty, + ports: kEnumerableProperty, + initMessageEvent: kEnumerableProperty + }); + Object.defineProperties(CloseEvent.prototype, { + [Symbol.toStringTag]: { + value: "CloseEvent", + configurable: true + }, + reason: kEnumerableProperty, + code: kEnumerableProperty, + wasClean: kEnumerableProperty + }); + Object.defineProperties(ErrorEvent.prototype, { + [Symbol.toStringTag]: { + value: "ErrorEvent", + configurable: true + }, + message: kEnumerableProperty, + filename: kEnumerableProperty, + lineno: kEnumerableProperty, + colno: kEnumerableProperty, + error: kEnumerableProperty + }); + webidl.converters.MessagePort = webidl.interfaceConverter(MessagePort); + webidl.converters["sequence"] = webidl.sequenceConverter( + webidl.converters.MessagePort + ); + var eventInit = [ + { + key: "bubbles", + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: "cancelable", + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: "composed", + converter: webidl.converters.boolean, + defaultValue: false + } + ]; + webidl.converters.MessageEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: "data", + converter: webidl.converters.any, + defaultValue: null + }, + { + key: "origin", + converter: webidl.converters.USVString, + defaultValue: "" + }, + { + key: "lastEventId", + converter: webidl.converters.DOMString, + defaultValue: "" + }, + { + key: "source", + // Node doesn't implement WindowProxy or ServiceWorker, so the only + // valid value for source is a MessagePort. + converter: webidl.nullableConverter(webidl.converters.MessagePort), + defaultValue: null + }, + { + key: "ports", + converter: webidl.converters["sequence"], + get defaultValue() { + return []; + } + } + ]); + webidl.converters.CloseEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: "wasClean", + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: "code", + converter: webidl.converters["unsigned short"], + defaultValue: 0 + }, + { + key: "reason", + converter: webidl.converters.USVString, + defaultValue: "" + } + ]); + webidl.converters.ErrorEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: "message", + converter: webidl.converters.DOMString, + defaultValue: "" + }, + { + key: "filename", + converter: webidl.converters.USVString, + defaultValue: "" + }, + { + key: "lineno", + converter: webidl.converters["unsigned long"], + defaultValue: 0 + }, + { + key: "colno", + converter: webidl.converters["unsigned long"], + defaultValue: 0 + }, + { + key: "error", + converter: webidl.converters.any + } + ]); + module2.exports = { + MessageEvent, + CloseEvent, + ErrorEvent + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/util.js +var require_util7 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/util.js"(exports2, module2) { + "use strict"; + var { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = require_symbols5(); + var { states, opcodes } = require_constants4(); + var { MessageEvent, ErrorEvent } = require_events(); + function isEstablished(ws) { + return ws[kReadyState] === states.OPEN; + } + function isClosing(ws) { + return ws[kReadyState] === states.CLOSING; + } + function isClosed(ws) { + return ws[kReadyState] === states.CLOSED; + } + function fireEvent(e, target, eventConstructor = Event, eventInitDict) { + const event = new eventConstructor(e, eventInitDict); + target.dispatchEvent(event); + } + function websocketMessageReceived(ws, type, data) { + if (ws[kReadyState] !== states.OPEN) { + return; + } + let dataForEvent; + if (type === opcodes.TEXT) { + try { + dataForEvent = new TextDecoder("utf-8", { fatal: true }).decode(data); + } catch { + failWebsocketConnection(ws, "Received invalid UTF-8 in text frame."); + return; + } + } else if (type === opcodes.BINARY) { + if (ws[kBinaryType] === "blob") { + dataForEvent = new Blob([data]); + } else { + dataForEvent = new Uint8Array(data).buffer; + } + } + fireEvent("message", ws, MessageEvent, { + origin: ws[kWebSocketURL].origin, + data: dataForEvent + }); + } + function isValidSubprotocol(protocol) { + if (protocol.length === 0) { + return false; + } + for (const char of protocol) { + const code = char.charCodeAt(0); + if (code < 33 || code > 126 || char === "(" || char === ")" || char === "<" || char === ">" || char === "@" || char === "," || char === ";" || char === ":" || char === "\\" || char === '"' || char === "/" || char === "[" || char === "]" || char === "?" || char === "=" || char === "{" || char === "}" || code === 32 || // SP + code === 9) { + return false; + } + } + return true; + } + function isValidStatusCode(code) { + if (code >= 1e3 && code < 1015) { + return code !== 1004 && // reserved + code !== 1005 && // "MUST NOT be set as a status code" + code !== 1006; + } + return code >= 3e3 && code <= 4999; + } + function failWebsocketConnection(ws, reason) { + const { [kController]: controller, [kResponse]: response } = ws; + controller.abort(); + if ((response == null ? void 0 : response.socket) && !response.socket.destroyed) { + response.socket.destroy(); + } + if (reason) { + fireEvent("error", ws, ErrorEvent, { + error: new Error(reason) + }); + } + } + module2.exports = { + isEstablished, + isClosing, + isClosed, + fireEvent, + isValidSubprotocol, + isValidStatusCode, + failWebsocketConnection, + websocketMessageReceived + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/connection.js +var require_connection = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/connection.js"(exports2, module2) { + "use strict"; + var diagnosticsChannel = require("diagnostics_channel"); + var { uid, states } = require_constants4(); + var { + kReadyState, + kSentClose, + kByteParser, + kReceivedClose + } = require_symbols5(); + var { fireEvent, failWebsocketConnection } = require_util7(); + var { CloseEvent } = require_events(); + var { makeRequest } = require_request2(); + var { fetching } = require_fetch(); + var { Headers } = require_headers(); + var { getGlobalDispatcher } = require_global2(); + var { kHeadersList } = require_symbols(); + var channels = {}; + channels.open = diagnosticsChannel.channel("undici:websocket:open"); + channels.close = diagnosticsChannel.channel("undici:websocket:close"); + channels.socketError = diagnosticsChannel.channel("undici:websocket:socket_error"); + var crypto; + try { + crypto = require("crypto"); + } catch { + } + function establishWebSocketConnection(url, protocols, ws, onEstablish, options) { + const requestURL = url; + requestURL.protocol = url.protocol === "ws:" ? "http:" : "https:"; + const request3 = makeRequest({ + urlList: [requestURL], + serviceWorkers: "none", + referrer: "no-referrer", + mode: "websocket", + credentials: "include", + cache: "no-store", + redirect: "error" + }); + if (options.headers) { + const headersList = new Headers(options.headers)[kHeadersList]; + request3.headersList = headersList; + } + const keyValue = crypto.randomBytes(16).toString("base64"); + request3.headersList.append("sec-websocket-key", keyValue); + request3.headersList.append("sec-websocket-version", "13"); + for (const protocol of protocols) { + request3.headersList.append("sec-websocket-protocol", protocol); + } + const permessageDeflate = ""; + const controller = fetching({ + request: request3, + useParallelQueue: true, + dispatcher: options.dispatcher ?? getGlobalDispatcher(), + processResponse(response) { + var _a, _b; + if (response.type === "error" || response.status !== 101) { + failWebsocketConnection(ws, "Received network error or non-101 status code."); + return; + } + if (protocols.length !== 0 && !response.headersList.get("Sec-WebSocket-Protocol")) { + failWebsocketConnection(ws, "Server did not respond with sent protocols."); + return; + } + if (((_a = response.headersList.get("Upgrade")) == null ? void 0 : _a.toLowerCase()) !== "websocket") { + failWebsocketConnection(ws, 'Server did not set Upgrade header to "websocket".'); + return; + } + if (((_b = response.headersList.get("Connection")) == null ? void 0 : _b.toLowerCase()) !== "upgrade") { + failWebsocketConnection(ws, 'Server did not set Connection header to "upgrade".'); + return; + } + const secWSAccept = response.headersList.get("Sec-WebSocket-Accept"); + const digest = crypto.createHash("sha1").update(keyValue + uid).digest("base64"); + if (secWSAccept !== digest) { + failWebsocketConnection(ws, "Incorrect hash received in Sec-WebSocket-Accept header."); + return; + } + const secExtension = response.headersList.get("Sec-WebSocket-Extensions"); + if (secExtension !== null && secExtension !== permessageDeflate) { + failWebsocketConnection(ws, "Received different permessage-deflate than the one set."); + return; + } + const secProtocol = response.headersList.get("Sec-WebSocket-Protocol"); + if (secProtocol !== null && secProtocol !== request3.headersList.get("Sec-WebSocket-Protocol")) { + failWebsocketConnection(ws, "Protocol was not set in the opening handshake."); + return; + } + response.socket.on("data", onSocketData); + response.socket.on("close", onSocketClose); + response.socket.on("error", onSocketError); + if (channels.open.hasSubscribers) { + channels.open.publish({ + address: response.socket.address(), + protocol: secProtocol, + extensions: secExtension + }); + } + onEstablish(response); + } + }); + return controller; + } + function onSocketData(chunk) { + if (!this.ws[kByteParser].write(chunk)) { + this.pause(); + } + } + function onSocketClose() { + const { ws } = this; + const wasClean = ws[kSentClose] && ws[kReceivedClose]; + let code = 1005; + let reason = ""; + const result = ws[kByteParser].closingInfo; + if (result) { + code = result.code ?? 1005; + reason = result.reason; + } else if (!ws[kSentClose]) { + code = 1006; + } + ws[kReadyState] = states.CLOSED; + fireEvent("close", ws, CloseEvent, { + wasClean, + code, + reason + }); + if (channels.close.hasSubscribers) { + channels.close.publish({ + websocket: ws, + code, + reason + }); + } + } + function onSocketError(error) { + const { ws } = this; + ws[kReadyState] = states.CLOSING; + if (channels.socketError.hasSubscribers) { + channels.socketError.publish(error); + } + this.destroy(); + } + module2.exports = { + establishWebSocketConnection + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/frame.js +var require_frame = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/frame.js"(exports2, module2) { + "use strict"; + var { maxUnsigned16Bit } = require_constants4(); + var crypto; + try { + crypto = require("crypto"); + } catch { + } + var WebsocketFrameSend = class { + /** + * @param {Buffer|undefined} data + */ + constructor(data) { + this.frameData = data; + this.maskKey = crypto.randomBytes(4); + } + createFrame(opcode) { + var _a; + const bodyLength = ((_a = this.frameData) == null ? void 0 : _a.byteLength) ?? 0; + let payloadLength = bodyLength; + let offset = 6; + if (bodyLength > maxUnsigned16Bit) { + offset += 8; + payloadLength = 127; + } else if (bodyLength > 125) { + offset += 2; + payloadLength = 126; + } + const buffer = Buffer.allocUnsafe(bodyLength + offset); + buffer[0] = buffer[1] = 0; + buffer[0] |= 128; + buffer[0] = (buffer[0] & 240) + opcode; + buffer[offset - 4] = this.maskKey[0]; + buffer[offset - 3] = this.maskKey[1]; + buffer[offset - 2] = this.maskKey[2]; + buffer[offset - 1] = this.maskKey[3]; + buffer[1] = payloadLength; + if (payloadLength === 126) { + buffer.writeUInt16BE(bodyLength, 2); + } else if (payloadLength === 127) { + buffer[2] = buffer[3] = 0; + buffer.writeUIntBE(bodyLength, 4, 6); + } + buffer[1] |= 128; + for (let i = 0; i < bodyLength; i++) { + buffer[offset + i] = this.frameData[i] ^ this.maskKey[i % 4]; + } + return buffer; + } + }; + module2.exports = { + WebsocketFrameSend + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/receiver.js +var require_receiver = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/receiver.js"(exports2, module2) { + "use strict"; + var { Writable } = require("stream"); + var diagnosticsChannel = require("diagnostics_channel"); + var { parserStates, opcodes, states, emptyBuffer } = require_constants4(); + var { kReadyState, kSentClose, kResponse, kReceivedClose } = require_symbols5(); + var { isValidStatusCode, failWebsocketConnection, websocketMessageReceived } = require_util7(); + var { WebsocketFrameSend } = require_frame(); + var channels = {}; + channels.ping = diagnosticsChannel.channel("undici:websocket:ping"); + channels.pong = diagnosticsChannel.channel("undici:websocket:pong"); + var _buffers, _byteOffset, _state, _info, _fragments; + var ByteParser = class extends Writable { + constructor(ws) { + super(); + __privateAdd(this, _buffers, []); + __privateAdd(this, _byteOffset, 0); + __privateAdd(this, _state, parserStates.INFO); + __privateAdd(this, _info, {}); + __privateAdd(this, _fragments, []); + this.ws = ws; + } + /** + * @param {Buffer} chunk + * @param {() => void} callback + */ + _write(chunk, _, callback) { + __privateGet(this, _buffers).push(chunk); + __privateSet(this, _byteOffset, __privateGet(this, _byteOffset) + chunk.length); + this.run(callback); + } + /** + * Runs whenever a new chunk is received. + * Callback is called whenever there are no more chunks buffering, + * or not enough bytes are buffered to parse. + */ + run(callback) { + var _a; + while (true) { + if (__privateGet(this, _state) === parserStates.INFO) { + if (__privateGet(this, _byteOffset) < 2) { + return callback(); + } + const buffer = this.consume(2); + __privateGet(this, _info).fin = (buffer[0] & 128) !== 0; + __privateGet(this, _info).opcode = buffer[0] & 15; + (_a = __privateGet(this, _info)).originalOpcode ?? (_a.originalOpcode = __privateGet(this, _info).opcode); + __privateGet(this, _info).fragmented = !__privateGet(this, _info).fin && __privateGet(this, _info).opcode !== opcodes.CONTINUATION; + if (__privateGet(this, _info).fragmented && __privateGet(this, _info).opcode !== opcodes.BINARY && __privateGet(this, _info).opcode !== opcodes.TEXT) { + failWebsocketConnection(this.ws, "Invalid frame type was fragmented."); + return; + } + const payloadLength = buffer[1] & 127; + if (payloadLength <= 125) { + __privateGet(this, _info).payloadLength = payloadLength; + __privateSet(this, _state, parserStates.READ_DATA); + } else if (payloadLength === 126) { + __privateSet(this, _state, parserStates.PAYLOADLENGTH_16); + } else if (payloadLength === 127) { + __privateSet(this, _state, parserStates.PAYLOADLENGTH_64); + } + if (__privateGet(this, _info).fragmented && payloadLength > 125) { + failWebsocketConnection(this.ws, "Fragmented frame exceeded 125 bytes."); + return; + } else if ((__privateGet(this, _info).opcode === opcodes.PING || __privateGet(this, _info).opcode === opcodes.PONG || __privateGet(this, _info).opcode === opcodes.CLOSE) && payloadLength > 125) { + failWebsocketConnection(this.ws, "Payload length for control frame exceeded 125 bytes."); + return; + } else if (__privateGet(this, _info).opcode === opcodes.CLOSE) { + if (payloadLength === 1) { + failWebsocketConnection(this.ws, "Received close frame with a 1-byte body."); + return; + } + const body = this.consume(payloadLength); + __privateGet(this, _info).closeInfo = this.parseCloseBody(false, body); + if (!this.ws[kSentClose]) { + const body2 = Buffer.allocUnsafe(2); + body2.writeUInt16BE(__privateGet(this, _info).closeInfo.code, 0); + const closeFrame = new WebsocketFrameSend(body2); + this.ws[kResponse].socket.write( + closeFrame.createFrame(opcodes.CLOSE), + (err) => { + if (!err) { + this.ws[kSentClose] = true; + } + } + ); + } + this.ws[kReadyState] = states.CLOSING; + this.ws[kReceivedClose] = true; + this.end(); + return; + } else if (__privateGet(this, _info).opcode === opcodes.PING) { + const body = this.consume(payloadLength); + if (!this.ws[kReceivedClose]) { + const frame = new WebsocketFrameSend(body); + this.ws[kResponse].socket.write(frame.createFrame(opcodes.PONG)); + if (channels.ping.hasSubscribers) { + channels.ping.publish({ + payload: body + }); + } + } + __privateSet(this, _state, parserStates.INFO); + if (__privateGet(this, _byteOffset) > 0) { + continue; + } else { + callback(); + return; + } + } else if (__privateGet(this, _info).opcode === opcodes.PONG) { + const body = this.consume(payloadLength); + if (channels.pong.hasSubscribers) { + channels.pong.publish({ + payload: body + }); + } + if (__privateGet(this, _byteOffset) > 0) { + continue; + } else { + callback(); + return; + } + } + } else if (__privateGet(this, _state) === parserStates.PAYLOADLENGTH_16) { + if (__privateGet(this, _byteOffset) < 2) { + return callback(); + } + const buffer = this.consume(2); + __privateGet(this, _info).payloadLength = buffer.readUInt16BE(0); + __privateSet(this, _state, parserStates.READ_DATA); + } else if (__privateGet(this, _state) === parserStates.PAYLOADLENGTH_64) { + if (__privateGet(this, _byteOffset) < 8) { + return callback(); + } + const buffer = this.consume(8); + const upper = buffer.readUInt32BE(0); + if (upper > 2 ** 31 - 1) { + failWebsocketConnection(this.ws, "Received payload length > 2^31 bytes."); + return; + } + const lower = buffer.readUInt32BE(4); + __privateGet(this, _info).payloadLength = (upper << 8) + lower; + __privateSet(this, _state, parserStates.READ_DATA); + } else if (__privateGet(this, _state) === parserStates.READ_DATA) { + if (__privateGet(this, _byteOffset) < __privateGet(this, _info).payloadLength) { + return callback(); + } else if (__privateGet(this, _byteOffset) >= __privateGet(this, _info).payloadLength) { + const body = this.consume(__privateGet(this, _info).payloadLength); + __privateGet(this, _fragments).push(body); + if (!__privateGet(this, _info).fragmented || __privateGet(this, _info).fin && __privateGet(this, _info).opcode === opcodes.CONTINUATION) { + const fullMessage = Buffer.concat(__privateGet(this, _fragments)); + websocketMessageReceived(this.ws, __privateGet(this, _info).originalOpcode, fullMessage); + __privateSet(this, _info, {}); + __privateGet(this, _fragments).length = 0; + } + __privateSet(this, _state, parserStates.INFO); + } + } + if (__privateGet(this, _byteOffset) > 0) { + continue; + } else { + callback(); + break; + } + } + } + /** + * Take n bytes from the buffered Buffers + * @param {number} n + * @returns {Buffer|null} + */ + consume(n) { + if (n > __privateGet(this, _byteOffset)) { + return null; + } else if (n === 0) { + return emptyBuffer; + } + if (__privateGet(this, _buffers)[0].length === n) { + __privateSet(this, _byteOffset, __privateGet(this, _byteOffset) - __privateGet(this, _buffers)[0].length); + return __privateGet(this, _buffers).shift(); + } + const buffer = Buffer.allocUnsafe(n); + let offset = 0; + while (offset !== n) { + const next = __privateGet(this, _buffers)[0]; + const { length } = next; + if (length + offset === n) { + buffer.set(__privateGet(this, _buffers).shift(), offset); + break; + } else if (length + offset > n) { + buffer.set(next.subarray(0, n - offset), offset); + __privateGet(this, _buffers)[0] = next.subarray(n - offset); + break; + } else { + buffer.set(__privateGet(this, _buffers).shift(), offset); + offset += next.length; + } + } + __privateSet(this, _byteOffset, __privateGet(this, _byteOffset) - n); + return buffer; + } + parseCloseBody(onlyCode, data) { + let code; + if (data.length >= 2) { + code = data.readUInt16BE(0); + } + if (onlyCode) { + if (!isValidStatusCode(code)) { + return null; + } + return { code }; + } + let reason = data.subarray(2); + if (reason[0] === 239 && reason[1] === 187 && reason[2] === 191) { + reason = reason.subarray(3); + } + if (code !== void 0 && !isValidStatusCode(code)) { + return null; + } + try { + reason = new TextDecoder("utf-8", { fatal: true }).decode(reason); + } catch { + return null; + } + return { code, reason }; + } + get closingInfo() { + return __privateGet(this, _info).closeInfo; + } + }; + _buffers = new WeakMap(); + _byteOffset = new WeakMap(); + _state = new WeakMap(); + _info = new WeakMap(); + _fragments = new WeakMap(); + module2.exports = { + ByteParser + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/websocket.js +var require_websocket = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/websocket.js"(exports2, module2) { + "use strict"; + var { webidl } = require_webidl(); + var { DOMException: DOMException2 } = require_constants(); + var { URLSerializer } = require_dataURL(); + var { getGlobalOrigin } = require_global(); + var { staticPropertyDescriptors, states, opcodes, emptyBuffer } = require_constants4(); + var { + kWebSocketURL, + kReadyState, + kController, + kBinaryType, + kResponse, + kSentClose, + kByteParser + } = require_symbols5(); + var { isEstablished, isClosing, isValidSubprotocol, failWebsocketConnection, fireEvent } = require_util7(); + var { establishWebSocketConnection } = require_connection(); + var { WebsocketFrameSend } = require_frame(); + var { ByteParser } = require_receiver(); + var { kEnumerableProperty, isBlobLike } = require_util(); + var { getGlobalDispatcher } = require_global2(); + var { types } = require("util"); + var experimentalWarned = false; + var _events, _bufferedAmount, _protocol, _extensions, _onConnectionEstablished, onConnectionEstablished_fn; + var _WebSocket = class _WebSocket extends EventTarget { + /** + * @param {string} url + * @param {string|string[]} protocols + */ + constructor(url, protocols = []) { + super(); + /** + * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol + */ + __privateAdd(this, _onConnectionEstablished); + __privateAdd(this, _events, { + open: null, + error: null, + close: null, + message: null + }); + __privateAdd(this, _bufferedAmount, 0); + __privateAdd(this, _protocol, ""); + __privateAdd(this, _extensions, ""); + webidl.argumentLengthCheck(arguments, 1, { header: "WebSocket constructor" }); + if (!experimentalWarned) { + experimentalWarned = true; + process.emitWarning("WebSockets are experimental, expect them to change at any time.", { + code: "UNDICI-WS" + }); + } + const options = webidl.converters["DOMString or sequence or WebSocketInit"](protocols); + url = webidl.converters.USVString(url); + protocols = options.protocols; + const baseURL = getGlobalOrigin(); + let urlRecord; + try { + urlRecord = new URL(url, baseURL); + } catch (e) { + throw new DOMException2(e, "SyntaxError"); + } + if (urlRecord.protocol === "http:") { + urlRecord.protocol = "ws:"; + } else if (urlRecord.protocol === "https:") { + urlRecord.protocol = "wss:"; + } + if (urlRecord.protocol !== "ws:" && urlRecord.protocol !== "wss:") { + throw new DOMException2( + `Expected a ws: or wss: protocol, got ${urlRecord.protocol}`, + "SyntaxError" + ); + } + if (urlRecord.hash || urlRecord.href.endsWith("#")) { + throw new DOMException2("Got fragment", "SyntaxError"); + } + if (typeof protocols === "string") { + protocols = [protocols]; + } + if (protocols.length !== new Set(protocols.map((p) => p.toLowerCase())).size) { + throw new DOMException2("Invalid Sec-WebSocket-Protocol value", "SyntaxError"); + } + if (protocols.length > 0 && !protocols.every((p) => isValidSubprotocol(p))) { + throw new DOMException2("Invalid Sec-WebSocket-Protocol value", "SyntaxError"); + } + this[kWebSocketURL] = new URL(urlRecord.href); + this[kController] = establishWebSocketConnection( + urlRecord, + protocols, + this, + (response) => __privateMethod(this, _onConnectionEstablished, onConnectionEstablished_fn).call(this, response), + options + ); + this[kReadyState] = _WebSocket.CONNECTING; + this[kBinaryType] = "blob"; + } + /** + * @see https://websockets.spec.whatwg.org/#dom-websocket-close + * @param {number|undefined} code + * @param {string|undefined} reason + */ + close(code = void 0, reason = void 0) { + webidl.brandCheck(this, _WebSocket); + if (code !== void 0) { + code = webidl.converters["unsigned short"](code, { clamp: true }); + } + if (reason !== void 0) { + reason = webidl.converters.USVString(reason); + } + if (code !== void 0) { + if (code !== 1e3 && (code < 3e3 || code > 4999)) { + throw new DOMException2("invalid code", "InvalidAccessError"); + } + } + let reasonByteLength = 0; + if (reason !== void 0) { + reasonByteLength = Buffer.byteLength(reason); + if (reasonByteLength > 123) { + throw new DOMException2( + `Reason must be less than 123 bytes; received ${reasonByteLength}`, + "SyntaxError" + ); + } + } + if (this[kReadyState] === _WebSocket.CLOSING || this[kReadyState] === _WebSocket.CLOSED) { + } else if (!isEstablished(this)) { + failWebsocketConnection(this, "Connection was closed before it was established."); + this[kReadyState] = _WebSocket.CLOSING; + } else if (!isClosing(this)) { + const frame = new WebsocketFrameSend(); + if (code !== void 0 && reason === void 0) { + frame.frameData = Buffer.allocUnsafe(2); + frame.frameData.writeUInt16BE(code, 0); + } else if (code !== void 0 && reason !== void 0) { + frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength); + frame.frameData.writeUInt16BE(code, 0); + frame.frameData.write(reason, 2, "utf-8"); + } else { + frame.frameData = emptyBuffer; + } + const socket = this[kResponse].socket; + socket.write(frame.createFrame(opcodes.CLOSE), (err) => { + if (!err) { + this[kSentClose] = true; + } + }); + this[kReadyState] = states.CLOSING; + } else { + this[kReadyState] = _WebSocket.CLOSING; + } + } + /** + * @see https://websockets.spec.whatwg.org/#dom-websocket-send + * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data + */ + send(data) { + webidl.brandCheck(this, _WebSocket); + webidl.argumentLengthCheck(arguments, 1, { header: "WebSocket.send" }); + data = webidl.converters.WebSocketSendData(data); + if (this[kReadyState] === _WebSocket.CONNECTING) { + throw new DOMException2("Sent before connected.", "InvalidStateError"); + } + if (!isEstablished(this) || isClosing(this)) { + return; + } + const socket = this[kResponse].socket; + if (typeof data === "string") { + const value = Buffer.from(data); + const frame = new WebsocketFrameSend(value); + const buffer = frame.createFrame(opcodes.TEXT); + __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) + value.byteLength); + socket.write(buffer, () => { + __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) - value.byteLength); + }); + } else if (types.isArrayBuffer(data)) { + const value = Buffer.from(data); + const frame = new WebsocketFrameSend(value); + const buffer = frame.createFrame(opcodes.BINARY); + __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) + value.byteLength); + socket.write(buffer, () => { + __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) - value.byteLength); + }); + } else if (ArrayBuffer.isView(data)) { + const ab = Buffer.from(data, data.byteOffset, data.byteLength); + const frame = new WebsocketFrameSend(ab); + const buffer = frame.createFrame(opcodes.BINARY); + __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) + ab.byteLength); + socket.write(buffer, () => { + __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) - ab.byteLength); + }); + } else if (isBlobLike(data)) { + const frame = new WebsocketFrameSend(); + data.arrayBuffer().then((ab) => { + const value = Buffer.from(ab); + frame.frameData = value; + const buffer = frame.createFrame(opcodes.BINARY); + __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) + value.byteLength); + socket.write(buffer, () => { + __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) - value.byteLength); + }); + }); + } + } + get readyState() { + webidl.brandCheck(this, _WebSocket); + return this[kReadyState]; + } + get bufferedAmount() { + webidl.brandCheck(this, _WebSocket); + return __privateGet(this, _bufferedAmount); + } + get url() { + webidl.brandCheck(this, _WebSocket); + return URLSerializer(this[kWebSocketURL]); + } + get extensions() { + webidl.brandCheck(this, _WebSocket); + return __privateGet(this, _extensions); + } + get protocol() { + webidl.brandCheck(this, _WebSocket); + return __privateGet(this, _protocol); + } + get onopen() { + webidl.brandCheck(this, _WebSocket); + return __privateGet(this, _events).open; + } + set onopen(fn) { + webidl.brandCheck(this, _WebSocket); + if (__privateGet(this, _events).open) { + this.removeEventListener("open", __privateGet(this, _events).open); + } + if (typeof fn === "function") { + __privateGet(this, _events).open = fn; + this.addEventListener("open", fn); + } else { + __privateGet(this, _events).open = null; + } + } + get onerror() { + webidl.brandCheck(this, _WebSocket); + return __privateGet(this, _events).error; + } + set onerror(fn) { + webidl.brandCheck(this, _WebSocket); + if (__privateGet(this, _events).error) { + this.removeEventListener("error", __privateGet(this, _events).error); + } + if (typeof fn === "function") { + __privateGet(this, _events).error = fn; + this.addEventListener("error", fn); + } else { + __privateGet(this, _events).error = null; + } + } + get onclose() { + webidl.brandCheck(this, _WebSocket); + return __privateGet(this, _events).close; + } + set onclose(fn) { + webidl.brandCheck(this, _WebSocket); + if (__privateGet(this, _events).close) { + this.removeEventListener("close", __privateGet(this, _events).close); + } + if (typeof fn === "function") { + __privateGet(this, _events).close = fn; + this.addEventListener("close", fn); + } else { + __privateGet(this, _events).close = null; + } + } + get onmessage() { + webidl.brandCheck(this, _WebSocket); + return __privateGet(this, _events).message; + } + set onmessage(fn) { + webidl.brandCheck(this, _WebSocket); + if (__privateGet(this, _events).message) { + this.removeEventListener("message", __privateGet(this, _events).message); + } + if (typeof fn === "function") { + __privateGet(this, _events).message = fn; + this.addEventListener("message", fn); + } else { + __privateGet(this, _events).message = null; + } + } + get binaryType() { + webidl.brandCheck(this, _WebSocket); + return this[kBinaryType]; + } + set binaryType(type) { + webidl.brandCheck(this, _WebSocket); + if (type !== "blob" && type !== "arraybuffer") { + this[kBinaryType] = "blob"; + } else { + this[kBinaryType] = type; + } + } + }; + _events = new WeakMap(); + _bufferedAmount = new WeakMap(); + _protocol = new WeakMap(); + _extensions = new WeakMap(); + _onConnectionEstablished = new WeakSet(); + onConnectionEstablished_fn = function(response) { + this[kResponse] = response; + const parser = new ByteParser(this); + parser.on("drain", function onParserDrain() { + this.ws[kResponse].socket.resume(); + }); + response.socket.ws = this; + this[kByteParser] = parser; + this[kReadyState] = states.OPEN; + const extensions = response.headersList.get("sec-websocket-extensions"); + if (extensions !== null) { + __privateSet(this, _extensions, extensions); + } + const protocol = response.headersList.get("sec-websocket-protocol"); + if (protocol !== null) { + __privateSet(this, _protocol, protocol); + } + fireEvent("open", this); + }; + var WebSocket = _WebSocket; + WebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING; + WebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN; + WebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING; + WebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED; + Object.defineProperties(WebSocket.prototype, { + CONNECTING: staticPropertyDescriptors, + OPEN: staticPropertyDescriptors, + CLOSING: staticPropertyDescriptors, + CLOSED: staticPropertyDescriptors, + url: kEnumerableProperty, + readyState: kEnumerableProperty, + bufferedAmount: kEnumerableProperty, + onopen: kEnumerableProperty, + onerror: kEnumerableProperty, + onclose: kEnumerableProperty, + close: kEnumerableProperty, + onmessage: kEnumerableProperty, + binaryType: kEnumerableProperty, + send: kEnumerableProperty, + extensions: kEnumerableProperty, + protocol: kEnumerableProperty, + [Symbol.toStringTag]: { + value: "WebSocket", + writable: false, + enumerable: false, + configurable: true + } + }); + Object.defineProperties(WebSocket, { + CONNECTING: staticPropertyDescriptors, + OPEN: staticPropertyDescriptors, + CLOSING: staticPropertyDescriptors, + CLOSED: staticPropertyDescriptors + }); + webidl.converters["sequence"] = webidl.sequenceConverter( + webidl.converters.DOMString + ); + webidl.converters["DOMString or sequence"] = function(V) { + if (webidl.util.Type(V) === "Object" && Symbol.iterator in V) { + return webidl.converters["sequence"](V); + } + return webidl.converters.DOMString(V); + }; + webidl.converters.WebSocketInit = webidl.dictionaryConverter([ + { + key: "protocols", + converter: webidl.converters["DOMString or sequence"], + get defaultValue() { + return []; + } + }, + { + key: "dispatcher", + converter: (V) => V, + get defaultValue() { + return getGlobalDispatcher(); + } + }, + { + key: "headers", + converter: webidl.nullableConverter(webidl.converters.HeadersInit) + } + ]); + webidl.converters["DOMString or sequence or WebSocketInit"] = function(V) { + if (webidl.util.Type(V) === "Object" && !(Symbol.iterator in V)) { + return webidl.converters.WebSocketInit(V); + } + return { protocols: webidl.converters["DOMString or sequence"](V) }; + }; + webidl.converters.WebSocketSendData = function(V) { + if (webidl.util.Type(V) === "Object") { + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }); + } + if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) { + return webidl.converters.BufferSource(V); + } + } + return webidl.converters.USVString(V); + }; + module2.exports = { + WebSocket + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/index.js +var require_undici = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/index.js"(exports2, module2) { + "use strict"; + var Client = require_client(); + var Dispatcher = require_dispatcher(); + var errors = require_errors(); + var Pool = require_pool(); + var BalancedPool = require_balanced_pool(); + var Agent = require_agent(); + var util = require_util(); + var { InvalidArgumentError } = errors; + var api = require_api(); + var buildConnector = require_connect(); + var MockClient = require_mock_client(); + var MockAgent = require_mock_agent(); + var MockPool = require_mock_pool(); + var mockErrors = require_mock_errors(); + var ProxyAgent = require_proxy_agent(); + var { getGlobalDispatcher, setGlobalDispatcher } = require_global2(); + var DecoratorHandler = require_DecoratorHandler(); + var RedirectHandler = require_RedirectHandler(); + var createRedirectInterceptor = require_redirectInterceptor(); + var hasCrypto; + try { + require("crypto"); + hasCrypto = true; + } catch { + hasCrypto = false; + } + Object.assign(Dispatcher.prototype, api); + module2.exports.Dispatcher = Dispatcher; + module2.exports.Client = Client; + module2.exports.Pool = Pool; + module2.exports.BalancedPool = BalancedPool; + module2.exports.Agent = Agent; + module2.exports.ProxyAgent = ProxyAgent; + module2.exports.DecoratorHandler = DecoratorHandler; + module2.exports.RedirectHandler = RedirectHandler; + module2.exports.createRedirectInterceptor = createRedirectInterceptor; + module2.exports.buildConnector = buildConnector; + module2.exports.errors = errors; + function makeDispatcher(fn) { + return (url, opts, handler) => { + if (typeof opts === "function") { + handler = opts; + opts = null; + } + if (!url || typeof url !== "string" && typeof url !== "object" && !(url instanceof URL)) { + throw new InvalidArgumentError("invalid url"); + } + if (opts != null && typeof opts !== "object") { + throw new InvalidArgumentError("invalid opts"); + } + if (opts && opts.path != null) { + if (typeof opts.path !== "string") { + throw new InvalidArgumentError("invalid opts.path"); + } + let path = opts.path; + if (!opts.path.startsWith("/")) { + path = `/${path}`; + } + url = new URL(util.parseOrigin(url).origin + path); + } else { + if (!opts) { + opts = typeof url === "object" ? url : {}; + } + url = util.parseURL(url); + } + const { agent, dispatcher = getGlobalDispatcher() } = opts; + if (agent) { + throw new InvalidArgumentError("unsupported opts.agent. Did you mean opts.client?"); + } + return fn.call(dispatcher, { + ...opts, + origin: url.origin, + path: url.search ? `${url.pathname}${url.search}` : url.pathname, + method: opts.method || (opts.body ? "PUT" : "GET") + }, handler); + }; + } + module2.exports.setGlobalDispatcher = setGlobalDispatcher; + module2.exports.getGlobalDispatcher = getGlobalDispatcher; + if (util.nodeMajor > 16 || util.nodeMajor === 16 && util.nodeMinor >= 8) { + let fetchImpl = null; + module2.exports.fetch = async function fetch(resource) { + if (!fetchImpl) { + fetchImpl = require_fetch().fetch; + } + try { + return await fetchImpl(...arguments); + } catch (err) { + if (typeof err === "object") { + Error.captureStackTrace(err, this); + } + throw err; + } + }; + module2.exports.Headers = require_headers().Headers; + module2.exports.Response = require_response().Response; + module2.exports.Request = require_request2().Request; + module2.exports.FormData = require_formdata().FormData; + module2.exports.File = require_file().File; + module2.exports.FileReader = require_filereader().FileReader; + const { setGlobalOrigin, getGlobalOrigin } = require_global(); + module2.exports.setGlobalOrigin = setGlobalOrigin; + module2.exports.getGlobalOrigin = getGlobalOrigin; + const { CacheStorage } = require_cachestorage(); + const { kConstruct } = require_symbols4(); + module2.exports.caches = new CacheStorage(kConstruct); + } + if (util.nodeMajor >= 16) { + const { deleteCookie, getCookies, getSetCookies, setCookie } = require_cookies(); + module2.exports.deleteCookie = deleteCookie; + module2.exports.getCookies = getCookies; + module2.exports.getSetCookies = getSetCookies; + module2.exports.setCookie = setCookie; + const { parseMIMEType, serializeAMimeType } = require_dataURL(); + module2.exports.parseMIMEType = parseMIMEType; + module2.exports.serializeAMimeType = serializeAMimeType; + } + if (util.nodeMajor >= 18 && hasCrypto) { + const { WebSocket } = require_websocket(); + module2.exports.WebSocket = WebSocket; + } + module2.exports.request = makeDispatcher(api.request); + module2.exports.stream = makeDispatcher(api.stream); + module2.exports.pipeline = makeDispatcher(api.pipeline); + module2.exports.connect = makeDispatcher(api.connect); + module2.exports.upgrade = makeDispatcher(api.upgrade); + module2.exports.MockClient = MockClient; + module2.exports.MockPool = MockPool; + module2.exports.MockAgent = MockAgent; + module2.exports.mockErrors = mockErrors; + } +}); + +// src/utils/fetch.server.ts +var import_undici2 = __toESM(require_undici()); + +// src/utils/version.server.ts +var import_undici = __toESM(require_undici()); +on("onResourceStart", async (resourceName) => { + if (GetCurrentResourceName() !== resourceName) { + return; + } + await verifyCADApiVersion(); + await verifyCurrentVersion(); +}); +async function verifyCurrentVersion() { + const currentResourceVersion = GetResourceMetadata(GetCurrentResourceName(), "version"); + console.log(`Checking for updates... +Current Version: ${currentResourceVersion}`); + try { + const PACKAGE_JSON_URL = "https://raw.githubusercontent.com/SnailyCAD/fivem-integrations/main/package.json"; + const data = await (0, import_undici.request)(PACKAGE_JSON_URL).then((res) => res.body.json()); + if (data.version !== currentResourceVersion) { + console.log(` +--------------------------------------- + +[${GetCurrentResourceName()}] A new version is available: ${data.version}. +Please find the latest version at: https://github.com/SnailyCAD/fivem-integrations/releases + +---------------------------------------`); + } + } catch (err) { + } +} +async function verifyCADApiVersion() { + try { + const { data } = await cadRequest({ + path: "/", + method: "GET", + responseType: "text" + }); + if (!(data == null ? void 0 : data.includes("200 Success. Current CAD Version"))) { + console.warn(` +--------------------------------------- + +[${GetCurrentResourceName()}] Failed to verify SnailyCAD version. Please make sure the following: + +- Correct global API Token set in server.cfg as "snailycad_api_key" +- Correct SnailyCAD URL set in server.cfg as "snailycad_url" +- Your SnailyCAD instance API is running and is accessible from this server + +---------------------------------------`); + } + } catch (err) { + console.error(err); + console.warn(` +--------------------------------------- + + [${GetCurrentResourceName()}] Failed to verify SnailyCAD version. Please make sure the following: + + - Correct global API Token set in server.cfg as "snailycad_api_key" + - Correct SnailyCAD URL set in server.cfg as "snailycad_url" + - Your SnailyCAD instance API is running and is accessible from this server + +---------------------------------------`); + } +} + +// src/utils/fetch.server.ts +async function cadRequest(options) { + var _a; + const url = GetConvar("snailycad_url", "null"); + const apiKey = GetConvar("snailycad_api_key", "null"); + const isFromDispatch = options.isFromDispatch ?? true; + if (url === "null") { + console.warn("No `snailycad_url` convar was found in your server.cfg"); + return { errorMessage: "No `snailycad_url` convar was found in your server.cfg", data: null }; + } + let tokenHeader = { "snaily-cad-api-token": apiKey }; + if (((_a = options.headers) == null ? void 0 : _a.userApiToken) && typeof options.headers.userApiToken === "string") { + tokenHeader = { "snaily-cad-user-api-token": options.headers.userApiToken }; + } + try { + const response = await (0, import_undici2.request)(`${url}${options.path}`, { + method: options.method, + body: options.data ? JSON.stringify(options.data) : void 0, + headers: { + "is-from-dispatch": isFromDispatch ? "true" : void 0, + "content-type": "application/json", + ...tokenHeader + } + }); + const responseType = options.responseType ?? "json"; + const json = await response.body[responseType](); + return { data: json }; + } catch (error) { + console.error("SnailyCAD API error:", JSON.stringify(error, null, 2)); + const errorMessage = error instanceof Error ? error.message : "Unknown error"; + return { data: null, error, errorMessage }; + } +} + +// src/utils/postal/postals.json +var postals_default = [ + { + x: 2325.4345703125, + y: 5147.21484375, + code: "2000" + }, + { + x: 2151.2138671875, + y: 5166.0888671875, + code: "2001" + }, + { + x: 2059.6528320313, + y: 5105.8408203125, + code: "2002" + }, + { + x: 1932.6868896484, + y: 5103.4384765625, + code: "2003" + }, + { + x: 1874.1627197266, + y: 5058.5385742188, + code: "2004" + }, + { + x: 1790.8677978516, + y: 4980.5830078125, + code: "2005" + }, + { + x: 1722.9151611328, + y: 4922.7026367188, + code: "2006" + }, + { + x: 1618.3675537109, + y: 4869.5747070313, + code: "2007" + }, + { + x: 1720.4150390625, + y: 4869.5498046875, + code: "2008" + }, + { + x: 1626.4921875, + y: 4812.8330078125, + code: "2009" + }, + { + x: 1724.9730224609, + y: 4815.1616210938, + code: "2010" + }, + { + x: 1640.4869384766, + y: 4758.4838867188, + code: "2011" + }, + { + x: 1740.1538085938, + y: 4759.6303710938, + code: "2012" + }, + { + x: 1647.4232177734, + y: 4705.2939453125, + code: "2013" + }, + { + x: 1749.4649658203, + y: 4707.6118164063, + code: "2014" + }, + { + x: 1652.0007324219, + y: 4648.5717773438, + code: "2015" + }, + { + x: 1751.7038574219, + y: 4654.4521484375, + code: "2016" + }, + { + x: 1798.2783203125, + y: 4607.2275390625, + code: "2017" + }, + { + x: 1880.2452392578, + y: 4613.1025390625, + code: "2018" + }, + { + x: 1956.2924804688, + y: 4631.9892578125, + code: "2019" + }, + { + x: 2006.3699951172, + y: 4681.5327148438, + code: "2020" + }, + { + x: 1945.4973144531, + y: 4801.9169921875, + code: "2021" + }, + { + x: 1905.84765625, + y: 4860.9282226563, + code: "2022" + }, + { + x: 1850.8508300781, + y: 4918.7465820313, + code: "2023" + }, + { + x: 1964.7199707031, + y: 4997.796875, + code: "2024" + }, + { + x: 2037.2509765625, + y: 4908.0278320313, + code: "2025" + }, + { + x: 2195.98046875, + y: 5039.0419921875, + code: "2026" + }, + { + x: 2399.5415039063, + y: 4988.2368164063, + code: "2027" + }, + { + x: 2263.0915527344, + y: 4912.6440429688, + code: "2028" + }, + { + x: 2141.9887695313, + y: 4841.7666015625, + code: "2029" + }, + { + x: 2071.6528320313, + y: 4763.8330078125, + code: "2030" + }, + { + x: 2242.1860351563, + y: 4777.966796875, + code: "2031" + }, + { + x: 2328.8666992188, + y: 4865.3110351563, + code: "2032" + }, + { + x: 2337.6499023438, + y: 4748.4252929688, + code: "2033" + }, + { + x: 2417.2333984375, + y: 4790.8999023438, + code: "2034" + }, + { + x: 2421.2778320313, + y: 4689.322265625, + code: "2035" + }, + { + x: 2484.35546875, + y: 4735.341796875, + code: "2036" + }, + { + x: 2510.8581542969, + y: 4840.3696289063, + code: "2037" + }, + { + x: 2609.3720703125, + y: 4881.6694335938, + code: "2038" + }, + { + x: 2635.8583984375, + y: 4718.7333984375, + code: "2039" + }, + { + x: 2571.4553222656, + y: 4651.408203125, + code: "2040" + }, + { + x: 2509.4165039063, + y: 4591.1923828125, + code: "2041" + }, + { + x: 2552.4360351563, + y: 4526.2192382813, + code: "2042" + }, + { + x: 2643.8388671875, + y: 4604.1171875, + code: "2043" + }, + { + x: 2662.0444335938, + y: 4487.2250976563, + code: "2044" + }, + { + x: 2596.4248046875, + y: 4426.9912109375, + code: "2045" + }, + { + x: 2526.1025390625, + y: 4358.4770507813, + code: "2046" + }, + { + x: 2516.0109863281, + y: 4252.19921875, + code: "2047" + }, + { + x: 2432.7163085938, + y: 4130.552734375, + code: "2048" + }, + { + x: 2688.2358398438, + y: 4275.7583007813, + code: "2049" + }, + { + x: 2879.9858398438, + y: 4385.541015625, + code: "2050" + }, + { + x: 2928.888671875, + y: 4517.7216796875, + code: "2051" + }, + { + x: 2876.2612304688, + y: 4626.3110351563, + code: "2052" + }, + { + x: 2811.85546875, + y: 4745.5366210938, + code: "2053" + }, + { + x: 2774.6083984375, + y: 4863.5556640625, + code: "2054" + }, + { + x: 2731.4553222656, + y: 5025.2856445313, + code: "2055" + }, + { + x: 3051.9165039063, + y: 5011.0834960938, + code: "2056" + }, + { + x: 3318.0610351563, + y: 5191.6752929688, + code: "2057" + }, + { + x: 3392.9614257813, + y: 5463.1772460938, + code: "2058" + }, + { + x: 3751.1640625, + y: 4490.3896484375, + code: "2059" + }, + { + x: 3523.6528320313, + y: 3685.2565917969, + code: "2060" + }, + { + x: 1698.5841064453, + y: 3599.630859375, + code: "3000" + }, + { + x: 1664.0155029297, + y: 3657.4467773438, + code: "3001" + }, + { + x: 1763.7017822266, + y: 3637.3305664063, + code: "3002" + }, + { + x: 1732.3602294922, + y: 3697.5083007813, + code: "3003" + }, + { + x: 1845.0377197266, + y: 3686.875, + code: "3004" + }, + { + x: 1804.2158203125, + y: 3741.1557617188, + code: "3005" + }, + { + x: 1909.8052978516, + y: 3723.4416503906, + code: "3006" + }, + { + x: 1874.7437744141, + y: 3775.328125, + code: "3007" + }, + { + x: 1980.3048095703, + y: 3761.1333007813, + code: "3008" + }, + { + x: 1947.779296875, + y: 3821.3081054688, + code: "3009" + }, + { + x: 2068.7026367188, + y: 3803.5920410156, + code: "3010" + }, + { + x: 2032.6301269531, + y: 3863.7858886719, + code: "3011" + }, + { + x: 1915.0797119141, + y: 3900.3471679688, + code: "3012" + }, + { + x: 1811.0383300781, + y: 3910.880859375, + code: "3013" + }, + { + x: 1837.5073242188, + y: 3849.4609375, + code: "3014" + }, + { + x: 1729.4243164063, + y: 3867.1586914063, + code: "3015" + }, + { + x: 1764.1710205078, + y: 3803.3999023438, + code: "3016" + }, + { + x: 1632.4604492188, + y: 3877.7250976563, + code: "3017" + }, + { + x: 1695.5550537109, + y: 3753.7414550781, + code: "3018" + }, + { + x: 1659.4842529297, + y: 3815.0869140625, + code: "3019" + }, + { + x: 1635.1939697266, + y: 3720.60546875, + code: "3020" + }, + { + x: 1586.1025390625, + y: 3754.8356933594, + code: "3021" + }, + { + x: 1550.0340576172, + y: 3805.5637207031, + code: "3022" + }, + { + x: 1532.8271484375, + y: 3702.8420410156, + code: "3023" + }, + { + x: 1500.2799072266, + y: 3660.2998046875, + code: "3024" + }, + { + x: 1406.3410644531, + y: 3649.625, + code: "3025" + }, + { + x: 1370.5953369141, + y: 3610.6567382813, + code: "3026" + }, + { + x: 1155.3911132813, + y: 3585.2182617188, + code: "3027" + }, + { + x: 1002.1698608398, + y: 3586.970703125, + code: "3028" + }, + { + x: 890.87438964844, + y: 3664.8664550781, + code: "3029" + }, + { + x: 868.12127685547, + y: 3584.5717773438, + code: "3030" + }, + { + x: 464.05184936523, + y: 3546.1821289063, + code: "3031" + }, + { + x: 354.55065917969, + y: 3571.5322265625, + code: "3032" + }, + { + x: 12.16725730896, + y: 3624.5874023438, + code: "3033" + }, + { + x: 106.29637908936, + y: 3715.4526367188, + code: "3034" + }, + { + x: 1512.6649169922, + y: 3571.7692871094, + code: "3035" + }, + { + x: 1619.1922607422, + y: 3549.9096679688, + code: "3036" + }, + { + x: 1772.3302001953, + y: 3271.2485351563, + code: "3037" + }, + { + x: 1898.9097900391, + y: 3274.7416992188, + code: "3038" + }, + { + x: 1971.7969970703, + y: 3237.5124511719, + code: "3039" + }, + { + x: 1982.0775146484, + y: 3340.2080078125, + code: "3040" + }, + { + x: 2054.947265625, + y: 3439.3666992188, + code: "3041" + }, + { + x: 2165.5749511719, + y: 3509.5932617188, + code: "3042" + }, + { + x: 2194.1762695313, + y: 3343.0915527344, + code: "3043" + }, + { + x: 2117.1166992188, + y: 3171.2788085938, + code: "3044" + }, + { + x: 1994.0245361328, + y: 3027.2221679688, + code: "3045" + }, + { + x: 2019.6750488281, + y: 2948.1025390625, + code: "3046" + }, + { + x: 2127.9638671875, + y: 2936.8850097656, + code: "3047" + }, + { + x: 2385.0139160156, + y: 3089.1416015625, + code: "3048" + }, + { + x: 2466.7514648438, + y: 3296.2875976563, + code: "3049" + }, + { + x: 2578.60546875, + y: 3170.5209960938, + code: "3050" + }, + { + x: 2649.7263183594, + y: 3283.2431640625, + code: "3051" + }, + { + x: 2715.1831054688, + y: 3490.3386230469, + code: "3052" + }, + { + x: 2620.7888183594, + y: 2748.8625488281, + code: "3053" + }, + { + x: 2892.5708007813, + y: 2871.037109375, + code: "3054" + }, + { + x: 3092.947265625, + y: 2850.3403320313, + code: "3055" + }, + { + x: 2529.4777832031, + y: 2624.2233886719, + code: "3056" + }, + { + x: 2347.9375, + y: 2562.8107910156, + code: "3057" + }, + { + x: 2090.8237304688, + y: 2307.1806640625, + code: "3058" + }, + { + x: 2435.2250976563, + y: 2136.5595703125, + code: "3059" + }, + { + x: 2129.7290039063, + y: 1824.2932128906, + code: "3060" + }, + { + x: 2498.9165039063, + y: 1638.3122558594, + code: "3061" + }, + { + x: 2748.8806152344, + y: 1728.0220947266, + code: "3062" + }, + { + x: 2743.240234375, + y: 1360.8472900391, + code: "3063" + }, + { + x: 2411.7565917969, + y: 1215.591796875, + code: "3064" + }, + { + x: 1698.2772216797, + y: 2577.6418457031, + code: "4000" + }, + { + x: 1558.7576904297, + y: 2204.5749511719, + code: "4001" + }, + { + x: 1572.5209960938, + y: 1671.529296875, + code: "4002" + }, + { + x: 1232.7921142578, + y: 1878.6875, + code: "4003" + }, + { + x: 1115.5771484375, + y: 2102.9555664063, + code: "4004" + }, + { + x: 1126.4464111328, + y: 2505.4987792969, + code: "4005" + }, + { + x: 738.87951660156, + y: 2552.6716308594, + code: "4006" + }, + { + x: 851.88513183594, + y: 2287.615234375, + code: "4007" + }, + { + x: 979.0517578125, + y: 2060.93359375, + code: "4008" + }, + { + x: 850.06805419922, + y: 2171.275390625, + code: "4009" + }, + { + x: 248.26159667969, + y: 2579.158203125, + code: "4010" + }, + { + x: 72.049034118652, + y: 2791.0595703125, + code: "4011" + }, + { + x: -24.513399124146, + y: 2883.7233886719, + code: "4012" + }, + { + x: 171.71435546875, + y: 3051.9291992188, + code: "4013" + }, + { + x: 199.73529052734, + y: 2784.50390625, + code: "4014" + }, + { + x: 359.95733642578, + y: 2622.1733398438, + code: "4015" + }, + { + x: 393.29782104492, + y: 2578.4697265625, + code: "4016" + }, + { + x: 481.49340820313, + y: 2645.1513671875, + code: "4017" + }, + { + x: 481.83526611328, + y: 2596.1435546875, + code: "4018" + }, + { + x: 567.63238525391, + y: 2659.2497558594, + code: "4019" + }, + { + x: 596.22540283203, + y: 2766.0400390625, + code: "4020" + }, + { + x: 932.36022949219, + y: 2656.7985839844, + code: "4021" + }, + { + x: 976.32257080078, + y: 2712.8264160156, + code: "4022" + }, + { + x: 1035.6104736328, + y: 2652.38671875, + code: "4023" + }, + { + x: 1202.3509521484, + y: 2708.0361328125, + code: "4024" + }, + { + x: 1135.3509521484, + y: 2647.7917480469, + code: "4025" + }, + { + x: -432.455078125, + y: 2847.0344238281, + code: "5000" + }, + { + x: -111.16876983643, + y: 1904.4890136719, + code: "5001" + }, + { + x: -827.80084228516, + y: 1729.7996826172, + code: "5002" + }, + { + x: -1298.4808349609, + y: 2482.5209960938, + code: "5004" + }, + { + x: -1612.5933837891, + y: 2825.9462890625, + code: "5005" + }, + { + x: -2401.2626953125, + y: 3522.0424804688, + code: "5006" + }, + { + x: -1695.5712890625, + y: 2431.4914550781, + code: "5007" + }, + { + x: -1763.189453125, + y: 2228.3947753906, + code: "5008" + }, + { + x: -1912.8382568359, + y: 1929.0791015625, + code: "5009" + }, + { + x: -2059.5356445313, + y: 2296.7932128906, + code: "5010" + }, + { + x: -2556.2705078125, + y: 2323.9028320313, + code: "5011" + }, + { + x: -2583.1748046875, + y: 1905.3527832031, + code: "5012" + }, + { + x: -2798.3693847656, + y: 1436.0512695313, + code: "5013" + }, + { + x: -2614.8747558594, + y: 1119.2763671875, + code: "5014" + }, + { + x: -2127.6206054688, + y: 965.19665527344, + code: "5015" + }, + { + x: -1789.1284179688, + y: 830.56616210938, + code: "5016" + }, + { + x: -1497.2863769531, + y: 1452.0844726563, + code: "5017" + }, + { + x: -1544.8598632813, + y: 973.00732421875, + code: "5018" + }, + { + x: -794.03955078125, + y: 1043.3806152344, + code: "5019" + }, + { + x: -423.65374755859, + y: 1130.7108154297, + code: "5020" + }, + { + x: -190.8380279541, + y: 1450.0402832031, + code: "5021" + }, + { + x: 139.99778747559, + y: 1421.6665039063, + code: "5022" + }, + { + x: 808.36334228516, + y: 1729.169921875, + code: "5023" + }, + { + x: 1420.1495361328, + y: 1236.8513183594, + code: "5024" + }, + { + x: 767.54479980469, + y: 1282.3012695313, + code: "5025" + }, + { + x: 145.04937744141, + y: 1134.1402587891, + code: "5026" + }, + { + x: -3209.5334472656, + y: 1289.7377929688, + code: "5027" + }, + { + x: -3219.8818359375, + y: 1252.5125732422, + code: "5028" + }, + { + x: -3219.6066894531, + y: 1214.1319580078, + code: "5029" + }, + { + x: -3225.259765625, + y: 1180.4542236328, + code: "5030" + }, + { + x: -3231.5, + y: 1150.9360351563, + code: "5031" + }, + { + x: -3258.41015625, + y: 1107.2193603516, + code: "5032" + }, + { + x: -3159.5808105469, + y: 1115.4633789063, + code: "5033" + }, + { + x: -3181.7373046875, + y: 1054.6513671875, + code: "5034" + }, + { + x: -3265.2766113281, + y: 1080.0319824219, + code: "5035" + }, + { + x: -3268.5485839844, + y: 1050.4859619141, + code: "5036" + }, + { + x: -3267.6665039063, + y: 1017.9842529297, + code: "5037" + }, + { + x: -3271.5385742188, + y: 986.66461181641, + code: "5038" + }, + { + x: -3427.08984375, + y: 965.98327636719, + code: "5039" + }, + { + x: -3252.6755371094, + y: 912.82080078125, + code: "5040" + }, + { + x: -3049.3513183594, + y: 800.64678955078, + code: "5041" + }, + { + x: -3139.1105957031, + y: 751.76202392578, + code: "5042" + }, + { + x: -3140.0373535156, + y: 714.55914306641, + code: "5043" + }, + { + x: -3124.9997558594, + y: 679.12921142578, + code: "5044" + }, + { + x: -3104.8137207031, + y: 648.91979980469, + code: "5045" + }, + { + x: -3082.5166015625, + y: 621.79669189453, + code: "5046" + }, + { + x: -3072.2216796875, + y: 595.18688964844, + code: "5047" + }, + { + x: -3063.6931152344, + y: 564.455078125, + code: "5048" + }, + { + x: -3062.8161621094, + y: 537.88696289063, + code: "5049" + }, + { + x: -3059.60546875, + y: 510.1064453125, + code: "5050" + }, + { + x: -3068.2106933594, + y: 481.17578125, + code: "5051" + }, + { + x: -3082.7136230469, + y: 451.04525756836, + code: "5052" + }, + { + x: -3100.7553710938, + y: 401.41351318359, + code: "5053" + }, + { + x: -3115.8542480469, + y: 368.93173217773, + code: "5054" + }, + { + x: -3122.6906738281, + y: 340.56274414063, + code: "5055" + }, + { + x: -3133.6220703125, + y: 310.44152832031, + code: "5056" + }, + { + x: -3140.4401855469, + y: 279.70132446289, + code: "5057" + }, + { + x: -3137.7958984375, + y: 247.23010253906, + code: "5058" + }, + { + x: -3117.4375, + y: 215.91195678711, + code: "5059" + }, + { + x: -3084.1052246094, + y: 157.45587158203, + code: "5060" + }, + { + x: -3067.9194335938, + y: 109.04676818848, + code: "5061" + }, + { + x: -3029.8791503906, + y: 68.267807006836, + code: "5062" + }, + { + x: -2972.9401855469, + y: 34.603740692139, + code: "5063" + }, + { + x: -2881.1638183594, + y: 12.759202003479, + code: "5064" + }, + { + x: -2947.6696777344, + y: 371.97171020508, + code: "5065" + }, + { + x: -3033.5871582031, + y: 384.34530639648, + code: "5066" + }, + { + x: -2946.5361328125, + y: 401.41748046875, + code: "5067" + }, + { + x: -2941.5354003906, + y: 428.54724121094, + code: "5068" + }, + { + x: -2938.8955078125, + y: 459.24383544922, + code: "5069" + }, + { + x: -2940.3774414063, + y: 486.94250488281, + code: "5070" + }, + { + x: -2199.2092285156, + y: -389.80383300781, + code: "7000" + }, + { + x: -2116.3181152344, + y: -332.00323486328, + code: "7001" + }, + { + x: -2116.6474609375, + y: -431.80743408203, + code: "7002" + }, + { + x: -2082.7109375, + y: -254.1768951416, + code: "7003" + }, + { + x: -2048.8107910156, + y: -473.78384399414, + code: "7004" + }, + { + x: -2019.6340332031, + y: -223.5227355957, + code: "7005" + }, + { + x: -2018.7672119141, + y: -498.02963256836, + code: "7006" + }, + { + x: -1963.6116943359, + y: -266.07138061523, + code: "7007" + }, + { + x: -1984.607421875, + y: -523.46142578125, + code: "7008" + }, + { + x: -2009.7395019531, + y: -342.28518676758, + code: "7009" + }, + { + x: -1958.1031494141, + y: -548.30725097656, + code: "7010" + }, + { + x: -1884.072265625, + y: -328.76721191406, + code: "7011" + }, + { + x: -1932.2103271484, + y: -571.99481201172, + code: "7012" + }, + { + x: -1950.8552246094, + y: -386.65811157227, + code: "7013" + }, + { + x: -1903.9252929688, + y: -598.01983642578, + code: "7014" + }, + { + x: -1825.1501464844, + y: -371.97402954102, + code: "7015" + }, + { + x: -1871.4891357422, + y: -619.91717529297, + code: "7016" + }, + { + x: -1888.3256835938, + y: -430.47146606445, + code: "7017" + }, + { + x: -1852.6398925781, + y: -650.08361816406, + code: "7018" + }, + { + x: -1792.1490478516, + y: -422.84359741211, + code: "7019" + }, + { + x: -1821.3714599609, + y: -674.30865478516, + code: "7020" + }, + { + x: -1824.0679931641, + y: -477.79266357422, + code: "7021" + }, + { + x: -1781.3073730469, + y: -705.05755615234, + code: "7022" + }, + { + x: -1713.1843261719, + y: -476.66754150391, + code: "7023" + }, + { + x: -1648.576171875, + y: -516.84448242188, + code: "7024" + }, + { + x: -1686.0948486328, + y: -437.1676940918, + code: "7025" + }, + { + x: -1597.8563232422, + y: -444.87408447266, + code: "7026" + }, + { + x: -1648.9616699219, + y: -395.31716918945, + code: "7027" + }, + { + x: -1566.0848388672, + y: -403.62777709961, + code: "7028" + }, + { + x: -1611.2490234375, + y: -351.30529785156, + code: "7029" + }, + { + x: -1507.6091308594, + y: -331.92144775391, + code: "7030" + }, + { + x: -1563.4343261719, + y: -273.51312255859, + code: "7031" + }, + { + x: -1489.373046875, + y: -190.91166687012, + code: "7032" + }, + { + x: -1549.9063720703, + y: -102.99909973145, + code: "7033" + }, + { + x: -1484.7360839844, + y: -53.421825408936, + code: "7034" + }, + { + x: -1593.6586914063, + y: -46.95739364624, + code: "7035" + }, + { + x: -1485.3869628906, + y: 23.832782745361, + code: "7036" + }, + { + x: -1562.4373779297, + y: 13.172778129578, + code: "7037" + }, + { + x: -1654.2404785156, + y: 26.725975036621, + code: "7038" + }, + { + x: -1699.4086914063, + y: 65.067581176758, + code: "7039" + }, + { + x: -1622.4224853516, + y: 103.41746520996, + code: "7040" + }, + { + x: -1564.8999023438, + y: 80.378746032715, + code: "7041" + }, + { + x: -1493.7747802734, + y: 74.446685791016, + code: "7042" + }, + { + x: -1554.8959960938, + y: 137.55923461914, + code: "7043" + }, + { + x: -1487.9063720703, + y: 120.43137359619, + code: "7044" + }, + { + x: -1481.1636962891, + y: 165.26069641113, + code: "7045" + }, + { + x: -1447.2622070313, + y: 207.74937438965, + code: "7046" + }, + { + x: -1396.8343505859, + y: 272.08969116211, + code: "7047" + }, + { + x: -1311.5577392578, + y: 252.57038879395, + code: "7048" + }, + { + x: -1362.6612548828, + y: 327.51477050781, + code: "7049" + }, + { + x: -1314.5948486328, + y: 360.55511474609, + code: "7050" + }, + { + x: -1288.3446044922, + y: 314.5029296875, + code: "7051" + }, + { + x: -1243.1960449219, + y: 368.21478271484, + code: "7052" + }, + { + x: -1217.525390625, + y: 267.8522644043, + code: "7053" + }, + { + x: -1211.3543701172, + y: 321.56488037109, + code: "7054" + }, + { + x: -1133.1903076172, + y: 359.32727050781, + code: "7055" + }, + { + x: -1117.5603027344, + y: 299.68145751953, + code: "7056" + }, + { + x: -1037.6297607422, + y: 225.86000061035, + code: "7057" + }, + { + x: -1029.6843261719, + y: 157.37721252441, + code: "7058" + }, + { + x: -996.35229492188, + y: 110.71755218506, + code: "7059" + }, + { + x: -916.42034912109, + y: 103.61616516113, + code: "7060" + }, + { + x: -920.28967285156, + y: 154.36337280273, + code: "7061" + }, + { + x: -927.09112548828, + y: 199.21054077148, + code: "7062" + }, + { + x: -807.57794189453, + y: 164.95886230469, + code: "7063" + }, + { + x: -823.84216308594, + y: 107.6879196167, + code: "7064" + }, + { + x: -701.96051025391, + y: 190.87864685059, + code: "7065" + }, + { + x: -701.70788574219, + y: 145.39820861816, + code: "7066" + }, + { + x: -599.33984375, + y: 212.64114379883, + code: "7067" + }, + { + x: -600.82861328125, + y: 156.52317810059, + code: "7068" + }, + { + x: -493.72451782227, + y: 211.39082336426, + code: "7069" + }, + { + x: -498.17999267578, + y: 158.81488037109, + code: "7070" + }, + { + x: -418.12149047852, + y: 206.01795959473, + code: "7071" + }, + { + x: -419.13818359375, + y: 154.64540100098, + code: "7072" + }, + { + x: -339.17007446289, + y: 208.31494140625, + code: "7073" + }, + { + x: -342.44937133789, + y: 150.45230102539, + code: "7074" + }, + { + x: -267.19244384766, + y: 216.56059265137, + code: "7075" + }, + { + x: -269.85913085938, + y: 156.34120178223, + code: "7076" + }, + { + x: -164.54524230957, + y: 220.63507080078, + code: "7077" + }, + { + x: -170.33535766602, + y: 156.90377807617, + code: "7078" + }, + { + x: -51.261993408203, + y: 224.14115905762, + code: "7079" + }, + { + x: -59.861751556396, + y: 156.80795288086, + code: "7080" + }, + { + x: -71.413513183594, + y: 97.181373596191, + code: "7081" + }, + { + x: 3.8074636459351, + y: 47.566139221191, + code: "7082" + }, + { + x: 24.751974105835, + y: 99.49405670166, + code: "7083" + }, + { + x: 41.28279876709, + y: 148.3278503418, + code: "7084" + }, + { + x: 57.770198822021, + y: 197.98307800293, + code: "7085" + }, + { + x: 86.936210632324, + y: 272.8330078125, + code: "7086" + }, + { + x: 185.22845458984, + y: 388.5940246582, + code: "7087" + }, + { + x: 151.84634399414, + y: 320.07727050781, + code: "7088" + }, + { + x: 166.25904846191, + y: 251.57748413086, + code: "7089" + }, + { + x: 265.88671875, + y: 213.06823730469, + code: "7090" + }, + { + x: 293.73529052734, + y: 289.29541015625, + code: "7091" + }, + { + x: 310.46026611328, + y: 358.32046508789, + code: "7092" + }, + { + x: 379.85479736328, + y: 336.45932006836, + code: "7093" + }, + { + x: 363.01657104492, + y: 267.38198852539, + code: "7094" + }, + { + x: 339.67346191406, + y: 191.19873046875, + code: "7095" + }, + { + x: 422.00445556641, + y: 153.41694641113, + code: "7096" + }, + { + x: 449.39508056641, + y: 237.2190246582, + code: "7097" + }, + { + x: 517.52410888672, + y: 218.90100097656, + code: "7098" + }, + { + x: 487.09075927734, + y: 133.30479431152, + code: "7099" + }, + { + x: 579.41821289063, + y: 96.697784423828, + code: "7100" + }, + { + x: 607.43518066406, + y: 184.6509552002, + code: "7101" + }, + { + x: 709.21997070313, + y: 156.31629943848, + code: "7102" + }, + { + x: 678.79772949219, + y: 76.612144470215, + code: "7103" + }, + { + x: 587.54901123047, + y: -7.8100380897522, + code: "7104" + }, + { + x: 502.20208740234, + y: -47.399017333984, + code: "7105" + }, + { + x: 470.02700805664, + y: -118.2336807251, + code: "7106" + }, + { + x: 441.36865234375, + y: -190.85466003418, + code: "7107" + }, + { + x: 426.8782043457, + y: -250.52320861816, + code: "7108" + }, + { + x: 331.12322998047, + y: -223.47969055176, + code: "7109" + }, + { + x: 356.57424926758, + y: -160.24067687988, + code: "7110" + }, + { + x: 386.94644165039, + y: -76.430992126465, + code: "7111" + }, + { + x: 422.60900878906, + y: -16.83233833313, + code: "7112" + }, + { + x: 451.68350219727, + y: 54.277870178223, + code: "7113" + }, + { + x: 391.29364013672, + y: 71.067588806152, + code: "7114" + }, + { + x: 361.43807983398, + y: 5.528687953949, + code: "7115" + }, + { + x: 337.4909362793, + y: -54.708728790283, + code: "7116" + }, + { + x: 304.0458984375, + y: -145.77757263184, + code: "7117" + }, + { + x: 283.68252563477, + y: -198.23512268066, + code: "7118" + }, + { + x: 202.48402404785, + y: -174.63926696777, + code: "7119" + }, + { + x: 223.40191650391, + y: -113.85186767578, + code: "7120" + }, + { + x: 250.84468078613, + y: -39.525653839111, + code: "7121" + }, + { + x: 275.28668212891, + y: 33.049011230469, + code: "7122" + }, + { + x: 297.97344970703, + y: 101.52397155762, + code: "7123" + }, + { + x: 228.58941650391, + y: 126.29117584229, + code: "7124" + }, + { + x: 201.09918212891, + y: 50.693996429443, + code: "7125" + }, + { + x: 182.45341491699, + y: -9.5587949752808, + code: "7126" + }, + { + x: 147.91889953613, + y: -91.046058654785, + code: "7127" + }, + { + x: 126.35182189941, + y: -145.99638366699, + code: "7128" + }, + { + x: 46.364261627197, + y: -112.9450302124, + code: "7129" + }, + { + x: 67.301887512207, + y: -61.006088256836, + code: "7130" + }, + { + x: 95.328193664551, + y: 20.40322303772, + code: "7131" + }, + { + x: 108.54914855957, + y: 64.059242248535, + code: "7132" + }, + { + x: 127.78938293457, + y: 116.97310638428, + code: "7133" + }, + { + x: 141.61860656738, + y: 167.12309265137, + code: "7134" + }, + { + x: -8.0422210693359, + y: -24.743330001831, + code: "7135" + }, + { + x: -21.934183120728, + y: -90.271217346191, + code: "7136" + }, + { + x: -124.36614227295, + y: -49.571273803711, + code: "7137" + }, + { + x: -106.42967224121, + y: 18.787809371948, + code: "7138" + }, + { + x: -182.25309753418, + y: 59.578884124756, + code: "7139" + }, + { + x: -197.94508361816, + y: -24.859977722168, + code: "7140" + }, + { + x: -290.69509887695, + y: 8.1253080368042, + code: "7141" + }, + { + x: -282.97415161133, + y: 90.788482666016, + code: "7142" + }, + { + x: -354.13092041016, + y: 91.340026855469, + code: "7143" + }, + { + x: -353.85736083984, + y: 35.223419189453, + code: "7144" + }, + { + x: -435.06552124023, + y: 38.151237487793, + code: "7145" + }, + { + x: -434.21737670898, + y: 94.225944519043, + code: "7146" + }, + { + x: -505.97164916992, + y: 95.970291137695, + code: "7147" + }, + { + x: -506.88833618164, + y: 33.970352172852, + code: "7148" + }, + { + x: -605.18395996094, + y: 31.588443756104, + code: "7149" + }, + { + x: -604.90783691406, + y: 93.528701782227, + code: "7150" + }, + { + x: -698.51153564453, + y: 68.708045959473, + code: "7151" + }, + { + x: -691.76470947266, + y: 9.6718225479126, + code: "7152" + }, + { + x: -774.73699951172, + y: -9.2394599914551, + code: "7153" + }, + { + x: -796.29791259766, + y: 52.13858795166, + code: "7154" + }, + { + x: -914.65380859375, + y: 39.113334655762, + code: "7155" + }, + { + x: -865.41485595703, + y: -48.261569976807, + code: "7156" + }, + { + x: -1132.5535888672, + y: -204.72421264648, + code: "7157" + }, + { + x: -1226.751953125, + y: -143.95236206055, + code: "7158" + }, + { + x: -1293.2147216797, + y: -117.44091796875, + code: "7159" + }, + { + x: -1364.3817138672, + y: 51.36882019043, + code: "7160" + }, + { + x: -1361.15625, + y: -105.07413482666, + code: "7161" + }, + { + x: -1357.9561767578, + y: -183.01718139648, + code: "7162" + }, + { + x: -1240.8408203125, + y: -194.26989746094, + code: "7163" + }, + { + x: -1204.5501708984, + y: -248.015625, + code: "7164" + }, + { + x: -1278.6323242188, + y: -284.64767456055, + code: "7165" + }, + { + x: -1429.4681396484, + y: -253.36561584473, + code: "7166" + }, + { + x: -1307.0205078125, + y: -241.00469970703, + code: "7167" + }, + { + x: -1375.2297363281, + y: -329.00192260742, + code: "7168" + }, + { + x: -1459.9578857422, + y: -376.86303710938, + code: "7169" + }, + { + x: -1532.3116455078, + y: -437.10891723633, + code: "7170" + }, + { + x: -1588.7243652344, + y: -587.67156982422, + code: "7171" + }, + { + x: -1508.1793212891, + y: -526.90173339844, + code: "7172" + }, + { + x: -1406.3796386719, + y: -456.11715698242, + code: "7173" + }, + { + x: -1324.1636962891, + y: -406.97958374023, + code: "7174" + }, + { + x: -1237.5474853516, + y: -361.89862060547, + code: "7175" + }, + { + x: -1162.9831542969, + y: -321.61190795898, + code: "7176" + }, + { + x: -1085.3809814453, + y: -308.07412719727, + code: "7177" + }, + { + x: -1074.4820556641, + y: -249.66285705566, + code: "7178" + }, + { + x: -934.90258789063, + y: -178.86724853516, + code: "7179" + }, + { + x: -831.94970703125, + y: -125.18535614014, + code: "7180" + }, + { + x: -743.11566162109, + y: -75.616943359375, + code: "7181" + }, + { + x: -627.16333007813, + y: -31.379716873169, + code: "7182" + }, + { + x: -516.63244628906, + y: -29.634790420532, + code: "7183" + }, + { + x: -438.34127807617, + y: -28.469976425171, + code: "7184" + }, + { + x: -341.84225463867, + y: -60.965557098389, + code: "7185" + }, + { + x: -210.51528930664, + y: -109.40273284912, + code: "7186" + }, + { + x: -140.60443115234, + y: -129.51954650879, + code: "7187" + }, + { + x: -45.913478851318, + y: -164.96725463867, + code: "7188" + }, + { + x: 21.043941497803, + y: -190.9725189209, + code: "7189" + }, + { + x: 108.06352233887, + y: -221.10440063477, + code: "7190" + }, + { + x: 172.09213256836, + y: -242.99082946777, + code: "7191" + }, + { + x: 257.93273925781, + y: -279.00726318359, + code: "7192" + }, + { + x: 304.82440185547, + y: -295.57809448242, + code: "7193" + }, + { + x: 390.09271240234, + y: -323.34320068359, + code: "7194" + }, + { + x: 377.35684204102, + y: -358.76672363281, + code: "7195" + }, + { + x: 294.26147460938, + y: -339.58251953125, + code: "7196" + }, + { + x: 239.05592346191, + y: -321.30206298828, + code: "7197" + }, + { + x: 156.11320495605, + y: -286.52401733398, + code: "7198" + }, + { + x: 89.100494384766, + y: -264.71020507813, + code: "7199" + }, + { + x: 4.9829225540161, + y: -230.5140838623, + code: "7200" + }, + { + x: -51.424247741699, + y: -212.25173950195, + code: "7201" + }, + { + x: -147.44256591797, + y: -180.49078369141, + code: "7202" + }, + { + x: -225.07437133789, + y: -158.06991577148, + code: "7203" + }, + { + x: -347.58557128906, + y: -115.0101776123, + code: "7204" + }, + { + x: -473.03695678711, + y: -66.647735595703, + code: "7205" + }, + { + x: -616.19506835938, + y: -90.261505126953, + code: "7206" + }, + { + x: -711.53289794922, + y: -125.12683105469, + code: "7207" + }, + { + x: -801.57043457031, + y: -168.83096313477, + code: "7208" + }, + { + x: -871.07830810547, + y: -233.84226989746, + code: "7209" + }, + { + x: -985.2216796875, + y: -281.61315917969, + code: "7210" + }, + { + x: -1075.2819824219, + y: -346.12161254883, + code: "7211" + }, + { + x: -1133.4451904297, + y: -373.1533203125, + code: "7212" + }, + { + x: -1221.6993408203, + y: -396.22146606445, + code: "7213" + }, + { + x: -1291.6506347656, + y: -448.19494628906, + code: "7214" + }, + { + x: -1372.2003173828, + y: -499.12393188477, + code: "7215" + }, + { + x: -1442.7905273438, + y: -547.9931640625, + code: "7216" + }, + { + x: -1529.2775878906, + y: -612.9306640625, + code: "7217" + }, + { + x: -1468.208984375, + y: -668.4365234375, + code: "7218" + }, + { + x: -1397.7141113281, + y: -616.50567626953, + code: "7219" + }, + { + x: -1319.4672851563, + y: -570.59692382813, + code: "7220" + }, + { + x: -1236.9929199219, + y: -500.71939086914, + code: "7221" + }, + { + x: -1192.6867675781, + y: -456.6296081543, + code: "7222" + }, + { + x: -1116.26171875, + y: -437.17132568359, + code: "7223" + }, + { + x: -1038.6811523438, + y: -405.91580200195, + code: "7224" + }, + { + x: -950.45629882813, + y: -358.13793945313, + code: "7225" + }, + { + x: -863.43701171875, + y: -337.49066162109, + code: "7226" + }, + { + x: -773.43572998047, + y: -220.03509521484, + code: "7227" + }, + { + x: -683.05572509766, + y: -174.72058105469, + code: "7228" + }, + { + x: -593.42590332031, + y: -132.69073486328, + code: "7229" + }, + { + x: -434.96331787109, + y: -129.74906921387, + code: "7230" + }, + { + x: -333.77029418945, + y: -148.63935852051, + code: "7231" + }, + { + x: -229.61874389648, + y: -210.62959289551, + code: "7232" + }, + { + x: -158.52439880371, + y: -230.71984863281, + code: "7233" + }, + { + x: -85.653625488281, + y: -286.23663330078, + code: "7234" + }, + { + x: -24.609064102173, + y: -305.72967529297, + code: "7235" + }, + { + x: 65.954689025879, + y: -339.39633178711, + code: "7236" + }, + { + x: 128.22149658203, + y: -363.60174560547, + code: "7237" + }, + { + x: 214.67274475098, + y: -389.03237915039, + code: "7238" + }, + { + x: 271.01861572266, + y: -432.14071655273, + code: "7239" + }, + { + x: 200.45906066895, + y: -447.49761962891, + code: "7240" + }, + { + x: 112.20059967041, + y: -415.62548828125, + code: "7241" + }, + { + x: 39.297740936279, + y: -399.71298217773, + code: "7242" + }, + { + x: -50.179836273193, + y: -367.28509521484, + code: "7243" + }, + { + x: -102.442527771, + y: -343.09912109375, + code: "7244" + }, + { + x: -205.45635986328, + y: -308.86437988281, + code: "7245" + }, + { + x: -335.06890869141, + y: -247.51156616211, + code: "7246" + }, + { + x: -407.41165161133, + y: -173.76556396484, + code: "7247" + }, + { + x: -552.95635986328, + y: -198.59223937988, + code: "7248" + }, + { + x: -527.32592773438, + y: -246.41288757324, + code: "7249" + }, + { + x: -609.56915283203, + y: -290.55505371094, + code: "7250" + }, + { + x: -637.74108886719, + y: -238.21565246582, + code: "7251" + }, + { + x: -708.29119873047, + y: -317.93792724609, + code: "7252" + }, + { + x: -772.34887695313, + y: -376.9787902832, + code: "7253" + }, + { + x: -907.90661621094, + y: -380.63442993164, + code: "7254" + }, + { + x: -1033.8917236328, + y: -440.162109375, + code: "7255" + }, + { + x: -1117.4270019531, + y: -482.70053100586, + code: "7256" + }, + { + x: -1196.8448486328, + y: -540.54779052734, + code: "7257" + }, + { + x: -1296.7912597656, + y: -608.94848632813, + code: "7258" + }, + { + x: -1380.4765625, + y: -661.00457763672, + code: "7259" + }, + { + x: -1435.6938476563, + y: -699.41857910156, + code: "7260" + }, + { + x: -1330.3391113281, + y: -708.89611816406, + code: "7261" + }, + { + x: -1252.6789550781, + y: -665.22430419922, + code: "7262" + }, + { + x: -1178.6728515625, + y: -595.59741210938, + code: "7263" + }, + { + x: -1124.1014404297, + y: -556.05163574219, + code: "7264" + }, + { + x: -1063.0361328125, + y: -525.39495849609, + code: "7265" + }, + { + x: -994.33551025391, + y: -492.98516845703, + code: "7266" + }, + { + x: -894.89099121094, + y: -439.87539672852, + code: "7267" + }, + { + x: -790.12915039063, + y: -438.1298828125, + code: "7268" + }, + { + x: -696.00360107422, + y: -413.35885620117, + code: "7269" + }, + { + x: -576.52172851563, + y: -348.46997070313, + code: "7270" + }, + { + x: -575.54638671875, + y: -422.2868347168, + code: "7271" + }, + { + x: -467.97714233398, + y: -427.6130065918, + code: "7272" + }, + { + x: -504.89535522461, + y: -330.84494018555, + code: "7273" + }, + { + x: -447.94088745117, + y: -303.10745239258, + code: "7274" + }, + { + x: -380.36608886719, + y: -360.9977722168, + code: "7275" + }, + { + x: -374.79534912109, + y: -429.47268676758, + code: "7276" + }, + { + x: -291.27841186523, + y: -443.0768737793, + code: "7277" + }, + { + x: -121.00784301758, + y: -415.94769287109, + code: "7278" + }, + { + x: -72.945343017578, + y: -445.46435546875, + code: "7279" + }, + { + x: 51.300407409668, + y: -445.50051879883, + code: "7280" + }, + { + x: 379.78671264648, + y: -442.5491027832, + code: "7281" + }, + { + x: 571.29211425781, + y: -230.64088439941, + code: "7282" + }, + { + x: 573.90319824219, + y: -141.51860046387, + code: "7283" + }, + { + x: 684.57373046875, + y: -62.453575134277, + code: "7284" + }, + { + x: 775.15447998047, + y: 68.541107177734, + code: "7285" + }, + { + x: 751.83099365234, + y: 225.51345825195, + code: "7286" + }, + { + x: 1265.6342773438, + y: 318.17315673828, + code: "7287" + }, + { + x: 1091.7604980469, + y: 237.2815246582, + code: "7288" + }, + { + x: 1031.2438964844, + y: 153.43008422852, + code: "7289" + }, + { + x: 1132.4299316406, + y: 102.0453338623, + code: "7290" + }, + { + x: 990.43524169922, + y: 78.978652954102, + code: "7291" + }, + { + x: 951.14349365234, + y: 15.789879798889, + code: "7292" + }, + { + x: 897.08648681641, + y: -47.410163879395, + code: "7293" + }, + { + x: 802.30731201172, + y: -129.49909973145, + code: "7294" + }, + { + x: 883.87591552734, + y: -179.1529083252, + code: "7295" + }, + { + x: 737.31951904297, + y: -303.07089233398, + code: "7296" + }, + { + x: 858.00885009766, + y: -284.80178833008, + code: "7297" + }, + { + x: 956.86846923828, + y: -228.18383789063, + code: "7298" + }, + { + x: 1004.9545288086, + y: -132.57548522949, + code: "7299" + }, + { + x: 1112.0799560547, + y: -198.71315002441, + code: "7300" + }, + { + x: 1056.8569335938, + y: -283.15243530273, + code: "7301" + }, + { + x: 1159.2609863281, + y: -309.76162719727, + code: "7302" + }, + { + x: 1106.41796875, + y: -339.31286621094, + code: "7303" + }, + { + x: 998.08197021484, + y: -368.86080932617, + code: "7304" + }, + { + x: 1025.4958496094, + y: -396.64190673828, + code: "7305" + }, + { + x: 1032.5069580078, + y: -482.85696411133, + code: "7306" + }, + { + x: 984.22222900391, + y: -421.69152832031, + code: "7307" + }, + { + x: 1004.5624389648, + y: -507.33633422852, + code: "7308" + }, + { + x: 952.30828857422, + y: -451.27035522461, + code: "7309" + }, + { + x: 961.44720458984, + y: -530.39605712891, + code: "7310" + }, + { + x: 919.19305419922, + y: -474.91271972656, + code: "7311" + }, + { + x: 920.62359619141, + y: -553.45599365234, + code: "7312" + }, + { + x: 861.27502441406, + y: -498.60314941406, + code: "7313" + }, + { + x: 837.93188476563, + y: -534.06561279297, + code: "7314" + }, + { + x: 834.6513671875, + y: -571.2861328125, + code: "7315" + }, + { + x: 868.69256591797, + y: -606.81170654297, + code: "7316" + }, + { + x: 910.16247558594, + y: -639.21429443359, + code: "7317" + }, + { + x: 984.22778320313, + y: -609.14489746094, + code: "7318" + }, + { + x: 940.15533447266, + y: -673.52618408203, + code: "7319" + }, + { + x: 962.33331298828, + y: -711.86682128906, + code: "7320" + }, + { + x: 1029.8846435547, + y: -682.97528076172, + code: "7321" + }, + { + x: 988.23333740234, + y: -743.79754638672, + code: "7322" + }, + { + x: 1059.9173583984, + y: -716.05279541016, + code: "7323" + }, + { + x: 1048.3874511719, + y: -790.47393798828, + code: "7324" + }, + { + x: 1112.9832763672, + y: -743.86700439453, + code: "7325" + }, + { + x: 1146.2985839844, + y: -792.89196777344, + code: "7326" + }, + { + x: 1151.85546875, + y: -710.85028076172, + code: "7327" + }, + { + x: 1241.865234375, + y: -712.66967773438, + code: "7328" + }, + { + x: 1302.3513183594, + y: -757.56036376953, + code: "7329" + }, + { + x: 1375.2471923828, + y: -778.2587890625, + code: "7330" + }, + { + x: 1418.5832519531, + y: -719.27124023438, + code: "7331" + }, + { + x: 1348.0096435547, + y: -695.68811035156, + code: "7332" + }, + { + x: 1243.8138427734, + y: -663.23425292969, + code: "7333" + }, + { + x: 1141.3553466797, + y: -664.12512207031, + code: "7334" + }, + { + x: 1133.3791503906, + y: -611.91491699219, + code: "7335" + }, + { + x: 1233.3999023438, + y: -624.34521484375, + code: "7336" + }, + { + x: 1130.3444824219, + y: -556.46697998047, + code: "7337" + }, + { + x: 1226.7858886719, + y: -581.15197753906, + code: "7338" + }, + { + x: 1316.2248535156, + y: -592.51257324219, + code: "7339" + }, + { + x: 1383.7846679688, + y: -620.29193115234, + code: "7340" + }, + { + x: 1404.7026367188, + y: -562.45245361328, + code: "7341" + }, + { + x: 1347.1457519531, + y: -532.98547363281, + code: "7342" + }, + { + x: 1235.8304443359, + y: -493.45098876953, + code: "7343" + }, + { + x: 1131.0235595703, + y: -484.64471435547, + code: "7344" + }, + { + x: 1248.1322021484, + y: -443.09335327148, + code: "7345" + }, + { + x: 1138.6513671875, + y: -445.71017456055, + code: "7346" + }, + { + x: 1264.6722412109, + y: -363.70111083984, + code: "7347" + }, + { + x: 1146.2971191406, + y: -399.16549682617, + code: "7348" + }, + { + x: 1374.98046875, + y: -149.51196289063, + code: "7349" + }, + { + x: 1635.5555419922, + y: -30.312574386597, + code: "7350" + }, + { + x: 2178, + y: 73.750213623047, + code: "7351" + }, + { + x: 1859.2497558594, + y: 335.0166015625, + code: "7352" + }, + { + x: 2424, + y: 570.25042724609, + code: "7353" + }, + { + x: 2565.1499023438, + y: 291.29028320313, + code: "7354" + }, + { + x: 2579.5817871094, + y: 465.62487792969, + code: "7355" + }, + { + x: 2407.4816894531, + y: 631.80883789063, + code: "7356" + }, + { + x: 1532.5715332031, + y: 815.74157714844, + code: "7357" + }, + { + x: 1975.5415039063, + y: 846.99938964844, + code: "7358" + }, + { + x: 2291.591796875, + y: 939.62420654297, + code: "7359" + }, + { + x: 2013.2316894531, + y: 1271.3271484375, + code: "7360" + }, + { + x: -1830.291015625, + y: -1214.4635009766, + code: "8000" + }, + { + x: -1678.4899902344, + y: -1117.2708740234, + code: "8001" + }, + { + x: -1620.734375, + y: -1045.5661621094, + code: "8002" + }, + { + x: -1559.7967529297, + y: -974.66320800781, + code: "8003" + }, + { + x: -1613.6203613281, + y: -830.43530273438, + code: "8004" + }, + { + x: -1484.1507568359, + y: -918.12463378906, + code: "8005" + }, + { + x: -1415.4753417969, + y: -876.10388183594, + code: "8006" + }, + { + x: -1343.1877441406, + y: -793.85461425781, + code: "8007" + }, + { + x: -1273.4790039063, + y: -786.72662353516, + code: "8008" + }, + { + x: -1232.4600830078, + y: -836.15246582031, + code: "8009" + }, + { + x: -1168.3585205078, + y: -793.15966796875, + code: "8010" + }, + { + x: -1199.9035644531, + y: -756.53601074219, + code: "8011" + }, + { + x: -1165.298828125, + y: -727.05938720703, + code: "8012" + }, + { + x: -1131.4459228516, + y: -761.37280273438, + code: "8013" + }, + { + x: -1075.2786865234, + y: -708.79516601563, + code: "8014" + }, + { + x: -1031.8812255859, + y: -672.93310546875, + code: "8015" + }, + { + x: -977.32299804688, + y: -642.66235351563, + code: "8016" + }, + { + x: -920.38171386719, + y: -621.97686767578, + code: "8017" + }, + { + x: -806.84155273438, + y: -609.24731445313, + code: "8018" + }, + { + x: -690.900390625, + y: -616.42333984375, + code: "8019" + }, + { + x: -551.08923339844, + y: -611.66772460938, + code: "8020" + }, + { + x: -314, + y: -598.94732666016, + code: "8021" + }, + { + x: -179.7685546875, + y: -579.82098388672, + code: "8022" + }, + { + x: -200.94201660156, + y: -643.61340332031, + code: "8023" + }, + { + x: -134.41723632813, + y: -615.75347900391, + code: "8024" + }, + { + x: -63.135009765625, + y: -698.6923828125, + code: "8025" + }, + { + x: -40.45458984375, + y: -641.31292724609, + code: "8026" + }, + { + x: -17.804565429688, + y: -581.57183837891, + code: "8027" + }, + { + x: 47.885620117188, + y: -593.5556640625, + code: "8028" + }, + { + x: 25.114074707031, + y: -653.37811279297, + code: "8029" + }, + { + x: 6.3492431640625, + y: -716.36633300781, + code: "8030" + }, + { + x: 87.976623535156, + y: -750.6728515625, + code: "8031" + }, + { + x: 112.23950195313, + y: -680.56030273438, + code: "8032" + }, + { + x: 133.30133056641, + y: -620.82183837891, + code: "8033" + }, + { + x: 188.67425537109, + y: -647.15240478516, + code: "8034" + }, + { + x: 173.08740234375, + y: -702.19592285156, + code: "8035" + }, + { + x: 143.93762207031, + y: -769.15155029297, + code: "8036" + }, + { + x: 246.29974365234, + y: -812.24029541016, + code: "8037" + }, + { + x: 270.53942871094, + y: -742.11029052734, + code: "8038" + }, + { + x: 290.00720214844, + y: -677.58953857422, + code: "8039" + }, + { + x: 326.24517822266, + y: -609.85137939453, + code: "8040" + }, + { + x: 462.87261962891, + y: -636.20239257813, + code: "8041" + }, + { + x: 374.75653076172, + y: -729.50396728516, + code: "8042" + }, + { + x: 358.39038085938, + y: -824.39807128906, + code: "8043" + }, + { + x: 457.5615234375, + y: -716.79925537109, + code: "8044" + }, + { + x: 456.33410644531, + y: -805.27172851563, + code: "8045" + }, + { + x: 456.67822265625, + y: -907.32147216797, + code: "8046" + }, + { + x: 464.20166015625, + y: -993.43060302734, + code: "8047" + }, + { + x: 359.36865234375, + y: -1011.7819824219, + code: "8048" + }, + { + x: 362.11944580078, + y: -927.90307617188, + code: "8049" + }, + { + x: 325.01721191406, + y: -887.50073242188, + code: "8050" + }, + { + x: 292.69952392578, + y: -983.19506835938, + code: "8051" + }, + { + x: 273.89923095703, + y: -1028.6313476563, + code: "8052" + }, + { + x: 171.40972900391, + y: -991.18896484375, + code: "8053" + }, + { + x: 221.99188232422, + y: -881.20806884766, + code: "8054" + }, + { + x: 77.266540527344, + y: -821.47180175781, + code: "8055" + }, + { + x: 68.063781738281, + y: -884.46630859375, + code: "8056" + }, + { + x: 48.502136230469, + y: -940.29296875, + code: "8057" + }, + { + x: -61.113586425781, + y: -900.44781494141, + code: "8058" + }, + { + x: -43.23681640625, + y: -842.26586914063, + code: "8059" + }, + { + x: -26.1337890625, + y: -788.89819335938, + code: "8060" + }, + { + x: -81.564697265625, + y: -764.98870849609, + code: "8061" + }, + { + x: -106.72705078125, + y: -816.0107421875, + code: "8062" + }, + { + x: -129.48596191406, + y: -875.82818603516, + code: "8063" + }, + { + x: -223.96990966797, + y: -843.17120361328, + code: "8064" + }, + { + x: -207.68090820313, + y: -786.60998535156, + code: "8065" + }, + { + x: -187.39575195313, + y: -731.65405273438, + code: "8066" + }, + { + x: -301.76251220703, + y: -694.13153076172, + code: "8067" + }, + { + x: -301.71411132813, + y: -693.98406982422, + code: "8068" + }, + { + x: -324.98895263672, + y: -816.22521972656, + code: "8069" + }, + { + x: -460.11907958984, + y: -819.43811035156, + code: "8070" + }, + { + x: -468.53918457031, + y: -758.87475585938, + code: "8071" + }, + { + x: -494.47418212891, + y: -701.51293945313, + code: "8072" + }, + { + x: -588.96990966797, + y: -696.76776123047, + code: "8073" + }, + { + x: -579.85424804688, + y: -758.00122070313, + code: "8074" + }, + { + x: -549.23425292969, + y: -808.41369628906, + code: "8075" + }, + { + x: -697.12164306641, + y: -813.23229980469, + code: "8076" + }, + { + x: -695.17755126953, + y: -755.06591796875, + code: "8077" + }, + { + x: -693.22772216797, + y: -692.9306640625, + code: "8078" + }, + { + x: -777.00115966797, + y: -688.97875976563, + code: "8079" + }, + { + x: -780.63635253906, + y: -755.92938232422, + code: "8080" + }, + { + x: -778.72772216797, + y: -811.79296875, + code: "8081" + }, + { + x: -820.61395263672, + y: -784.72058105469, + code: "8082" + }, + { + x: -825.85101318359, + y: -725.76879882813, + code: "8083" + }, + { + x: -901.24066162109, + y: -693.91833496094, + code: "8084" + }, + { + x: -901.66876220703, + y: -759.30755615234, + code: "8085" + }, + { + x: -904.50994873047, + y: -811.95483398438, + code: "8086" + }, + { + x: -963.15289306641, + y: -804.82659912109, + code: "8087" + }, + { + x: -966.00994873047, + y: -723.55163574219, + code: "8088" + }, + { + x: -1023.8558959961, + y: -769.82843017578, + code: "8089" + }, + { + x: -1084.8941650391, + y: -830.42523193359, + code: "8090" + }, + { + x: -1111.6213378906, + y: -879.06958007813, + code: "8091" + }, + { + x: -1175.83203125, + y: -916.56103515625, + code: "8092" + }, + { + x: -1234.453125, + y: -950.07574462891, + code: "8093" + }, + { + x: -1329.7668457031, + y: -965.24383544922, + code: "8094" + }, + { + x: -1354.1298828125, + y: -919.81860351563, + code: "8095" + }, + { + x: -1410.3618164063, + y: -987.5986328125, + code: "8096" + }, + { + x: -1504.8696289063, + y: -1076.0716552734, + code: "8097" + }, + { + x: -1435.9759521484, + y: -1114.3579101563, + code: "8098" + }, + { + x: -1421.2749023438, + y: -1197.2924804688, + code: "8099" + }, + { + x: -1339.2521972656, + y: -1182.1665039063, + code: "8100" + }, + { + x: -1338.125, + y: -1134.3774414063, + code: "8101" + }, + { + x: -1359.2917480469, + y: -1065.0572509766, + code: "8102" + }, + { + x: -1313.4952392578, + y: -1006.940246582, + code: "8103" + }, + { + x: -1293.9929199219, + y: -1054.7724609375, + code: "8104" + }, + { + x: -1276.4588623047, + y: -1109.0532226563, + code: "8105" + }, + { + x: -1266.6072998047, + y: -1152.8873291016, + code: "8106" + }, + { + x: -1224.0283203125, + y: -1014.2146606445, + code: "8107" + }, + { + x: -1195.8745117188, + y: -1078.5490722656, + code: "8108" + }, + { + x: -1179.4812011719, + y: -1129.8607177734, + code: "8109" + }, + { + x: -1156.8045654297, + y: -1180.1136474609, + code: "8110" + }, + { + x: -1153.2834472656, + y: -1244.7104492188, + code: "8111" + }, + { + x: -1103.5051269531, + y: -1283.8050537109, + code: "8112" + }, + { + x: -1010.8887939453, + y: -1222.5776367188, + code: "8113" + }, + { + x: -1038.3781738281, + y: -1174.7432861328, + code: "8114" + }, + { + x: -1063.4271240234, + y: -1130.8625488281, + code: "8115" + }, + { + x: -1090.2277832031, + y: -1077.0704345703, + code: "8116" + }, + { + x: -1117.7211914063, + y: -1037.6478271484, + code: "8117" + }, + { + x: -1150.8475341797, + y: -980.26293945313, + code: "8118" + }, + { + x: -1062.0001220703, + y: -934.07153320313, + code: "8119" + }, + { + x: -1028.1959228516, + y: -990.69000244141, + code: "8120" + }, + { + x: -1007.8956298828, + y: -1029.7551269531, + code: "8121" + }, + { + x: -974.84289550781, + y: -1076.8254394531, + code: "8122" + }, + { + x: -954.54565429688, + y: -1117.4990234375, + code: "8123" + }, + { + x: -940.62219238281, + y: -1179.6693115234, + code: "8124" + }, + { + x: -890.05810546875, + y: -1156.5856933594, + code: "8125" + }, + { + x: -829.146484375, + y: -1114.3566894531, + code: "8126" + }, + { + x: -851.08880615234, + y: -1068.1715087891, + code: "8127" + }, + { + x: -884.19775390625, + y: -1023.565612793, + code: "8128" + }, + { + x: -912.38952636719, + y: -975.99487304688, + code: "8129" + }, + { + x: -940.86529541016, + y: -925.58642578125, + code: "8130" + }, + { + x: -977.18560791016, + y: -880.96557617188, + code: "8131" + }, + { + x: -886.755859375, + y: -861.07391357422, + code: "8132" + }, + { + x: -804.32641601563, + y: -868.27331542969, + code: "8133" + }, + { + x: -803.1748046875, + y: -917.71661376953, + code: "8134" + }, + { + x: -806.00982666016, + y: -967.96362304688, + code: "8135" + }, + { + x: -770.52813720703, + y: -1026.1676025391, + code: "8136" + }, + { + x: -750.345703125, + y: -1071.6313476563, + code: "8137" + }, + { + x: -700.55529785156, + y: -1031.0007324219, + code: "8138" + }, + { + x: -718.55364990234, + y: -984.82147216797, + code: "8139" + }, + { + x: -693.51342773438, + y: -933.83929443359, + code: "8140" + }, + { + x: -696.35992431641, + y: -871.6806640625, + code: "8141" + }, + { + x: -586.82690429688, + y: -870.10583496094, + code: "8142" + }, + { + x: -545.82250976563, + y: -894.85827636719, + code: "8143" + }, + { + x: -563.00665283203, + y: -940.42175292969, + code: "8144" + }, + { + x: -472.60583496094, + y: -1056.7182617188, + code: "8145" + }, + { + x: -492.99487304688, + y: -1006.5607299805, + code: "8146" + }, + { + x: -485.44836425781, + y: -946.77185058594, + code: "8147" + }, + { + x: -470.01870727539, + y: -886.9052734375, + code: "8148" + }, + { + x: -327.6982421875, + y: -884.65887451172, + code: "8149" + }, + { + x: -336.88616943359, + y: -946.072265625, + code: "8150" + }, + { + x: -338.91271972656, + y: -1003.4870605469, + code: "8151" + }, + { + x: -334.58642578125, + y: -1068.0604248047, + code: "8152" + }, + { + x: -317.48376464844, + y: -1119.9077148438, + code: "8153" + }, + { + x: -287.63110351563, + y: -1033.0723876953, + code: "8154" + }, + { + x: -272.1279296875, + y: -969.33654785156, + code: "8155" + }, + { + x: -254.23693847656, + y: -907.1806640625, + code: "8156" + }, + { + x: -159.82067871094, + y: -943.06695556641, + code: "8157" + }, + { + x: -180.19482421875, + y: -1006.8634033203, + code: "8158" + }, + { + x: -201.34191894531, + y: -1066.6782226563, + code: "8159" + }, + { + x: -228.0712890625, + y: -1123.2899169922, + code: "8160" + }, + { + x: -138.45300292969, + y: -1123.2999267578, + code: "8161" + }, + { + x: -118.19567871094, + y: -1063.5217285156, + code: "8162" + }, + { + x: -100.28674316406, + y: -1007.7569580078, + code: "8163" + }, + { + x: -89.623161315918, + y: -964.93267822266, + code: "8164" + }, + { + x: -3.1412353515625, + y: -999.86987304688, + code: "8165" + }, + { + x: -20.306701660156, + y: -1061.2722167969, + code: "8166" + }, + { + x: -43.883117675781, + y: -1123.4693603516, + code: "8167" + }, + { + x: 24.226928710938, + y: -1091.6182861328, + code: "8168" + }, + { + x: 50.932918548584, + y: -1026.1612548828, + code: "8169" + }, + { + x: 131.72967529297, + y: -1048.6171875, + code: "8170" + }, + { + x: 109.76110839844, + y: -1108.4281005859, + code: "8171" + }, + { + x: 173.09448242188, + y: -1106.0588378906, + code: "8172" + }, + { + x: 175.8193359375, + y: -1071.8271484375, + code: "8173" + }, + { + x: 268.63513183594, + y: -1071.8500976563, + code: "8174" + }, + { + x: 265.79010009766, + y: -1110.1579589844, + code: "8175" + }, + { + x: 357.78820800781, + y: -1110.9970703125, + code: "8176" + }, + { + x: 356.53411865234, + y: -1071.1478271484, + code: "8177" + }, + { + x: 453.3203125, + y: -1070.3530273438, + code: "8178" + }, + { + x: 453.67822265625, + y: -1111.8461914063, + code: "8179" + }, + { + x: 746.54296875, + y: -1136.5583496094, + code: "8180" + }, + { + x: 749.26934814453, + y: -1074.4306640625, + code: "8181" + }, + { + x: 744.84594726563, + y: -985.97827148438, + code: "8182" + }, + { + x: 739.59899902344, + y: -935.78637695313, + code: "8183" + }, + { + x: 735.94299316406, + y: -887.18041992188, + code: "8184" + }, + { + x: 729.90185546875, + y: -820.24847412109, + code: "8185" + }, + { + x: 731.87231445313, + y: -760.47180175781, + code: "8186" + }, + { + x: 739.40161132813, + y: -709.4892578125, + code: "8187" + }, + { + x: 817.798828125, + y: -746.24493408203, + code: "8188" + }, + { + x: 813.44592285156, + y: -788.44323730469, + code: "8189" + }, + { + x: 813.77825927734, + y: -821.92578125, + code: "8190" + }, + { + x: 816.51934814453, + y: -884.91625976563, + code: "8191" + }, + { + x: 829.63092041016, + y: -937.55480957031, + code: "8192" + }, + { + x: 831.572265625, + y: -986.21954345703, + code: "8193" + }, + { + x: 841.68493652344, + y: -1033.2755126953, + code: "8194" + }, + { + x: 834.65478515625, + y: -1109.8161621094, + code: "8195" + }, + { + x: 904.37091064453, + y: -1130.5729980469, + code: "8196" + }, + { + x: 911.10461425781, + y: -1051.8024902344, + code: "8197" + }, + { + x: 926.62200927734, + y: -969.60461425781, + code: "8198" + }, + { + x: 918.21075439453, + y: -897.119140625, + code: "8199" + }, + { + x: -1406.5347900391, + y: -1268.6197509766, + code: "8200" + }, + { + x: -1362.576171875, + y: -1344.2043457031, + code: "8201" + }, + { + x: -1387.0986328125, + y: -1421.5750732422, + code: "8202" + }, + { + x: -1367.3278808594, + y: -1516.0430908203, + code: "8203" + }, + { + x: -1320.4248046875, + y: -1607.5413818359, + code: "8204" + }, + { + x: -1255.2265625, + y: -1700.8128662109, + code: "8205" + }, + { + x: -1198.8803710938, + y: -1793.5231933594, + code: "8206" + }, + { + x: -1084.0930175781, + y: -1662.5076904297, + code: "8207" + }, + { + x: -1110.9595947266, + y: -1617.0979003906, + code: "8208" + }, + { + x: -1156.7485351563, + y: -1553.349609375, + code: "8209" + }, + { + x: -1192.4637451172, + y: -1499.6339111328, + code: "8210" + }, + { + x: -1238.2485351563, + y: -1430.5867919922, + code: "8211" + }, + { + x: -1275.7347412109, + y: -1366.8492431641, + code: "8212" + }, + { + x: -1289.033203125, + y: -1317.2657470703, + code: "8213" + }, + { + x: -1312.3676757813, + y: -1265.9447021484, + code: "8214" + }, + { + x: -1322.7319335938, + y: -1232.3039550781, + code: "8215" + }, + { + x: -1253.39453125, + y: -1208.1477050781, + code: "8216" + }, + { + x: -1244.6705322266, + y: -1239.3704833984, + code: "8217" + }, + { + x: -1218.5848388672, + y: -1304.3797607422, + code: "8218" + }, + { + x: -1205.9111328125, + y: -1337.4548339844, + code: "8219" + }, + { + x: -1176.1430664063, + y: -1392.3951416016, + code: "8220" + }, + { + x: -1135.0238037109, + y: -1453.1245117188, + code: "8221" + }, + { + x: -1105.3430175781, + y: -1501.0115966797, + code: "8222" + }, + { + x: -1058.4248046875, + y: -1572.4730224609, + code: "8223" + }, + { + x: -1038.6776123047, + y: -1604.9644775391, + code: "8224" + }, + { + x: -964.03210449219, + y: -1584.3395996094, + code: "8225" + }, + { + x: -914.76403808594, + y: -1520.599609375, + code: "8226" + }, + { + x: -1004.2291870117, + y: -1528.86328125, + code: "8227" + }, + { + x: -1028.7485351563, + y: -1495.8439941406, + code: "8228" + }, + { + x: -944.04754638672, + y: -1430.3278808594, + code: "8229" + }, + { + x: -1042.3331298828, + y: -1393.162109375, + code: "8230" + }, + { + x: -1112.3000488281, + y: -1360.1431884766, + code: "8231" + }, + { + x: -983.37646484375, + y: -1289.3161621094, + code: "8232" + }, + { + x: -954.77386474609, + y: -1328.3073730469, + code: "8233" + }, + { + x: -885.44458007813, + y: -1302.3771972656, + code: "8234" + }, + { + x: -891.65002441406, + y: -1248.0938720703, + code: "8235" + }, + { + x: -811.63067626953, + y: -1199.6518554688, + code: "8236" + }, + { + x: -791.92803955078, + y: -1242.7899169922, + code: "8237" + }, + { + x: -802.2822265625, + y: -1308.3205566406, + code: "8238" + }, + { + x: -698.70843505859, + y: -1307.7591552734, + code: "8239" + }, + { + x: -714.98480224609, + y: -1416.4106445313, + code: "8240" + }, + { + x: -754.84582519531, + y: -1469.5748291016, + code: "8241" + }, + { + x: -742.16125488281, + y: -1519.7728271484, + code: "8242" + }, + { + x: -692.91424560547, + y: -1492.0563964844, + code: "8243" + }, + { + x: -686.75427246094, + y: -1440.7452392578, + code: "8244" + }, + { + x: -638.69464111328, + y: -1235.3330078125, + code: "8245" + }, + { + x: -676.18487548828, + y: -1187.5369873047, + code: "8246" + }, + { + x: -697.74755859375, + y: -1155.0841064453, + code: "8247" + }, + { + x: -717.52648925781, + y: -1124.4047851563, + code: "8248" + }, + { + x: -586.21545410156, + y: -986.32403564453, + code: "8249" + }, + { + x: -588.90850830078, + y: -1026.4881591797, + code: "8250" + }, + { + x: -606.36547851563, + y: -1065.4576416016, + code: "8251" + }, + { + x: -623.22509765625, + y: -1110.3604736328, + code: "8252" + }, + { + x: -612.92242431641, + y: -1160.5725097656, + code: "8253" + }, + { + x: -529.42797851563, + y: -1234.3839111328, + code: "8254" + }, + { + x: -554.15460205078, + y: -1292.1862792969, + code: "8255" + }, + { + x: -2262.1477050781, + y: 297.61862182617, + code: "6000" + }, + { + x: -1994.5190429688, + y: 648.20050048828, + code: "6001" + }, + { + x: -1887.9575195313, + y: 641.11657714844, + code: "6002" + }, + { + x: -2014.0268554688, + y: 599.19030761719, + code: "6003" + }, + { + x: -1912.8198242188, + y: 590.29577636719, + code: "6004" + }, + { + x: -2021.7159423828, + y: 547.93298339844, + code: "6005" + }, + { + x: -1927.6529541016, + y: 532.35278320313, + code: "6006" + }, + { + x: -2030.7054443359, + y: 493.98202514648, + code: "6007" + }, + { + x: -1943.0958251953, + y: 472.10983276367, + code: "6008" + }, + { + x: -2031.3487548828, + y: 436.68328857422, + code: "6009" + }, + { + x: -1928.3488769531, + y: 418.35144042969, + code: "6010" + }, + { + x: -2014.828125, + y: 388.83602905273, + code: "6011" + }, + { + x: -1919.5220947266, + y: 366.36947631836, + code: "6012" + }, + { + x: -2003.0770263672, + y: 323.84991455078, + code: "6013" + }, + { + x: -1908.953125, + y: 298.46801757813, + code: "6014" + }, + { + x: -1997.8389892578, + y: 268.93615722656, + code: "6015" + }, + { + x: -1893.6683349609, + y: 249.42088317871, + code: "6016" + }, + { + x: -1978.9973144531, + y: 213.98333740234, + code: "6017" + }, + { + x: -1952.7348632813, + y: 159.64445495605, + code: "6018" + }, + { + x: -1897.5489501953, + y: 112.38739013672, + code: "6019" + }, + { + x: -1869.5643310547, + y: 207.38467407227, + code: "6020" + }, + { + x: -1737.0852050781, + y: 214.4333190918, + code: "6021" + }, + { + x: -1700.2106933594, + y: 159.50413513184, + code: "6022" + }, + { + x: -1660.9986572266, + y: 246.86109924316, + code: "6023" + }, + { + x: -1625.8809814453, + y: 186.05140686035, + code: "6024" + }, + { + x: -1563.6281738281, + y: 213.79307556152, + code: "6025" + }, + { + x: -1849.6419677734, + y: 304.65264892578, + code: "6026" + }, + { + x: -1795.0516357422, + y: 427.42770385742, + code: "6027" + }, + { + x: -1794.806640625, + y: 322.92083740234, + code: "6028" + }, + { + x: -1737.2999267578, + y: 355.95559692383, + code: "6029" + }, + { + x: -1669.1251220703, + y: 365.39450073242, + code: "6030" + }, + { + x: -1569.6906738281, + y: 403.12774658203, + code: "6031" + }, + { + x: -1492.6707763672, + y: 541.81518554688, + code: "6032" + }, + { + x: -1481.1917724609, + y: 427.87646484375, + code: "6033" + }, + { + x: -1470.8723144531, + y: 485.10702514648, + code: "6034" + }, + { + x: -1389.7387695313, + y: 578.95404052734, + code: "6035" + }, + { + x: -1319.8041992188, + y: 649.19311523438, + code: "6036" + }, + { + x: -1313.0637207031, + y: 597.20562744141, + code: "6037" + }, + { + x: -1262.6334228516, + y: 679.24865722656, + code: "6038" + }, + { + x: -1251.7319335938, + y: 618.4013671875, + code: "6039" + }, + { + x: -1191.8388671875, + y: 650.865234375, + code: "6040" + }, + { + x: -1146.6955566406, + y: 714.00988769531, + code: "6041" + }, + { + x: -1123.3859863281, + y: 807.26391601563, + code: "6042" + }, + { + x: -1096.5444335938, + y: 745.27099609375, + code: "6043" + }, + { + x: -1007.7152099609, + y: 762.95837402344, + code: "6044" + }, + { + x: -910.65142822266, + y: 761.17913818359, + code: "6045" + }, + { + x: -846.13549804688, + y: 771.1787109375, + code: "6046" + }, + { + x: -786.77917480469, + y: 790.03894042969, + code: "6047" + }, + { + x: -663.72924804688, + y: 783.50695800781, + code: "6048" + }, + { + x: -613.87359619141, + y: 829.54168701172, + code: "6049" + }, + { + x: -556.94104003906, + y: 807.65979003906, + code: "6050" + }, + { + x: -604.46942138672, + y: 765.74035644531, + code: "6051" + }, + { + x: -657.92224121094, + y: 717.29736328125, + code: "6052" + }, + { + x: -577.37915039063, + y: 705.44445800781, + code: "6053" + }, + { + x: -535.78741455078, + y: 740.81671142578, + code: "6054" + }, + { + x: -514.25689697266, + y: 780.93884277344, + code: "6055" + }, + { + x: -485.08337402344, + y: 686.45562744141, + code: "6056" + }, + { + x: -464.73760986328, + y: 633.91528320313, + code: "6057" + }, + { + x: -350.533203125, + y: 687.02502441406, + code: "6058" + }, + { + x: -401.02182006836, + y: 642.13891601563, + code: "6059" + }, + { + x: -291.67199707031, + y: 648.49810791016, + code: "6060" + }, + { + x: -341.48052978516, + y: 601.91802978516, + code: "6061" + }, + { + x: -239.08898925781, + y: 624.33056640625, + code: "6062" + }, + { + x: -277.17504882813, + y: 579.43884277344, + code: "6063" + }, + { + x: -168.29577636719, + y: 625.44171142578, + code: "6064" + }, + { + x: -204.01466369629, + y: 572.865234375, + code: "6065" + }, + { + x: -123.47906494141, + y: 574.03063964844, + code: "6066" + }, + { + x: -96.05509185791, + y: 814.24304199219, + code: "6067" + }, + { + x: -166.05004882813, + y: 880.9013671875, + code: "6068" + }, + { + x: -203.5856628418, + y: 980.06671142578, + code: "6069" + }, + { + x: -80.529174804688, + y: 1000.1196289063, + code: "6070" + }, + { + x: -44.25, + y: 922.18334960938, + code: "6071" + }, + { + x: 153.15551757813, + y: 735.05572509766, + code: "6072" + }, + { + x: 243.75549316406, + y: 761.61242675781, + code: "6073" + }, + { + x: 375.67501831055, + y: 793.47485351563, + code: "6074" + }, + { + x: 677.57409667969, + y: 638.79724121094, + code: "6075" + }, + { + x: 808.29443359375, + y: 554.34033203125, + code: "6076" + }, + { + x: 656.84167480469, + y: 492.91119384766, + code: "6077" + }, + { + x: 360.77349853516, + y: 414.39306640625, + code: "6078" + }, + { + x: 308.50833129883, + y: 453.89862060547, + code: "6079" + }, + { + x: 295.21667480469, + y: 504.61383056641, + code: "6080" + }, + { + x: 249.45138549805, + y: 658.66259765625, + code: "6081" + }, + { + x: 239.11804199219, + y: 589.58752441406, + code: "6082" + }, + { + x: 175.05268859863, + y: 555.31396484375, + code: "6083" + }, + { + x: 95.065246582031, + y: 548.21667480469, + code: "6084" + }, + { + x: 31.002807617188, + y: 528.72082519531, + code: "6085" + }, + { + x: 39.556945800781, + y: 488.56109619141, + code: "6086" + }, + { + x: 101.82203674316, + y: 501.5361328125, + code: "6087" + }, + { + x: 170.56524658203, + y: 513.30560302734, + code: "6088" + }, + { + x: 198.58605957031, + y: 465.48751831055, + code: "6089" + }, + { + x: 130.96112060547, + y: 448.33193969727, + code: "6090" + }, + { + x: 62.770755767822, + y: 434.7236328125, + code: "6091" + }, + { + x: -1.2972412109375, + y: 447.09588623047, + code: "6092" + }, + { + x: -66.628433227539, + y: 468.28079223633, + code: "6093" + }, + { + x: -119.97309112549, + y: 482.46658325195, + code: "6094" + }, + { + x: -175.78332519531, + y: 485.40130615234, + code: "6095" + }, + { + x: -232.74758911133, + y: 470.56115722656, + code: "6096" + }, + { + x: -291.53466796875, + y: 474.73196411133, + code: "6097" + }, + { + x: -369.76379394531, + y: 455.81115722656, + code: "6098" + }, + { + x: -331.13897705078, + y: 511.28619384766, + code: "6099" + }, + { + x: -402.87100219727, + y: 492.36114501953, + code: "6100" + }, + { + x: -360.69793701172, + y: 541.34301757813, + code: "6101" + }, + { + x: -439.50415039063, + y: 518.86938476563, + code: "6102" + }, + { + x: -410.33340454102, + y: 567.25268554688, + code: "6103" + }, + { + x: -492.69583129883, + y: 531.83337402344, + code: "6104" + }, + { + x: -459.35787963867, + y: 578.43200683594, + code: "6105" + }, + { + x: -528.75988769531, + y: 594.927734375, + code: "6106" + }, + { + x: -558.10064697266, + y: 628.72186279297, + code: "6107" + }, + { + x: -601.43756103516, + y: 648.56945800781, + code: "6108" + }, + { + x: -648.38018798828, + y: 667.43884277344, + code: "6109" + }, + { + x: -718.94104003906, + y: 695.73327636719, + code: "6110" + }, + { + x: -654.31750488281, + y: 630.17919921875, + code: "6111" + }, + { + x: -664.091796875, + y: 580.56677246094, + code: "6112" + }, + { + x: -713.98077392578, + y: 631.90423583984, + code: "6113" + }, + { + x: -717.83959960938, + y: 572.28198242188, + code: "6114" + }, + { + x: -766.55902099609, + y: 589.95812988281, + code: "6115" + }, + { + x: -775.70361328125, + y: 620.64440917969, + code: "6116" + }, + { + x: -789.62451171875, + y: 648.34301757813, + code: "6117" + }, + { + x: -806.47595214844, + y: 677.22369384766, + code: "6118" + }, + { + x: -862.28363037109, + y: 677.79028320313, + code: "6119" + }, + { + x: -918.67370605469, + y: 673.61810302734, + code: "6120" + }, + { + x: -974.53161621094, + y: 672.35675048828, + code: "6121" + }, + { + x: -1026.2021484375, + y: 675.30151367188, + code: "6122" + }, + { + x: -1065.5067138672, + y: 708.35546875, + code: "6123" + }, + { + x: -1338.2426757813, + y: 541.27087402344, + code: "6124" + }, + { + x: -1388.7254638672, + y: 508.19418334961, + code: "6125" + }, + { + x: -1410.8890380859, + y: 438.9221496582, + code: "6126" + }, + { + x: -1343.9058837891, + y: 476.67770385742, + code: "6127" + }, + { + x: -1351.9217529297, + y: 434.14993286133, + code: "6128" + }, + { + x: -1230.0601806641, + y: 443.54446411133, + code: "6129" + }, + { + x: -1284.1134033203, + y: 488.95129394531, + code: "6130" + }, + { + x: -1212.4343261719, + y: 494.26245117188, + code: "6131" + }, + { + x: -1212.158203125, + y: 563.90283203125, + code: "6132" + }, + { + x: -1140.2407226563, + y: 527.28747558594, + code: "6133" + }, + { + x: -1158.8768310547, + y: 573.85028076172, + code: "6134" + }, + { + x: -1115.4670410156, + y: 595.69030761719, + code: "6135" + }, + { + x: -1085.6940917969, + y: 547.24731445313, + code: "6136" + }, + { + x: -1037.5952148438, + y: 565.49865722656, + code: "6137" + }, + { + x: -954.66888427734, + y: 609.72082519531, + code: "6138" + }, + { + x: -972.70709228516, + y: 558.93609619141, + code: "6139" + }, + { + x: -895.13220214844, + y: 582.51110839844, + code: "6140" + }, + { + x: -922.60095214844, + y: 537.04864501953, + code: "6141" + }, + { + x: -854.97277832031, + y: 554.59283447266, + code: "6142" + }, + { + x: -892.58575439453, + y: 498.03335571289, + code: "6143" + }, + { + x: -831.50915527344, + y: 513.93762207031, + code: "6144" + }, + { + x: -884.38293457031, + y: 452.51110839844, + code: "6145" + }, + { + x: -823.89910888672, + y: 466.66662597656, + code: "6146" + }, + { + x: -814.16357421875, + y: 409.9831237793, + code: "6147" + }, + { + x: -773.17822265625, + y: 481.37347412109, + code: "6148" + }, + { + x: -756.38006591797, + y: 412.8776550293, + code: "6149" + }, + { + x: -724.23278808594, + y: 499.6208190918, + code: "6150" + }, + { + x: -712.74206542969, + y: 441.16241455078, + code: "6151" + }, + { + x: -671.13714599609, + y: 517.88616943359, + code: "6152" + }, + { + x: -659.64196777344, + y: 466.4958190918, + code: "6153" + }, + { + x: -607.41296386719, + y: 531.97094726563, + code: "6154" + }, + { + x: -598.89373779297, + y: 476.46380615234, + code: "6155" + }, + { + x: -558.46899414063, + y: 553.77642822266, + code: "6156" + }, + { + x: -521.02032470703, + y: 494.13180541992, + code: "6157" + }, + { + x: -510.1328125, + y: 452.78060913086, + code: "6158" + }, + { + x: -590.72540283203, + y: 387.22906494141, + code: "6159" + }, + { + x: -498.37484741211, + y: 374.80413818359, + code: "6160" + }, + { + x: -477.44799804688, + y: 418.48046875, + code: "6161" + }, + { + x: -422.26184082031, + y: 419.63055419922, + code: "6162" + }, + { + x: -437.25512695313, + y: 367.65478515625, + code: "6163" + }, + { + x: -462.48934936523, + y: 328.10137939453, + code: "6164" + }, + { + x: -393.73489379883, + y: 328.10000610352, + code: "6165" + }, + { + x: -369.84939575195, + y: 390.66912841797, + code: "6166" + }, + { + x: -323.51623535156, + y: 347.55966186523, + code: "6167" + }, + { + x: -316.17437744141, + y: 405.98754882813, + code: "6168" + }, + { + x: -266.91488647461, + y: 369.94305419922, + code: "6169" + }, + { + x: -207.63012695313, + y: 388.1985168457, + code: "6170" + }, + { + x: -157.18350219727, + y: 410.58056640625, + code: "6171" + }, + { + x: -84.303298950195, + y: 439.47348022461, + code: "6172" + }, + { + x: -86.418128967285, + y: 357.40148925781, + code: "6173" + }, + { + x: -6.4694213867188, + y: 404.0319519043, + code: "6174" + }, + { + x: -42.2138671875, + y: 334.93740844727, + code: "6175" + }, + { + x: 49.536071777344, + y: 376.21939086914, + code: "6176" + }, + { + x: 12.605529785156, + y: 310.67916870117, + code: "6177" + }, + { + x: -149.43428039551, + y: 291.76098632813, + code: "6178" + }, + { + x: -217.6293182373, + y: 297.13497924805, + code: "6179" + }, + { + x: -269.89212036133, + y: 289.37637329102, + code: "6180" + }, + { + x: -359.32946777344, + y: 272.82220458984, + code: "6181" + }, + { + x: -425.75863647461, + y: 271.02914428711, + code: "6182" + }, + { + x: -494.56964111328, + y: 286.93753051758, + code: "6183" + }, + { + x: -568.09265136719, + y: 335.89297485352, + code: "6184" + }, + { + x: -571.34918212891, + y: 290.98889160156, + code: "6185" + }, + { + x: -634.80773925781, + y: 294.49157714844, + code: "6186" + }, + { + x: -698.30737304688, + y: 314.51943969727, + code: "6187" + }, + { + x: -781.28607177734, + y: 319.22219848633, + code: "6188" + }, + { + x: -756.80535888672, + y: 260.7624206543, + code: "6189" + }, + { + x: -830.34216308594, + y: 254.25691223145, + code: "6190" + }, + { + x: -882.001953125, + y: 285.53472900391, + code: "6191" + }, + { + x: -873.49456787109, + y: 340.39581298828, + code: "6192" + }, + { + x: -945.36529541016, + y: 389.28802490234, + code: "6193" + }, + { + x: -933.15216064453, + y: 473.7096862793, + code: "6194" + }, + { + x: -980.72039794922, + y: 433.56103515625, + code: "6195" + }, + { + x: -951.53369140625, + y: 509.10546875, + code: "6196" + }, + { + x: -997.88922119141, + y: 468.37091064453, + code: "6197" + }, + { + x: -1015.9061889648, + y: 521.47497558594, + code: "6198" + }, + { + x: -1069.9627685547, + y: 478.95004272461, + code: "6199" + }, + { + x: -1041.3735351563, + y: 419.33206176758, + code: "6200" + }, + { + x: -1041.6975097656, + y: 368.53604125977, + code: "6201" + }, + { + x: -962.31048583984, + y: 326, + code: "6202" + }, + { + x: -1037.6130371094, + y: 308.8818359375, + code: "6203" + }, + { + x: -1112.3223876953, + y: 419.82232666016, + code: "6204" + }, + { + x: -1133.8972167969, + y: 487.09161376953, + code: "6205" + }, + { + x: -1164.3012695313, + y: 446.32086181641, + code: "6206" + }, + { + x: -617.99291992188, + y: -1779.3375244141, + code: "9000" + }, + { + x: -557.49957275391, + y: -1797.0583496094, + code: "9001" + }, + { + x: -512.93701171875, + y: -1739.8428955078, + code: "9002" + }, + { + x: -455.40063476563, + y: -1752.8360595703, + code: "9003" + }, + { + x: -442.17102050781, + y: -1722.7446289063, + code: "9004" + }, + { + x: -425.97006225586, + y: -1691.4652099609, + code: "9005" + }, + { + x: -325.95092773438, + y: -1964.2082519531, + code: "9006" + }, + { + x: -82.513252258301, + y: -2016.1943359375, + code: "9007" + }, + { + x: -111.77169799805, + y: -2131.8942871094, + code: "9008" + }, + { + x: -401.33639526367, + y: -2141.3444824219, + code: "9009" + }, + { + x: -581.68414306641, + y: -2153.1555175781, + code: "9010" + }, + { + x: -508.21328735352, + y: -2211.6374511719, + code: "9011" + }, + { + x: -432.40249633789, + y: -2189.2194824219, + code: "9012" + }, + { + x: -354.24099731445, + y: -2189.8400878906, + code: "9013" + }, + { + x: -284.30514526367, + y: -2220.5444335938, + code: "9014" + }, + { + x: -223.84916687012, + y: -2240.029296875, + code: "9015" + }, + { + x: -110.22423553467, + y: -2227.6540527344, + code: "9016" + }, + { + x: -13.152498245239, + y: -2228.2902832031, + code: "9017" + }, + { + x: -79.018424987793, + y: -2191.7026367188, + code: "9018" + }, + { + x: -10.2855052948, + y: -2171.6804199219, + code: "9019" + }, + { + x: 125.16636657715, + y: -2105.5888671875, + code: "9020" + }, + { + x: 125.44242095947, + y: -2155.1833496094, + code: "9021" + }, + { + x: 189.44230651855, + y: -2152.2485351563, + code: "9022" + }, + { + x: 134.2064666748, + y: -2217.1804199219, + code: "9023" + }, + { + x: 135.67269897461, + y: -2261.470703125, + code: "9024" + }, + { + x: 219.17179870605, + y: -2221.9514160156, + code: "9025" + }, + { + x: 299.72015380859, + y: -2211.375, + code: "9026" + }, + { + x: 267.52749633789, + y: -2170.0803222656, + code: "9027" + }, + { + x: -366.77319335938, + y: -1601.0847167969, + code: "9028" + }, + { + x: -351.75268554688, + y: -1568.6346435547, + code: "9029" + }, + { + x: -329.61773681641, + y: -1542.0874023438, + code: "9030" + }, + { + x: -317.55230712891, + y: -1515.5374755859, + code: "9031" + }, + { + x: -314.94671630859, + y: -1491.3485107422, + code: "9032" + }, + { + x: -314.65774536133, + y: -1465.9680175781, + code: "9033" + }, + { + x: -314.99819946289, + y: -1401.6596679688, + code: "9034" + }, + { + x: -318.24963378906, + y: -1349.7554931641, + code: "9035" + }, + { + x: -315.59759521484, + y: -1301.3970947266, + code: "9036" + }, + { + x: -222.04414367676, + y: -1279.5596923828, + code: "9037" + }, + { + x: -221.16809082031, + y: -1332.1346435547, + code: "9038" + }, + { + x: -225.03984069824, + y: -1369.3374023438, + code: "9039" + }, + { + x: -223.5772857666, + y: -1394.7319335938, + code: "9040" + }, + { + x: -143.6206817627, + y: -1279.6457519531, + code: "9041" + }, + { + x: -144.53955078125, + y: -1332.1846923828, + code: "9042" + }, + { + x: -58.668151855469, + y: -1296.7834472656, + code: "9043" + }, + { + x: -54.275856018066, + y: -1341.6610107422, + code: "9044" + }, + { + x: 2.6582078933716, + y: -1293.2971191406, + code: "9045" + }, + { + x: 25.372587203979, + y: -1341.7027587891, + code: "9046" + }, + { + x: 118.90602874756, + y: -1300.4305419922, + code: "9047" + }, + { + x: 139.26152038574, + y: -1345.3110351563, + code: "9048" + }, + { + x: 169.05590820313, + y: -1313.4749755859, + code: "9049" + }, + { + x: 182.32823181152, + y: -1281.0345458984, + code: "9050" + }, + { + x: 269.36267089844, + y: -1264.5220947266, + code: "9051" + }, + { + x: 328.66967773438, + y: -1277.5358886719, + code: "9052" + }, + { + x: 400.36538696289, + y: -1320.0499267578, + code: "9053" + }, + { + x: 467.93350219727, + y: -1294.66796875, + code: "9054" + }, + { + x: 461.69897460938, + y: -1327.1652832031, + code: "9055" + }, + { + x: 437.15036010742, + y: -1358.4846191406, + code: "9056" + }, + { + x: 456.33099365234, + y: -1382.1110839844, + code: "9057" + }, + { + x: 497.3212890625, + y: -1406.9416503906, + code: "9058" + }, + { + x: 497.59185791016, + y: -1353.8249511719, + code: "9059" + }, + { + x: 486.0364074707, + y: -1468.3637695313, + code: "9060" + }, + { + x: 561.10925292969, + y: -1605.8107910156, + code: "9061" + }, + { + x: 532.02807617188, + y: -1641.95703125, + code: "9062" + }, + { + x: 454.37530517578, + y: -1575.2985839844, + code: "9063" + }, + { + x: 475.89196777344, + y: -1511.5500488281, + code: "9064" + }, + { + x: 401.17672729492, + y: -1529.8985595703, + code: "9065" + }, + { + x: 363.94625854492, + y: -1456.7110595703, + code: "9066" + }, + { + x: 397.12634277344, + y: -1431.9426269531, + code: "9067" + }, + { + x: 330.79077148438, + y: -1417.8332519531, + code: "9068" + }, + { + x: 352.29205322266, + y: -1384.2041015625, + code: "9069" + }, + { + x: 264.00042724609, + y: -1344.7014160156, + code: "9070" + }, + { + x: 237.13723754883, + y: -1387.8402099609, + code: "9071" + }, + { + x: 93.363952636719, + y: -1409.0999755859, + code: "9072" + }, + { + x: 57.044925689697, + y: -1454.5513916016, + code: "9073" + }, + { + x: 20.694875717163, + y: -1403.2456054688, + code: "9074" + }, + { + x: 10.90746307373, + y: -1437.4860839844, + code: "9075" + }, + { + x: -40.752319335938, + y: -1401.4930419922, + code: "9076" + }, + { + x: -52.313407897949, + y: -1441.0485839844, + code: "9077" + }, + { + x: -113.44661712646, + y: -1419.9624023438, + code: "9078" + }, + { + x: -116.69929504395, + y: -1468.9930419922, + code: "9079" + }, + { + x: -155.96124267578, + y: -1441.2569580078, + code: "9080" + }, + { + x: -231.85336303711, + y: -1510.3624267578, + code: "9081" + }, + { + x: -170.21907043457, + y: -1542.2749023438, + code: "9082" + }, + { + x: -200.65257263184, + y: -1574.7651367188, + code: "9083" + }, + { + x: -214.57510375977, + y: -1620.2512207031, + code: "9084" + }, + { + x: -215.48867797852, + y: -1674.0151367188, + code: "9085" + }, + { + x: -187.46504211426, + y: -1731.8972167969, + code: "9086" + }, + { + x: -118.73623657227, + y: -1580.1986083984, + code: "9087" + }, + { + x: -147.97245788574, + y: -1617.9775390625, + code: "9088" + }, + { + x: -82.77734375, + y: -1615.6389160156, + code: "9089" + }, + { + x: -107.89018249512, + y: -1649.8861083984, + code: "9090" + }, + { + x: -130.62887573242, + y: -1685.9069824219, + code: "9091" + }, + { + x: -16.434553146362, + y: -1670.6027832031, + code: "9092" + }, + { + x: -102.92967224121, + y: -1804.6430664063, + code: "9093" + }, + { + x: -52.484455108643, + y: -1760.3791503906, + code: "9094" + }, + { + x: -38.371166229248, + y: -1865.0164794922, + code: "9095" + }, + { + x: -27.483112335205, + y: -1783.0012207031, + code: "9096" + }, + { + x: -17.173496246338, + y: -1886.9387207031, + code: "9097" + }, + { + x: 3.1609797477722, + y: -1805.4915771484, + code: "9098" + }, + { + x: 9.3448152542114, + y: -1910.5693359375, + code: "9099" + }, + { + x: 27.890850067139, + y: -1832.0930175781, + code: "9100" + }, + { + x: 47.030918121338, + y: -1930.6762695313, + code: "9101" + }, + { + x: 59.687953948975, + y: -1859.2763671875, + code: "9102" + }, + { + x: 85.914276123047, + y: -1978.5360107422, + code: "9103" + }, + { + x: 108.62252044678, + y: -2008.6540527344, + code: "9104" + }, + { + x: 139.58644104004, + y: -1971.5124511719, + code: "9105" + }, + { + x: 154.00888061523, + y: -1946.7583007813, + code: "9106" + }, + { + x: 137.76422119141, + y: -1922.5985107422, + code: "9107" + }, + { + x: 109.70868682861, + y: -1900.1694335938, + code: "9108" + }, + { + x: 86.381195068359, + y: -1822.8734130859, + code: "9109" + }, + { + x: 20.531059265137, + y: -1737.8999023438, + code: "9110" + }, + { + x: 125.27146148682, + y: -1781.5804443359, + code: "9111" + }, + { + x: 160.95896911621, + y: -1860.1069335938, + code: "9112" + }, + { + x: 205.51319885254, + y: -1877.2679443359, + code: "9113" + }, + { + x: 188.67405700684, + y: -1832.4387207031, + code: "9114" + }, + { + x: 270.400390625, + y: -1812.3804931641, + code: "9115" + }, + { + x: 296.07427978516, + y: -1784.06640625, + code: "9116" + }, + { + x: 321.7243347168, + y: -1755.7664794922, + code: "9117" + }, + { + x: 287.75616455078, + y: -1728.6472167969, + code: "9118" + }, + { + x: 254.39649963379, + y: -1755.8026123047, + code: "9119" + }, + { + x: 232.21168518066, + y: -1778.2803955078, + code: "9120" + }, + { + x: 179.36712646484, + y: -1731.6680908203, + code: "9121" + }, + { + x: 213.28810119629, + y: -1700.4151611328, + code: "9122" + }, + { + x: 236.56298828125, + y: -1672.70703125, + code: "9123" + }, + { + x: 194.93222045898, + y: -1640.8748779297, + code: "9124" + }, + { + x: 150.92175292969, + y: -1654.4763183594, + code: "9125" + }, + { + x: 115.18550872803, + y: -1679.8818359375, + code: "9126" + }, + { + x: 139.05323791504, + y: -1704.1013183594, + code: "9127" + }, + { + x: 177.12002563477, + y: -1681.1290283203, + code: "9128" + }, + { + x: 124.26740264893, + y: -1600.2818603516, + code: "9129" + }, + { + x: 92.077140808105, + y: -1578.4597167969, + code: "9130" + }, + { + x: 69.900650024414, + y: -1556.0500488281, + code: "9131" + }, + { + x: 43.629463195801, + y: -1594.4680175781, + code: "9132" + }, + { + x: -32.327224731445, + y: -1556.0760498047, + code: "9133" + }, + { + x: -62.70182800293, + y: -1518.9624023438, + code: "9134" + }, + { + x: -23.499725341797, + y: -1489.4859619141, + code: "9135" + }, + { + x: 12.798816680908, + y: -1521.9652099609, + code: "9136" + }, + { + x: 112.20829772949, + y: -1510.1943359375, + code: "9137" + }, + { + x: 141.41571044922, + y: -1531.4499511719, + code: "9138" + }, + { + x: 172.38650512695, + y: -1560.9638671875, + code: "9139" + }, + { + x: 213.37115478516, + y: -1538.5693359375, + code: "9140" + }, + { + x: 181.76721191406, + y: -1504.3637695313, + code: "9141" + }, + { + x: 153.11860656738, + y: -1473.7055664063, + code: "9142" + }, + { + x: 181.72525024414, + y: -1446.0069580078, + code: "9143" + }, + { + x: 222.1319732666, + y: -1474.9735107422, + code: "9144" + }, + { + x: 257.80902099609, + y: -1508.0555419922, + code: "9145" + }, + { + x: 302.36294555664, + y: -1466.7805175781, + code: "9146" + }, + { + x: 327.43359375, + y: -1572.4595947266, + code: "9147" + }, + { + x: 376.68545532227, + y: -1613.8193359375, + code: "9148" + }, + { + x: 264.19937133789, + y: -1599.6833496094, + code: "9149" + }, + { + x: 296.95776367188, + y: -1631.5750732422, + code: "9150" + }, + { + x: 336.20071411133, + y: -1661.7042236328, + code: "9151" + }, + { + x: 371.90850830078, + y: -1688.9027099609, + code: "9152" + }, + { + x: 408.19897460938, + y: -1652.3526611328, + code: "9153" + }, + { + x: 482.81744384766, + y: -1695.4899902344, + code: "9154" + }, + { + x: 444.13436889648, + y: -1715.5695800781, + code: "9155" + }, + { + x: 415.75253295898, + y: -1750.6276855469, + code: "9156" + }, + { + x: 381.80648803711, + y: -1806.7263183594, + code: "9157" + }, + { + x: 359.66192626953, + y: -1832.7221679688, + code: "9158" + }, + { + x: 337.51217651367, + y: -1857.5415039063, + code: "9159" + }, + { + x: 283.48712158203, + y: -1913.0360107422, + code: "9160" + }, + { + x: 257.18014526367, + y: -1937.8416748047, + code: "9161" + }, + { + x: 239.14413452148, + y: -1966.7734375, + code: "9162" + }, + { + x: 216.37110900879, + y: -1992.1818847656, + code: "9163" + }, + { + x: 196.4766998291, + y: -2023.4451904297, + code: "9164" + }, + { + x: 234.02917480469, + y: -2044.75, + code: "9165" + }, + { + x: 251.40965270996, + y: -2019.3680419922, + code: "9166" + }, + { + x: 277.07366943359, + y: -1992.8375244141, + code: "9167" + }, + { + x: 296.23071289063, + y: -1963.3359375, + code: "9168" + }, + { + x: 311.83898925781, + y: -1937.9681396484, + code: "9169" + }, + { + x: 362.85647583008, + y: -1890.7777099609, + code: "9170" + }, + { + x: 393.24688720703, + y: -1865.4180908203, + code: "9171" + }, + { + x: 421.23541259766, + y: -1838.8874511719, + code: "9172" + }, + { + x: 463.40255737305, + y: -1775.1500244141, + code: "9173" + }, + { + x: 464.87399291992, + y: -1739.7834472656, + code: "9174" + }, + { + x: 571.39288330078, + y: -1684.9041748047, + code: "9175" + }, + { + x: 543.89892578125, + y: -1736.8942871094, + code: "9176" + }, + { + x: 541.19067382813, + y: -1762.2819824219, + code: "9177" + }, + { + x: 542.03228759766, + y: -1794.7651367188, + code: "9178" + }, + { + x: 526.35394287109, + y: -1823.7244873047, + code: "9179" + }, + { + x: 530.18414306641, + y: -1853.2639160156, + code: "9180" + }, + { + x: 466.10235595703, + y: -1886.9458007813, + code: "9181" + }, + { + x: 432.15661621094, + y: -1916.4638671875, + code: "9182" + }, + { + x: 352.16525268555, + y: -1992.0555419922, + code: "9183" + }, + { + x: 296.36557006836, + y: -2062.3430175781, + code: "9184" + }, + { + x: 329.69763183594, + y: -2095.4055175781, + code: "9185" + }, + { + x: 431.13494873047, + y: -2068.9138183594, + code: "9186" + }, + { + x: 476.84338378906, + y: -1957.9775390625, + code: "9187" + }, + { + x: 524.31469726563, + y: -1937.3402099609, + code: "9188" + }, + { + x: 568.86346435547, + y: -1911.3776855469, + code: "9189" + }, + { + x: 601.60778808594, + y: -1886.6081542969, + code: "9190" + }, + { + x: 600.12127685547, + y: -1936.2330322266, + code: "9191" + }, + { + x: 569.69812011719, + y: -1959.2707519531, + code: "9192" + }, + { + x: 470.78228759766, + y: -1987.6180419922, + code: "9193" + }, + { + x: 548.95880126953, + y: -1988.240234375, + code: "9194" + }, + { + x: 509.10345458984, + y: -2015.9930419922, + code: "9195" + }, + { + x: 433.83679199219, + y: -2069.7150878906, + code: "9196" + }, + { + x: 384.50933837891, + y: -2129.9582519531, + code: "9197" + }, + { + x: 404.27166748047, + y: -2222.0832519531, + code: "9198" + }, + { + x: 470.06311035156, + y: -2186.6831054688, + code: "9199" + }, + { + x: 488.64047241211, + y: -2285.2763671875, + code: "9200" + }, + { + x: 550.28009033203, + y: -2390.9594726563, + code: "9201" + }, + { + x: 551.72241210938, + y: -2349.0900878906, + code: "9202" + }, + { + x: 553.7626953125, + y: -2314.2734375, + code: "9203" + }, + { + x: 551.09069824219, + y: -2248.7790527344, + code: "9204" + }, + { + x: 552.52258300781, + y: -2219.2861328125, + code: "9205" + }, + { + x: 560.46600341797, + y: -2189.7861328125, + code: "9206" + }, + { + x: 558.97125244141, + y: -2160.2861328125, + code: "9207" + }, + { + x: 559.83239746094, + y: -2131.3762207031, + code: "9208" + }, + { + x: 557.73120117188, + y: -2103.06640625, + code: "9209" + }, + { + x: 675.45660400391, + y: -2450.7734375, + code: "9210" + }, + { + x: 681.64501953125, + y: -2418.3347167969, + code: "9211" + }, + { + x: 686.61383056641, + y: -2390.6101074219, + code: "9212" + }, + { + x: 687.48236083984, + y: -2362.31640625, + code: "9213" + }, + { + x: 690.10327148438, + y: -2331.0654296875, + code: "9214" + }, + { + x: 698.06634521484, + y: -2294.5026855469, + code: "9215" + }, + { + x: 698.34210205078, + y: -2269.16796875, + code: "9216" + }, + { + x: 699.18249511719, + y: -2238.5056152344, + code: "9217" + }, + { + x: 703.57458496094, + y: -2207.85546875, + code: "9218" + }, + { + x: 703.25238037109, + y: -2178.9763183594, + code: "9219" + }, + { + x: 704.72296142578, + y: -2150.6665039063, + code: "9220" + }, + { + x: 706.17254638672, + y: -2125.3178710938, + code: "9221" + }, + { + x: 709.99371337891, + y: -2094.5502929688, + code: "9222" + }, + { + x: 717.91540527344, + y: -2035.6749267578, + code: "9223" + }, + { + x: 724.09515380859, + y: -2005.595703125, + code: "9224" + }, + { + x: 726.11364746094, + y: -1980.8083496094, + code: "9225" + }, + { + x: 731.1142578125, + y: -1946.6137695313, + code: "9226" + }, + { + x: 733.75372314453, + y: -1918.3166503906, + code: "9227" + }, + { + x: 742.89678955078, + y: -1889.4262695313, + code: "9228" + }, + { + x: 751.99627685547, + y: -1860.5263671875, + code: "9229" + }, + { + x: 757.55535888672, + y: -1835.16796875, + code: "9230" + }, + { + x: 766.69635009766, + y: -1808.6374511719, + code: "9231" + }, + { + x: 766.94219970703, + y: -1780.9069824219, + code: "9232" + }, + { + x: 779.58880615234, + y: -1710.7069091797, + code: "9233" + }, + { + x: 782.20367431641, + y: -1682.4166259766, + code: "9234" + }, + { + x: 793.11779785156, + y: -1654.1166992188, + code: "9235" + }, + { + x: 794.57348632813, + y: -1621.0943603516, + code: "9236" + }, + { + x: 800.15460205078, + y: -1594.5374755859, + code: "9237" + }, + { + x: 769.15734863281, + y: -1517.2236328125, + code: "9238" + }, + { + x: 757.63647460938, + y: -1492.4582519531, + code: "9239" + }, + { + x: 750.80926513672, + y: -1464.7569580078, + code: "9240" + }, + { + x: 759.35656738281, + y: -1407.5430908203, + code: "9241" + }, + { + x: 760.82312011719, + y: -1376.2651367188, + code: "9242" + }, + { + x: 756.37023925781, + y: -1330.2581787109, + code: "9243" + }, + { + x: 758.41387939453, + y: -1304.3277587891, + code: "9244" + }, + { + x: 760.4638671875, + y: -1271.2944335938, + code: "9245" + }, + { + x: 841.01965332031, + y: -1301.9943847656, + code: "9246" + }, + { + x: 900.31994628906, + y: -1251.2360839844, + code: "9247" + }, + { + x: 962.57122802734, + y: -1268.3680419922, + code: "9248" + }, + { + x: 916.81060791016, + y: -1304.9971923828, + code: "9249" + }, + { + x: 905.87719726563, + y: -1339.2360839844, + code: "9250" + }, + { + x: 869.23614501953, + y: -1366.6544189453, + code: "9251" + }, + { + x: 846.77093505859, + y: -1394.1931152344, + code: "9252" + }, + { + x: 930.86163330078, + y: -1485.1027832031, + code: "9253" + }, + { + x: 901.62854003906, + y: -1528.8305664063, + code: "9254" + }, + { + x: 932.58679199219, + y: -1561.9053955078, + code: "9255" + }, + { + x: 898.01599121094, + y: -1591.4638671875, + code: "9256" + }, + { + x: 913.63989257813, + y: -1631.0485839844, + code: "9257" + }, + { + x: 908.58026123047, + y: -1680.0430908203, + code: "9258" + }, + { + x: 908.25177001953, + y: -1726.0915527344, + code: "9259" + }, + { + x: 914.44543457031, + y: -1796.9332275391, + code: "9260" + }, + { + x: 875.14385986328, + y: -1819.970703125, + code: "9261" + }, + { + x: 913.17010498047, + y: -1844.7916259766, + code: "9262" + }, + { + x: 870.888671875, + y: -1868.0417480469, + code: "9263" + }, + { + x: 911.90606689453, + y: -1888.6846923828, + code: "9264" + }, + { + x: 856.70599365234, + y: -1910.9805908203, + code: "9265" + }, + { + x: 910.48345947266, + y: -1934.7833251953, + code: "9266" + }, + { + x: 849.00329589844, + y: -1950.0068359375, + code: "9267" + }, + { + x: 903.59759521484, + y: -1964.8068847656, + code: "9268" + }, + { + x: 842.453125, + y: -1985.509765625, + code: "9269" + }, + { + x: 900.58935546875, + y: -2003.2583007813, + code: "9270" + }, + { + x: 842.40466308594, + y: -2021.5987548828, + code: "9271" + }, + { + x: 896.99774169922, + y: -2044.6206054688, + code: "9272" + }, + { + x: 829.95080566406, + y: -2106.62890625, + code: "9273" + }, + { + x: 890.45043945313, + y: -2134.9833984375, + code: "9274" + }, + { + x: 827.58190917969, + y: -2155.8142089844, + code: "9275" + }, + { + x: 884.50866699219, + y: -2178.1303710938, + code: "9276" + }, + { + x: 825.17401123047, + y: -2192.6745605469, + code: "9277" + }, + { + x: 880.33807373047, + y: -2221.8735351563, + code: "9278" + }, + { + x: 817.43304443359, + y: -2269.1223144531, + code: "9279" + }, + { + x: 878.49090576172, + y: -2281.5456542969, + code: "9280" + }, + { + x: 809.67956542969, + y: -2294.5361328125, + code: "9281" + }, + { + x: 874.87359619141, + y: -2310.4873046875, + code: "9282" + }, + { + x: 813.75372314453, + y: -2327.0275878906, + code: "9283" + }, + { + x: 863.62548828125, + y: -2348.8903808594, + code: "9284" + }, + { + x: 805.45458984375, + y: -2355.9831542969, + code: "9285" + }, + { + x: 860.04772949219, + y: -2377.25, + code: "9286" + }, + { + x: 806.87121582031, + y: -2393.8037109375, + code: "9287" + }, + { + x: 801.77374267578, + y: -2427.5217285156, + code: "9288" + }, + { + x: 950.17541503906, + y: -2436.9929199219, + code: "9289" + }, + { + x: 994.12274169922, + y: -2416.9306640625, + code: "9290" + }, + { + x: 961.46490478516, + y: -2391.5678710938, + code: "9291" + }, + { + x: 1003.6517944336, + y: -2362.6762695313, + code: "9292" + }, + { + x: 964.39349365234, + y: -2337.3178710938, + code: "9293" + }, + { + x: 1010.0933837891, + y: -2314.3291015625, + code: "9294" + }, + { + x: 964.29998779297, + y: -2289.5583496094, + code: "9295" + }, + { + x: 1013.585144043, + y: -2265.3984375, + code: "9296" + }, + { + x: 964.84912109375, + y: -2245.3303222656, + code: "9297" + }, + { + x: 1012.9049682617, + y: -2221.7387695313, + code: "9298" + }, + { + x: 979.58270263672, + y: -2181.4865722656, + code: "9299" + }, + { + x: 1020.4531860352, + y: -2158.0944824219, + code: "9300" + }, + { + x: 979.57885742188, + y: -2133.8581542969, + code: "9301" + }, + { + x: 1023.3827514648, + y: -2115.6013183594, + code: "9302" + }, + { + x: 985.86437988281, + y: -2051.3095703125, + code: "9303" + }, + { + x: 1059.4138183594, + y: -2050.6486816406, + code: "9304" + }, + { + x: 1133.3771972656, + y: -2048.4389648438, + code: "9305" + }, + { + x: 1099.4060058594, + y: -2003.5888671875, + code: "9306" + }, + { + x: 992.85186767578, + y: -2015.4055175781, + code: "9307" + }, + { + x: 1004.9475708008, + y: -1976.4914550781, + code: "9308" + }, + { + x: 1080.1566162109, + y: -1966.4652099609, + code: "9309" + }, + { + x: 1001.9356689453, + y: -1938.7569580078, + code: "9310" + }, + { + x: 1068.3026123047, + y: -1934.0775146484, + code: "9311" + }, + { + x: 1003.0715942383, + y: -1870.3498535156, + code: "9312" + }, + { + x: 1054.6960449219, + y: -1853.2316894531, + code: "9313" + }, + { + x: 998.73413085938, + y: -1835.5299072266, + code: "9314" + }, + { + x: 1054.0369873047, + y: -1817.8415527344, + code: "9315" + }, + { + x: 996.44519042969, + y: -1804.2734375, + code: "9316" + }, + { + x: 1002.0046386719, + y: -1738.1887207031, + code: "9317" + }, + { + x: 1007.0152587891, + y: -1692.7485351563, + code: "9318" + }, + { + x: 1009.063659668, + y: -1639.0346679688, + code: "9319" + }, + { + x: 1007.5717163086, + y: -1587.1055908203, + code: "9320" + }, + { + x: 1007.8425292969, + y: -1538.1569824219, + code: "9321" + }, + { + x: 1009.8638305664, + y: -1490.3873291016, + code: "9322" + }, + { + x: 991.84326171875, + y: -1392.4138183594, + code: "9323" + }, + { + x: 1206.3765869141, + y: -1256.6513671875, + code: "9324" + }, + { + x: 1151.7459716797, + y: -1287.9846191406, + code: "9325" + }, + { + x: 1204.5270996094, + y: -1311.0207519531, + code: "9326" + }, + { + x: 1149.8963623047, + y: -1334.0708007813, + code: "9327" + }, + { + x: 1200.9064941406, + y: -1357.1208496094, + code: "9328" + }, + { + x: 1147.4772949219, + y: -1384.3026123047, + code: "9329" + }, + { + x: 1196.14453125, + y: -1406.1903076172, + code: "9330" + }, + { + x: 1140.3162841797, + y: -1481.7553710938, + code: "9331" + }, + { + x: 1221.4600830078, + y: -1483.5708007813, + code: "9332" + }, + { + x: 1153.2701416016, + y: -1523.1486816406, + code: "9333" + }, + { + x: 1230.2770996094, + y: -1527.8721923828, + code: "9334" + }, + { + x: 1164.4307861328, + y: -1565.0875244141, + code: "9335" + }, + { + x: 1237.6911621094, + y: -1575.8647460938, + code: "9336" + }, + { + x: 1162.5869140625, + y: -1613.5277099609, + code: "9337" + }, + { + x: 1262.0091552734, + y: -1637.7512207031, + code: "9338" + }, + { + x: 1227.4664306641, + y: -1736.3762207031, + code: "9339" + }, + { + x: 1288.5411376953, + y: -1704.5250244141, + code: "9340" + }, + { + x: 1351.3620605469, + y: -1743.5083007813, + code: "9341" + }, + { + x: 1282.580078125, + y: -1772.4735107422, + code: "9342" + }, + { + x: 1215.5510253906, + y: -1794.3403320313, + code: "9343" + }, + { + x: 1228.8289794922, + y: -1861.0512695313, + code: "9344" + }, + { + x: 1301.6967773438, + y: -1830.4056396484, + code: "9345" + }, + { + x: 1385.7624511719, + y: -1801.5263671875, + code: "9346" + }, + { + x: 1390.1739501953, + y: -1865.3000488281, + code: "9347" + }, + { + x: 1313.1165771484, + y: -1870.0721435547, + code: "9348" + }, + { + x: 1263.2192382813, + y: -1922.0444335938, + code: "9349" + }, + { + x: 1360.8887939453, + y: -1945.6610107422, + code: "9350" + }, + { + x: 1290.3082275391, + y: -2001.7761230469, + code: "9351" + }, + { + x: 1127.673828125, + y: -2132.865234375, + code: "9352" + }, + { + x: 1107.8725585938, + y: -2171.2678222656, + code: "9353" + }, + { + x: 1138.2448730469, + y: -2210.8486328125, + code: "9354" + }, + { + x: 1098.9436035156, + y: -2242.7248535156, + code: "9355" + }, + { + x: 1143.4632568359, + y: -2276.9858398438, + code: "9356" + }, + { + x: 1103.0340576172, + y: -2302.9584960938, + code: "9357" + }, + { + x: 1147.5634765625, + y: -2335.4653320313, + code: "9358" + }, + { + x: 1090.5855712891, + y: -2360.8818359375, + code: "9359" + }, + { + x: 1087.3000488281, + y: -2401.6291503906, + code: "9360" + }, + { + x: 1175.5441894531, + y: -2396.927734375, + code: "9361" + }, + { + x: 1205.8970947266, + y: -2355.6303710938, + code: "9362" + }, + { + x: 1227.3927001953, + y: -2301.9345703125, + code: "9363" + }, + { + x: 1199.8991699219, + y: -2245.8735351563, + code: "9364" + }, + { + x: 1180.0726318359, + y: -2176.2470703125, + code: "9365" + }, + { + x: 1306.0710449219, + y: -2080.625, + code: "9366" + }, + { + x: 1348.8416748047, + y: -2168.0109863281, + code: "9367" + }, + { + x: 1380.3765869141, + y: -2258.9526367188, + code: "9368" + }, + { + x: 1390.6770019531, + y: -2358.1665039063, + code: "9369" + }, + { + x: 1366.7409667969, + y: -2466.8110351563, + code: "9370" + }, + { + x: 1296.7493896484, + y: -2558.3432617188, + code: "9371" + }, + { + x: 1413.8663330078, + y: -2606.1623535156, + code: "9372" + }, + { + x: 1594.7663574219, + y: -2508.2138671875, + code: "9373" + }, + { + x: 1583.8277587891, + y: -2363.6318359375, + code: "9374" + }, + { + x: 1603.5710449219, + y: -2279.240234375, + code: "9375" + }, + { + x: 1614.4672851563, + y: -2189.5275878906, + code: "9376" + }, + { + x: 1540.9575195313, + y: -2138.7861328125, + code: "9377" + }, + { + x: 1599.6800537109, + y: -2038.4526367188, + code: "9378" + }, + { + x: 1484.8383789063, + y: -1946.4165039063, + code: "9379" + }, + { + x: 1661.1246337891, + y: -1895.2449951172, + code: "9380" + }, + { + x: 1486.3830566406, + y: -1781.7891845703, + code: "9381" + }, + { + x: 1592.4521484375, + y: -1723.3624267578, + code: "9382" + }, + { + x: 1699.5831298828, + y: -1697.4276123047, + code: "9383" + }, + { + x: 1725.2248535156, + y: -1630.7484130859, + code: "9384" + }, + { + x: 1454.5555419922, + y: -1683.2845458984, + code: "9385" + }, + { + x: 1714.5651855469, + y: -1546.9458007813, + code: "9386" + }, + { + x: 1733.7318115234, + y: -1469.6234130859, + code: "9387" + }, + { + x: 1584.0625, + y: -1536.9415283203, + code: "9388" + }, + { + x: 1781.4957275391, + y: -1350.4221191406, + code: "9389" + }, + { + x: 1938.7570800781, + y: -1018.7138671875, + code: "9390" + }, + { + x: -1021.8845825195, + y: -1994.0374755859, + code: "10000" + }, + { + x: -946.05133056641, + y: -2059.5708007813, + code: "10001" + }, + { + x: -846.64013671875, + y: -2153.4541015625, + code: "10002" + }, + { + x: -720.03704833984, + y: -2267.4235839844, + code: "10003" + }, + { + x: -567.19012451172, + y: -2297.6831054688, + code: "10005" + }, + { + x: -643.64276123047, + y: -2397.4567871094, + code: "10006" + }, + { + x: -710.05786132813, + y: -2500.2082519531, + code: "10007" + }, + { + x: -788.90386962891, + y: -2397.5417480469, + code: "10008" + }, + { + x: -778.62176513672, + y: -2611.2302246094, + code: "10009" + }, + { + x: -848.00964355469, + y: -2760, + code: "10010" + }, + { + x: -873.72888183594, + y: -2863.2985839844, + code: "10011" + }, + { + x: -949.60260009766, + y: -3003.7858886719, + code: "10012" + }, + { + x: -1184.2764892578, + y: -3463.6401367188, + code: "10013" + }, + { + x: -1284.3541259766, + y: -3403.44140625, + code: "10014" + }, + { + x: -1358.4816894531, + y: -3354.45703125, + code: "10015" + }, + { + x: -1407.7902832031, + y: -3296.6528320313, + code: "10016" + }, + { + x: -1471.8472900391, + y: -3266.0051269531, + code: "10017" + }, + { + x: -1573.0844726563, + y: -3227.0913085938, + code: "10018" + }, + { + x: -1573.0844726563, + y: -3227.0913085938, + code: "10019" + }, + { + x: -1930.2440185547, + y: -3038.2138671875, + code: "10020" + }, + { + x: -1804.8181152344, + y: -2797.4165039063, + code: "10021" + }, + { + x: -1332.3444824219, + y: -2632.7375488281, + code: "10022" + }, + { + x: -1237.0220947266, + y: -2800.9790039063, + code: "10023" + }, + { + x: -1070.2985839844, + y: -2798.6389160156, + code: "10024" + }, + { + x: -941.36663818359, + y: -2652.2802734375, + code: "10025" + }, + { + x: -1019.6137084961, + y: -2617.4733886719, + code: "10026" + }, + { + x: -1037.0651855469, + y: -2457.5346679688, + code: "10027" + }, + { + x: -1207.3972167969, + y: -2458.1403808594, + code: "10028" + }, + { + x: -1280.8916015625, + y: -2363.7055664063, + code: "10029" + }, + { + x: -1156.0582275391, + y: -2324.7915039063, + code: "10030" + }, + { + x: -1142.8206787109, + y: -2122.3347167969, + code: "10031" + }, + { + x: -1141.9665527344, + y: -2022.0026855469, + code: "10032" + }, + { + x: -1057.8874511719, + y: -2146.0083007813, + code: "10033" + }, + { + x: -1086.5305175781, + y: -2231.6403808594, + code: "10034" + }, + { + x: -984.72900390625, + y: -2211.5805664063, + code: "10035" + }, + { + x: -1057.0612792969, + y: -2364.4816894531, + code: "10036" + }, + { + x: -964.13317871094, + y: -2296.6179199219, + code: "10037" + }, + { + x: -903.05792236328, + y: -2382.240234375, + code: "10038" + }, + { + x: -917.56365966797, + y: -2530.4096679688, + code: "10039" + }, + { + x: -474.59829711914, + y: -2845.0678710938, + code: "10040" + }, + { + x: -504.41088867188, + y: -2782.5302734375, + code: "10041" + }, + { + x: -424.00668334961, + y: -2731.7861328125, + code: "10042" + }, + { + x: -459.76351928711, + y: -2650.931640625, + code: "10043" + }, + { + x: -352.66604614258, + y: -2647.4084472656, + code: "10044" + }, + { + x: -297.56530761719, + y: -2684.6904296875, + code: "10045" + }, + { + x: -209.89566040039, + y: -2661.62890625, + code: "10046" + }, + { + x: -236.75959777832, + y: -2585.5043945313, + code: "10047" + }, + { + x: -244.77053833008, + y: -2511.7653808594, + code: "10048" + }, + { + x: -301.76354980469, + y: -2463.3969726563, + code: "10049" + }, + { + x: -169.87484741211, + y: -2423.2609863281, + code: "10050" + }, + { + x: -145.40510559082, + y: -2464.0290527344, + code: "10051" + }, + { + x: -74.323204040527, + y: -2423.9111328125, + code: "10052" + }, + { + x: -114.78554534912, + y: -2489.470703125, + code: "10053" + }, + { + x: -12.978828430176, + y: -2471.2014160156, + code: "10054" + }, + { + x: 54.585052490234, + y: -2498.4028320313, + code: "10055" + }, + { + x: 56.023921966553, + y: -2579.3178710938, + code: "10056" + }, + { + x: -133.77590942383, + y: -2585.8427734375, + code: "10057" + }, + { + x: -124.0620880127, + y: -2680.87890625, + code: "10058" + }, + { + x: -47.660713195801, + y: -2703.9208984375, + code: "10059" + }, + { + x: 60.614250183105, + y: -2704.5400390625, + code: "10060" + }, + { + x: 151.79632568359, + y: -2609.5153808594, + code: "10061" + }, + { + x: 218.74485778809, + y: -2508.0222167969, + code: "10062" + }, + { + x: 216.63217163086, + y: -2449.0222167969, + code: "10063" + }, + { + x: 232.24067687988, + y: -2581.2719726563, + code: "10064" + }, + { + x: 319.8544921875, + y: -2603.1403808594, + code: "10065" + }, + { + x: 343.10870361328, + y: -2727.7387695313, + code: "10066" + }, + { + x: 342.80514526367, + y: -2806.2565917969, + code: "10067" + }, + { + x: 222.08653259277, + y: -2809.841796875, + code: "10068" + }, + { + x: 139.70875549316, + y: -2845.6511230469, + code: "10069" + }, + { + x: 140.58364868164, + y: -2956.08203125, + code: "10070" + }, + { + x: 142.61405944824, + y: -3027.5231933594, + code: "10071" + }, + { + x: 136.99057006836, + y: -3082.4460449219, + code: "10072" + }, + { + x: 134.88229370117, + y: -3140.8874511719, + code: "10073" + }, + { + x: 134.55319213867, + y: -3196.9763183594, + code: "10074" + }, + { + x: 137.20489501953, + y: -3256.5334472656, + code: "10075" + }, + { + x: 136.90292358398, + y: -3309.1843261719, + code: "10076" + }, + { + x: 231.04737854004, + y: -3296.2138671875, + code: "10077" + }, + { + x: 231.29327392578, + y: -3237.2219238281, + code: "10078" + }, + { + x: 233.31416320801, + y: -3179.9929199219, + code: "10079" + }, + { + x: 220.00987243652, + y: -3124.4958496094, + code: "10080" + }, + { + x: 253.93916320801, + y: -3047.2236328125, + code: "10081" + }, + { + x: 240.0265045166, + y: -2994.1252441406, + code: "10082" + }, + { + x: 253.2794342041, + y: -2944.5668945313, + code: "10083" + }, + { + x: 501.31994628906, + y: -2587.4873046875, + code: "10085" + }, + { + x: 501.59371948242, + y: -2646.5278320313, + code: "10086" + }, + { + x: 621.66955566406, + y: -2626.48046875, + code: "10087" + }, + { + x: 657.95031738281, + y: -2702.6457519531, + code: "10088" + }, + { + x: 557.25573730469, + y: -2723.8996582031, + code: "10089" + }, + { + x: 480.21716308594, + y: -2771.1220703125, + code: "10090" + }, + { + x: 548.96545410156, + y: -2798.8928222656, + code: "10091" + }, + { + x: 620.66687011719, + y: -2840.8093261719, + code: "10092" + }, + { + x: 486.93087768555, + y: -2918.7470703125, + code: "10093" + }, + { + x: 477.15866088867, + y: -2961.25, + code: "10094" + }, + { + x: 581.92266845703, + y: -2960.0693359375, + code: "10095" + }, + { + x: 475.35305786133, + y: -3007.3217773438, + code: "10096" + }, + { + x: 581.89324951172, + y: -3002.6276855469, + code: "10097" + }, + { + x: 473.53244018555, + y: -3084.1081542969, + code: "10098" + }, + { + x: 564.69610595703, + y: -3063.4899902344, + code: "10099" + }, + { + x: 549.59582519531, + y: -3117.8054199219, + code: "10100" + }, + { + x: 548.07312011719, + y: -3252.4333496094, + code: "10101" + }, + { + x: 761.43371582031, + y: -3197.5541992188, + code: "10102" + }, + { + x: 780.36627197266, + y: -3267.2524414063, + code: "10103" + }, + { + x: 858.76013183594, + y: -3309.2094726563, + code: "10104" + }, + { + x: 983.59204101563, + y: -3308.0690917969, + code: "10105" + }, + { + x: 1113.1137695313, + y: -3305.1486816406, + code: "10106" + }, + { + x: 1216.6917724609, + y: -3325.2189941406, + code: "10107" + }, + { + x: 1218.1235351563, + y: -3249.6943359375, + code: "10108" + }, + { + x: 1114.5041503906, + y: -3259.1442871094, + code: "10109" + }, + { + x: 983.85168457031, + y: -3255.2136230469, + code: "10110" + }, + { + x: 894.91137695313, + y: -3256.23046875, + code: "10111" + }, + { + x: 845.85693359375, + y: -3202.8271484375, + code: "10112" + }, + { + x: 937.34619140625, + y: -3203.740234375, + code: "10113" + }, + { + x: 1026.1749267578, + y: -3202.5693359375, + code: "10114" + }, + { + x: 1127.9708251953, + y: -3201.4191894531, + code: "10115" + }, + { + x: 1218.5554199219, + y: -3197.3176269531, + code: "10116" + }, + { + x: 1218.8428955078, + y: -3125.3359375, + code: "10117" + }, + { + x: 1130.5513916016, + y: -3150.1416015625, + code: "10118" + }, + { + x: 1029.3150634766, + y: -3148.3669433594, + code: "10119" + }, + { + x: 935.14862060547, + y: -3147.8098144531, + code: "10120" + }, + { + x: 845.08093261719, + y: -3150.8015136719, + code: "10121" + }, + { + x: 846.52368164063, + y: -3091.5949707031, + code: "10122" + }, + { + x: 937.10565185547, + y: -3094.2111816406, + code: "10123" + }, + { + x: 1029.4763183594, + y: -3095.4301757813, + code: "10124" + }, + { + x: 1127.7114257813, + y: -3093.1330566406, + code: "10125" + }, + { + x: 1141.5694580078, + y: -3041.7458496094, + code: "10126" + }, + { + x: 1032.0513916016, + y: -3041.75, + code: "10127" + }, + { + x: 936.71813964844, + y: -3043.4118652344, + code: "10128" + }, + { + x: 847.27087402344, + y: -3042.9594726563, + code: "10129" + }, + { + x: 796.18920898438, + y: -2985.1528320313, + code: "10130" + }, + { + x: 936.33923339844, + y: -2988.7416992188, + code: "10131" + }, + { + x: 1031.6276855469, + y: -2989.3403320313, + code: "10132" + }, + { + x: 1140.5041503906, + y: -2988.7595214844, + code: "10133" + }, + { + x: 1249.4041748047, + y: -2968.1401367188, + code: "10134" + }, + { + x: 1141.6721191406, + y: -2930.9624023438, + code: "10135" + }, + { + x: 1032.1513671875, + y: -2929.2290039063, + code: "10136" + }, + { + x: 936.22802734375, + y: -2931.6108398438, + code: "10137" + }, + { + x: 833.19458007813, + y: -2920.4348144531, + code: "10138" + }, + { + x: 867.67919921875, + y: -2876.1791992188, + code: "10139" + }, + { + x: 1049.1584472656, + y: -2876.1999511719, + code: "10140" + }, + { + x: 1644.1221923828, + y: 6456.0561523438, + code: "1000" + }, + { + x: 1538.3503417969, + y: 6344.6381835938, + code: "1001" + }, + { + x: 1579.3702392578, + y: 6591.4409179688, + code: "1002" + }, + { + x: 1409.5551757813, + y: 6563.380859375, + code: "1003" + }, + { + x: 525.22381591797, + y: 6591.1264648438, + code: "1004" + }, + { + x: 664.33813476563, + y: 6472.9379882813, + code: "1005" + }, + { + x: 529.42224121094, + y: 6483.48828125, + code: "1006" + }, + { + x: 529.42248535156, + y: 6483.48828125, + code: "1007" + }, + { + x: 264.91348266602, + y: 6651.58203125, + code: "1008" + }, + { + x: 350.6750793457, + y: 6493.5786132813, + code: "1009" + }, + { + x: 268.71212768555, + y: 6608.3237304688, + code: "1010" + }, + { + x: 251.9838104248, + y: 6486.3271484375, + code: "1011" + }, + { + x: 162.81225585938, + y: 6609.9672851563, + code: "1012" + }, + { + x: 159.21286010742, + y: 6470.6127929688, + code: "1013" + }, + { + x: 94.202827453613, + y: 6532.0102539063, + code: "1014" + }, + { + x: 123.64725494385, + y: 6432.8974609375, + code: "1015" + }, + { + x: 58.179302215576, + y: 6489.2016601563, + code: "1016" + }, + { + x: 94.797012329102, + y: 6396.873046875, + code: "1017" + }, + { + x: 17.470808029175, + y: 6448.9428710938, + code: "1018" + }, + { + x: 51.979454040527, + y: 6359.1142578125, + code: "1019" + }, + { + x: -23.21159362793, + y: 6411.6162109375, + code: "1020" + }, + { + x: 7.8913064002991, + y: 6316.7319335938, + code: "1021" + }, + { + x: -64.347145080566, + y: 6370.0634765625, + code: "1022" + }, + { + x: -39.561515808105, + y: 6268.4052734375, + code: "1023" + }, + { + x: -99.09156036377, + y: 6333.6215820313, + code: "1024" + }, + { + x: -82.781867980957, + y: 6226.4506835938, + code: "1025" + }, + { + x: -148.220703125, + y: 6284.8950195313, + code: "1026" + }, + { + x: -133.62596130371, + y: 6179.8168945313, + code: "1027" + }, + { + x: -190.1768951416, + y: 6245.0219726563, + code: "1028" + }, + { + x: -174.72891235352, + y: 6134.8852539063, + code: "1029" + }, + { + x: -230.4298248291, + y: 6202.61328125, + code: "1030" + }, + { + x: -217.51998901367, + y: 6094.6030273438, + code: "1031" + }, + { + x: -279.58258056641, + y: 6155.5864257813, + code: "1032" + }, + { + x: -267.09341430664, + y: 6047.9760742188, + code: "1033" + }, + { + x: -330.22689819336, + y: 6108.1186523438, + code: "1034" + }, + { + x: -307.57904052734, + y: 6003.4912109375, + code: "1035" + }, + { + x: -378.52648925781, + y: 6057.66015625, + code: "1036" + }, + { + x: -352.06726074219, + y: 5955.1591796875, + code: "1037" + }, + { + x: -469.18984985352, + y: 6007.6665039063, + code: "1038" + }, + { + x: -469.39916992188, + y: 6099.9770507813, + code: "1039" + }, + { + x: -392.09533691406, + y: 6090.6328125, + code: "1040" + }, + { + x: -433.38018798828, + y: 6151.5864257813, + code: "1041" + }, + { + x: -346.1640625, + y: 6137.7934570313, + code: "1042" + }, + { + x: -374.97473144531, + y: 6208.701171875, + code: "1043" + }, + { + x: -305.74212646484, + y: 6179.0537109375, + code: "1044" + }, + { + x: -310.18420410156, + y: 6285.7768554688, + code: "1045" + }, + { + x: -254.49468994141, + y: 6231.5395507813, + code: "1046" + }, + { + x: -275.02786254883, + y: 6317.8974609375, + code: "1047" + }, + { + x: -210.02728271484, + y: 6272.1098632813, + code: "1048" + }, + { + x: -242.01275634766, + y: 6353.8388671875, + code: "1049" + }, + { + x: -175.75666809082, + y: 6312.71875, + code: "1050" + }, + { + x: -196.32781982422, + y: 6388.9331054688, + code: "1051" + }, + { + x: -123.28033447266, + y: 6359.677734375, + code: "1052" + }, + { + x: -167.09519958496, + y: 6425.7084960938, + code: "1053" + }, + { + x: -85.186561584473, + y: 6396.4775390625, + code: "1054" + }, + { + x: -119.70399475098, + y: 6479.458984375, + code: "1055" + }, + { + x: -42.021728515625, + y: 6441.3334960938, + code: "1056" + }, + { + x: -76.130386352539, + y: 6520.498046875, + code: "1057" + }, + { + x: -4.3509998321533, + y: 6476.8276367188, + code: "1058" + }, + { + x: -37.633438110352, + y: 6558.9624023438, + code: "1059" + }, + { + x: 34.14892578125, + y: 6519.5629882813, + code: "1060" + }, + { + x: 12.325073242188, + y: 6597.4770507813, + code: "1061" + }, + { + x: 74.358093261719, + y: 6555.9448242188, + code: "1062" + }, + { + x: 86.009437561035, + y: 6652.0385742188, + code: "1063" + }, + { + x: 10.838283538818, + y: 6674.4462890625, + code: "1064" + }, + { + x: -58.855964660645, + y: 6644.7534179688, + code: "1065" + }, + { + x: -112.46115112305, + y: 6602.3979492188, + code: "1066" + }, + { + x: -165.63864135742, + y: 6555.3393554688, + code: "1067" + }, + { + x: -270.03433227539, + y: 6632.380859375, + code: "1068" + }, + { + x: -201.63911437988, + y: 6511.2241210938, + code: "1069" + }, + { + x: -234.45983886719, + y: 6465.0366210938, + code: "1070" + }, + { + x: -273.66256713867, + y: 6420.53125, + code: "1071" + }, + { + x: -334.03851318359, + y: 6390.0073242188, + code: "1072" + }, + { + x: -386.79467773438, + y: 6351.9189453125, + code: "1073" + }, + { + x: -429.35076904297, + y: 6311.615234375, + code: "1074" + }, + { + x: -451.35699462891, + y: 6268.455078125, + code: "1075" + }, + { + x: -452.24588012695, + y: 6208.68359375, + code: "1076" + }, + { + x: -625.66784667969, + y: 6126.9111328125, + code: "1077" + }, + { + x: -568.72412109375, + y: 5962.5751953125, + code: "1078" + }, + { + x: -663.3935546875, + y: 5785.9438476563, + code: "1079" + }, + { + x: -745.76141357422, + y: 5593.6225585938, + code: "1080" + }, + { + x: -549.91040039063, + y: 5539.8134765625, + code: "1081" + }, + { + x: -521.32379150391, + y: 5301.9467773438, + code: "1082" + }, + { + x: -866.71606445313, + y: 5274.794921875, + code: "1083" + }, + { + x: -933.44134521484, + y: 5172.6826171875, + code: "1084" + }, + { + x: -1107.71484375, + y: 4918.1157226563, + code: "1085" + }, + { + x: -475.41387939453, + y: 4956.7563476563, + code: "1086" + }, + { + x: 460.43829345703, + y: 5615.6508789063, + code: "1087" + }, + { + x: -110.91479492188, + y: 4656.4223632813, + code: "1088" + }, + { + x: -133.98173522949, + y: 4332.919921875, + code: "1089" + }, + { + x: -257.10409545898, + y: 4196.37890625, + code: "1090" + }, + { + x: -238.30830383301, + y: 4471.0419921875, + code: "1091" + }, + { + x: -371.33514404297, + y: 4337.6025390625, + code: "1092" + }, + { + x: -447.29046630859, + y: 4500.8354492188, + code: "1093" + }, + { + x: -605.73547363281, + y: 4384.0766601563, + code: "1094" + }, + { + x: -648.34130859375, + y: 4479.708984375, + code: "1095" + }, + { + x: -837.50177001953, + y: 4377.8969726563, + code: "1096" + }, + { + x: -845.03680419922, + y: 4481.4077148438, + code: "1097" + }, + { + x: -1145.6888427734, + y: 4329.6235351563, + code: "1098" + }, + { + x: -1209.3537597656, + y: 4432.23046875, + code: "1099" + }, + { + x: -1674.9997558594, + y: 4365.5014648438, + code: "1100" + }, + { + x: -1623.6866455078, + y: 4518.2045898438, + code: "1101" + }, + { + x: -1918.1656494141, + y: 4536.6293945313, + code: "1102" + }, + { + x: -1742.2661132813, + y: 4626.1162109375, + code: "1103" + }, + { + x: -2160.5085449219, + y: 4566.4223632813, + code: "1104" + }, + { + x: -2372.5200195313, + y: 4271.5224609375, + code: "1105" + }, + { + x: 2170.171875, + y: -639.21948242188, + code: "9391" + }, + { + x: 2319.8759765625, + y: -512.19512939453, + code: "9392" + }, + { + x: 2502.6103515625, + y: -386.83917236328, + code: "9393" + }, + { + x: 2582.0139160156, + y: -645.29943847656, + code: "9394" + }, + { + x: 2790.5947265625, + y: -753.72619628906, + code: "9395" + } +]; + +// src/utils/postal/getPostal.ts +async function getPostal(playerPosition) { + const postals = await getPostalCodes(); + let nearestPoint = null; + let minDistance = null; + for (const point of postals) { + const distance = Math.sqrt( + (point.x - playerPosition.x) ** 2 + (point.y - playerPosition.y) ** 2 + ); + if (minDistance === null || distance < minDistance) { + nearestPoint = point; + minDistance = distance; + } + } + return nearestPoint ? nearestPoint.code : null; +} +async function getPostalCodes() { + var _a, _b; + try { + return (_b = (_a = exports["sna-postals"])["readPostalCodes"]) == null ? void 0 : _b.call(_a); + } catch (error) { + console.error(error); + return postals_default; + } +} + +// integrations/call911/server/server.ts +var usePostal = GetConvar("snailycad_use_postal", "false") === "true"; +RegisterCommand( + "sn-call911" /* Call911 */, + (source, args) => { + CancelEvent(); + const name = GetPlayerName(source); + const description = args; + setImmediate(() => { + emitNet("sn:911Call" /* Call911ToClient */, source, { source, name, description }); + }); + }, + false +); +onNet( + "sn:911CallUpdate" /* Call911ToServer */, + async ({ source: player, street, name, description, position }) => { + const postal = usePostal ? await getPostal(position) : null; + const { data } = await cadRequest({ + path: "/911-calls", + method: "POST", + data: { + name, + location: street, + description: description.join(" "), + postal, + gtaMapPosition: { + x: position.x, + y: position.y, + z: position.z, + heading: position.heading + } + } + }); + if (data == null ? void 0 : data.id) { + emitNet("sn:911CallResponse" /* Call911ToClientResponse */, player, "success"); + } else { + emitNet("sn:911CallResponse" /* Call911ToClientResponse */, player, "failed"); + } + CancelEvent(); + } +); +/*! Bundled license information: + +undici/lib/fetch/body.js: + (*! formdata-polyfill. MIT License. Jimmy Wärting *) + +undici/lib/websocket/frame.js: + (*! ws. MIT License. Einar Otto Stangvik *) +*/ diff --git a/resources/[sna]/sna-live-map/client/client.js b/resources/[sna]/sna-live-map/client/client.js new file mode 100644 index 0000000..6a66d09 --- /dev/null +++ b/resources/[sna]/sna-live-map/client/client.js @@ -0,0 +1,305 @@ +"use strict"; + +// src/utils/getWeaponNameFromHash.ts +var WEAPON_HASHES = { + "100416529": "Sniper Rifle", + "101631238": "Fire Extinguisher", + "125959754": "Compact Grenade Launcher", + "126349499": "Snowball", + "137902532": "Vintage Pistol", + "171789620": "Combat PDW", + "177293209": "Heavy Sniper Mk II", + "205991906": "Heavy Sniper", + "317205821": "Sweeper Shotgun", + "324215364": "Micro SMG", + "419712736": "Pipe Wrench", + "453432689": "Pistol", + "487013001": "Pump Shotgun", + "584646201": "AP Pistol", + "600439132": "Ball", + "615608432": "Molotov", + "736523883": "SMG", + "741814745": "Sticky Bomb", + "883325847": "Jerry Can", + "911657153": "Stun Gun", + "940833800": "Stone Hatchet", + "961495388": "Assault Rifle Mk II", + "984333226": "Heavy Shotgun", + "1119849093": "Minigun", + "1141786504": "Golf Club", + "1198256469": "Unholy Hellbringer", + "1198879012": "Flare Gun", + "1233104067": "Flare", + "1317494643": "Hammer", + "1432025498": "Pump Shotgun Mk II", + "1593441988": "Combat Pistol", + "1627465347": "Gusenberg Sweeper", + "1649403952": "Compact Rifle", + "1672152130": "Homing Launcher", + "1737195953": "Nightstick", + "1785463520": "Marksman Rifle Mk II", + "1834241177": "Railgun", + "2017895192": "Sawed-Off Shotgun", + "2024373456": "SMG Mk II", + "2132975508": "Bullpup Rifle", + "2138347493": "Firework Launcher", + "2144741730": "Combat MG", + "2210333304": "Carbine Rifle", + "2227010557": "Crowbar", + "2228681469": "Bullpup Rifle Mk II", + "2285322324": "SNS Pistol Mk II", + "2343591895": "Flashlight", + "2460120199": "Antique Cavalry Dagger", + "2481070269": "Grenade", + "2484171525": "Pool Cue", + "2508868239": "Baseball Bat", + "2526821735": "Special Carbine Mk II", + "2548703416": "Double-Action Revolver", + "2578377531": "Pistol .50", + "2578778090": "Knife", + "2634544996": "MG", + "2640438543": "Bullpup Shotgun", + "2694266206": "BZ Gas", + "2726580491": "Grenade Launcher", + "2828843422": "Musket", + "2874559379": "Proximity Mine", + "2937143193": "Advanced Rifle", + "2939590305": "Up-n-Atomizer", + "2982836145": "RPG", + "3056410471": "Widowmaker", + "3125143736": "Pipe Bomb", + "3173288789": "Mini SMG", + "3218215474": "SNS Pistol", + "3219281620": "Pistol Mk II", + "3220176749": "Assault Rifle", + "3231910285": "Special Carbine", + "3520460075": "Service Rifle", + "3249783761": "Heavy Revolver", + "3342088282": "Marksman Rifle", + "3415619887": "Heavy Revolver Mk II", + "3441901897": "Battle Axe", + "3523564046": "Heavy Pistol", + "3638508604": "Knuckle Duster", + "3675956304": "Machine Pistol", + "3686625920": "Combat MG Mk II", + "3696079510": "Marksman Pistol", + "3713923289": "Machete", + "3756226112": "Switchblade", + "3800352039": "Assault Shotgun", + "4019527611": "Double Barrel Shotgun", + "4024951519": "Assault SMG", + "4191993645": "Hatchet", + "4192643659": "Bottle", + "4208062921": "Carbine Rifle Mk II", + "4256991824": "Tear Gas" +}; +function getWeaponNameFromHash(hash) { + const name = WEAPON_HASHES[hash.toString(10)]; + if (name) { + return name; + } + return null; +} + +// src/utils/getWeapon.ts +function getWeapon(pedId) { + const weaponHash = GetSelectedPedWeapon(pedId); + const hash = getWeaponNameFromHash(weaponHash); + return hash; +} + +// src/utils/getArea.ts +var areaHashes = { + "2072609373": "Blaine County", + "-289320599": "Los Santos" +}; +function getArea(position) { + const areaHash = GetHashOfMapAreaAtCoords(...position); + return areaHashes[areaHash]; +} + +// src/utils/getZone.ts +var areaHashes2 = { + [GetHashKey("AIRP")]: "Los Santos International Airport", + [GetHashKey("ALAMO")]: "Alamo Sea", + [GetHashKey("ALTA")]: "Alta", + [GetHashKey("ARMYB")]: "Fort Zancudo", + [GetHashKey("BANHAMC")]: "Banham Canyon Dr", + [GetHashKey("BANNING")]: "Banning", + [GetHashKey("BEACH")]: "Vespucci Beach", + [GetHashKey("BHAMCA")]: "Banham Canyon", + [GetHashKey("BRADP")]: "Braddock Pass", + [GetHashKey("BRADT")]: "Braddock Tunnel", + [GetHashKey("BURTON")]: "Burton", + [GetHashKey("CALAFB")]: "Calafia Bridge", + [GetHashKey("CANNY")]: "Raton Canyon", + [GetHashKey("CCREAK")]: "Cassidy Creek", + [GetHashKey("CHAMH")]: "Chamberlain Hills", + [GetHashKey("CHIL")]: "Vinewood Hills", + [GetHashKey("CHU")]: "Chumash", + [GetHashKey("CMSW")]: "Chiliad Mountain State Wilderness", + [GetHashKey("CYPRE")]: "Cypress Flats", + [GetHashKey("DAVIS")]: "Davis", + [GetHashKey("DELBE")]: "Del Perro Beach", + [GetHashKey("DELPE")]: "Del Perro", + [GetHashKey("DELSOL")]: "La Puerta", + [GetHashKey("DESRT")]: "Grand Senora Desert", + [GetHashKey("DOWNT")]: "Downtown", + [GetHashKey("DTVINE")]: "Downtown Vinewood", + [GetHashKey("EAST_V")]: "East Vinewood", + [GetHashKey("EBURO")]: "El Burro Heights", + [GetHashKey("ELGORL")]: "El Gordo Lighthouse", + [GetHashKey("ELYSIAN")]: "Elysian Island", + [GetHashKey("GALFISH")]: "Galilee", + [GetHashKey("GOLF")]: "GWC and Golfing Society", + [GetHashKey("GRAPES")]: "Grapeseed", + [GetHashKey("GREATC")]: "Great Chaparral", + [GetHashKey("HARMO")]: "Harmony", + [GetHashKey("HAWICK")]: "Hawick", + [GetHashKey("HORS")]: "Vinewood Racetrack", + [GetHashKey("HUMLAB")]: "Humane Labs and Research", + [GetHashKey("JAIL")]: "Bolingbroke Penitentiary", + [GetHashKey("KOREAT")]: "Little Seoul", + [GetHashKey("LACT")]: "Land Act Reservoir", + [GetHashKey("LAGO")]: "Lago Zancudo", + [GetHashKey("LDAM")]: "Land Act Dam", + [GetHashKey("LEGSQU")]: "Legion Square", + [GetHashKey("LMESA")]: "La Mesa", + [GetHashKey("LOSPUER")]: "La Puerta", + [GetHashKey("MIRR")]: "Mirror Park", + [GetHashKey("MORN")]: "Morningwood", + [GetHashKey("MOVIE")]: "Richards Majestic", + [GetHashKey("MTCHIL")]: "Mount Chiliad", + [GetHashKey("MTGORDO")]: "Mount Gordo", + [GetHashKey("MTJOSE")]: "Mount Josiah", + [GetHashKey("MURRI")]: "Murrieta Heights", + [GetHashKey("NCHU")]: "North Chumash", + [GetHashKey("NOOSE")]: "N.O.O.S.E", + [GetHashKey("OCEANA")]: "Pacific Ocean", + [GetHashKey("PALCOV")]: "Paleto Cove", + [GetHashKey("PALETO")]: "Paleto Bay", + [GetHashKey("PALFOR")]: "Paleto Forest", + [GetHashKey("PALHIGH")]: "Palomino Highlands", + [GetHashKey("PALMPOW")]: "Palmer-Taylor Power Station", + [GetHashKey("PBLUFF")]: "Pacific Bluffs", + [GetHashKey("PBOX")]: "Pillbox Hill", + [GetHashKey("PROCOB")]: "Procopio Beach", + [GetHashKey("RANCHO")]: "Rancho", + [GetHashKey("RGLEN")]: "Richman Glen", + [GetHashKey("RICHM")]: "Richman", + [GetHashKey("ROCKF")]: "Rockford Hills", + [GetHashKey("RTRAK")]: "Redwood Lights Track", + [GetHashKey("SANAND")]: "San Andreas", + [GetHashKey("SANCHIA")]: "San Chianski Mountain Range", + [GetHashKey("SANDY")]: "Sandy Shores", + [GetHashKey("SKID")]: "Mission Row", + [GetHashKey("SLAB")]: "Stab City", + [GetHashKey("STAD")]: "Maze Bank Arena", + [GetHashKey("STRAW")]: "Strawberry", + [GetHashKey("TATAMO")]: "Tataviam Mountains", + [GetHashKey("TERMINA")]: "Terminal", + [GetHashKey("TEXTI")]: "Textile City", + [GetHashKey("TONGVAH")]: "Tongva Hills", + [GetHashKey("TONGVAV")]: "Tongva Valley", + [GetHashKey("VCANA")]: "Vespucci Canals", + [GetHashKey("VESP")]: "Vespucci", + [GetHashKey("VINE")]: "Vinewood", + [GetHashKey("WINDF")]: "Ron Alternates Wind Farm", + [GetHashKey("WVINE")]: "West Vinewood", + [GetHashKey("ZANCUDO")]: "Zancudo River", + [GetHashKey("ZP_ORT")]: "Port of South Los Santos", + [GetHashKey("ZQ_UAR")]: "Davis Quartz" +}; +function getZone(position) { + const areaHash = GetHashKey(GetNameOfZone(...position)); + return areaHashes2[areaHash]; +} + +// src/utils/getLocation.ts +function getLocation(pos) { + const [lastStreet] = GetStreetNameAtCoord(...pos); + const streetName = GetStreetNameFromHashKey(lastStreet); + const zone = getZone(pos); + const area = getArea(pos); + const location = `${streetName}, ${zone} (${area})`; + return location; +} + +// src/utils/getVehicle.ts +function getVehicle(pedId) { + const vehicle = GetVehiclePedIsIn(pedId, false); + if (vehicle === 0) { + return {}; + } + const licensePlate = GetVehicleNumberPlateText(vehicle); + const hasSirenEnabled = isSirenEnabled(vehicle); + let vehicleName = GetLabelText(GetDisplayNameFromVehicleModel(GetEntityModel(vehicle))); + if (vehicleName === "NULL") { + vehicleName = GetDisplayNameFromVehicleModel(GetEntityModel(vehicle)); + } + return { licensePlate, vehicle: vehicleName, hasSirenEnabled }; +} +function isSirenEnabled(vehicle) { + const sirenEnabledValue = IsVehicleSirenOn(vehicle) || IsVehicleSirenAudioOn(vehicle) || IsVehicleSirenSoundOn(vehicle); + if (typeof sirenEnabledValue === "number") { + return sirenEnabledValue === 1; + } + return sirenEnabledValue; +} + +// src/utils/getIcon.ts +function getIcon(pedId) { + if (!IsPedInAnyVehicle(pedId, false)) + return 6; + const vehicle = GetVehiclePedIsIn(pedId, false); + if (vehicle === 0) { + return 6; + } + const vehicleModel = GetEntityModel(vehicle); + if (isPoliceVehicle(vehicle)) + return 56; + if (isTowTruck(vehicleModel)) + return 68; + if (IsThisModelAHeli(vehicleModel)) + return 64; + return 225; +} +function isPoliceVehicle(vehicle) { + const vehicleClass = GetVehicleClass(vehicle); + return vehicleClass === 18; +} +function isTowTruck(vehicleModel) { + const hashes = [GetHashKey("towtruck"), GetHashKey("towtruck2")]; + return hashes.includes(vehicleModel); +} + +// integration/client/client.ts +var firstSpawn = true; +onNet("playerDropped" /* CFXPlayerDropped */, () => { + if (firstSpawn) { + emitPlayerData(); + firstSpawn = false; + } +}); +setInterval(() => { + emitPlayerData(); +}, 500); +function emitPlayerData() { + const [playerX, playerY, playerZ] = GetEntityCoords(PlayerPedId(), false); + const vehicle = getVehicle(PlayerPedId()); + const weapon = getWeapon(PlayerPedId()); + const location = getLocation([playerX, playerY, playerZ]); + const icon = getIcon(PlayerPedId()); + emitNet("sna-live-map-player-spawned" /* PlayerSpawned */, { + playerId: PlayerPedId(), + name: GetPlayerName(PlayerId()), + location, + pos: { x: playerX, y: playerY, z: playerZ }, + weapon, + icon, + ...vehicle + }); +} +onNet("smartmotorways:syncSignsClient", (signId) => { + emitNet("sna-live-map-sign-smart-motorways" /* SyncSmartMotorwaysSigns */, signId); +}); diff --git a/resources/[sna]/sna-live-map/fxmanifest.lua b/resources/[sna]/sna-live-map/fxmanifest.lua new file mode 100644 index 0000000..0882d60 --- /dev/null +++ b/resources/[sna]/sna-live-map/fxmanifest.lua @@ -0,0 +1,9 @@ +fx_version "cerulean" +game "gta5" + +author "Dev-CasperTheGhost" +description "SnailyCAD Live Map integration for FiveM." +version "0.2.2" + +client_scripts {"client/client.js"} +server_scripts {"server/server.js"} diff --git a/resources/[sna]/sna-live-map/server/server.js b/resources/[sna]/sna-live-map/server/server.js new file mode 100644 index 0000000..6955052 --- /dev/null +++ b/resources/[sna]/sna-live-map/server/server.js @@ -0,0 +1,21939 @@ +"use strict"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +// node_modules/.pnpm/negotiator@0.6.3/node_modules/negotiator/lib/charset.js +var require_charset = __commonJS({ + "node_modules/.pnpm/negotiator@0.6.3/node_modules/negotiator/lib/charset.js"(exports2, module2) { + "use strict"; + module2.exports = preferredCharsets; + module2.exports.preferredCharsets = preferredCharsets; + var simpleCharsetRegExp = /^\s*([^\s;]+)\s*(?:;(.*))?$/; + function parseAcceptCharset(accept) { + var accepts = accept.split(","); + for (var i = 0, j = 0; i < accepts.length; i++) { + var charset = parseCharset(accepts[i].trim(), i); + if (charset) { + accepts[j++] = charset; + } + } + accepts.length = j; + return accepts; + } + function parseCharset(str, i) { + var match = simpleCharsetRegExp.exec(str); + if (!match) + return null; + var charset = match[1]; + var q = 1; + if (match[2]) { + var params = match[2].split(";"); + for (var j = 0; j < params.length; j++) { + var p = params[j].trim().split("="); + if (p[0] === "q") { + q = parseFloat(p[1]); + break; + } + } + } + return { + charset, + q, + i + }; + } + function getCharsetPriority(charset, accepted, index) { + var priority = { o: -1, q: 0, s: 0 }; + for (var i = 0; i < accepted.length; i++) { + var spec = specify(charset, accepted[i], index); + if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { + priority = spec; + } + } + return priority; + } + function specify(charset, spec, index) { + var s = 0; + if (spec.charset.toLowerCase() === charset.toLowerCase()) { + s |= 1; + } else if (spec.charset !== "*") { + return null; + } + return { + i: index, + o: spec.i, + q: spec.q, + s + }; + } + function preferredCharsets(accept, provided) { + var accepts = parseAcceptCharset(accept === void 0 ? "*" : accept || ""); + if (!provided) { + return accepts.filter(isQuality).sort(compareSpecs).map(getFullCharset); + } + var priorities = provided.map(function getPriority(type, index) { + return getCharsetPriority(type, accepts, index); + }); + return priorities.filter(isQuality).sort(compareSpecs).map(function getCharset(priority) { + return provided[priorities.indexOf(priority)]; + }); + } + function compareSpecs(a, b) { + return b.q - a.q || b.s - a.s || a.o - b.o || a.i - b.i || 0; + } + function getFullCharset(spec) { + return spec.charset; + } + function isQuality(spec) { + return spec.q > 0; + } + } +}); + +// node_modules/.pnpm/negotiator@0.6.3/node_modules/negotiator/lib/encoding.js +var require_encoding = __commonJS({ + "node_modules/.pnpm/negotiator@0.6.3/node_modules/negotiator/lib/encoding.js"(exports2, module2) { + "use strict"; + module2.exports = preferredEncodings; + module2.exports.preferredEncodings = preferredEncodings; + var simpleEncodingRegExp = /^\s*([^\s;]+)\s*(?:;(.*))?$/; + function parseAcceptEncoding(accept) { + var accepts = accept.split(","); + var hasIdentity = false; + var minQuality = 1; + for (var i = 0, j = 0; i < accepts.length; i++) { + var encoding = parseEncoding(accepts[i].trim(), i); + if (encoding) { + accepts[j++] = encoding; + hasIdentity = hasIdentity || specify("identity", encoding); + minQuality = Math.min(minQuality, encoding.q || 1); + } + } + if (!hasIdentity) { + accepts[j++] = { + encoding: "identity", + q: minQuality, + i + }; + } + accepts.length = j; + return accepts; + } + function parseEncoding(str, i) { + var match = simpleEncodingRegExp.exec(str); + if (!match) + return null; + var encoding = match[1]; + var q = 1; + if (match[2]) { + var params = match[2].split(";"); + for (var j = 0; j < params.length; j++) { + var p = params[j].trim().split("="); + if (p[0] === "q") { + q = parseFloat(p[1]); + break; + } + } + } + return { + encoding, + q, + i + }; + } + function getEncodingPriority(encoding, accepted, index) { + var priority = { o: -1, q: 0, s: 0 }; + for (var i = 0; i < accepted.length; i++) { + var spec = specify(encoding, accepted[i], index); + if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { + priority = spec; + } + } + return priority; + } + function specify(encoding, spec, index) { + var s = 0; + if (spec.encoding.toLowerCase() === encoding.toLowerCase()) { + s |= 1; + } else if (spec.encoding !== "*") { + return null; + } + return { + i: index, + o: spec.i, + q: spec.q, + s + }; + } + function preferredEncodings(accept, provided) { + var accepts = parseAcceptEncoding(accept || ""); + if (!provided) { + return accepts.filter(isQuality).sort(compareSpecs).map(getFullEncoding); + } + var priorities = provided.map(function getPriority(type, index) { + return getEncodingPriority(type, accepts, index); + }); + return priorities.filter(isQuality).sort(compareSpecs).map(function getEncoding(priority) { + return provided[priorities.indexOf(priority)]; + }); + } + function compareSpecs(a, b) { + return b.q - a.q || b.s - a.s || a.o - b.o || a.i - b.i || 0; + } + function getFullEncoding(spec) { + return spec.encoding; + } + function isQuality(spec) { + return spec.q > 0; + } + } +}); + +// node_modules/.pnpm/negotiator@0.6.3/node_modules/negotiator/lib/language.js +var require_language = __commonJS({ + "node_modules/.pnpm/negotiator@0.6.3/node_modules/negotiator/lib/language.js"(exports2, module2) { + "use strict"; + module2.exports = preferredLanguages; + module2.exports.preferredLanguages = preferredLanguages; + var simpleLanguageRegExp = /^\s*([^\s\-;]+)(?:-([^\s;]+))?\s*(?:;(.*))?$/; + function parseAcceptLanguage(accept) { + var accepts = accept.split(","); + for (var i = 0, j = 0; i < accepts.length; i++) { + var language = parseLanguage(accepts[i].trim(), i); + if (language) { + accepts[j++] = language; + } + } + accepts.length = j; + return accepts; + } + function parseLanguage(str, i) { + var match = simpleLanguageRegExp.exec(str); + if (!match) + return null; + var prefix = match[1]; + var suffix = match[2]; + var full = prefix; + if (suffix) + full += "-" + suffix; + var q = 1; + if (match[3]) { + var params = match[3].split(";"); + for (var j = 0; j < params.length; j++) { + var p = params[j].split("="); + if (p[0] === "q") + q = parseFloat(p[1]); + } + } + return { + prefix, + suffix, + q, + i, + full + }; + } + function getLanguagePriority(language, accepted, index) { + var priority = { o: -1, q: 0, s: 0 }; + for (var i = 0; i < accepted.length; i++) { + var spec = specify(language, accepted[i], index); + if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { + priority = spec; + } + } + return priority; + } + function specify(language, spec, index) { + var p = parseLanguage(language); + if (!p) + return null; + var s = 0; + if (spec.full.toLowerCase() === p.full.toLowerCase()) { + s |= 4; + } else if (spec.prefix.toLowerCase() === p.full.toLowerCase()) { + s |= 2; + } else if (spec.full.toLowerCase() === p.prefix.toLowerCase()) { + s |= 1; + } else if (spec.full !== "*") { + return null; + } + return { + i: index, + o: spec.i, + q: spec.q, + s + }; + } + function preferredLanguages(accept, provided) { + var accepts = parseAcceptLanguage(accept === void 0 ? "*" : accept || ""); + if (!provided) { + return accepts.filter(isQuality).sort(compareSpecs).map(getFullLanguage); + } + var priorities = provided.map(function getPriority(type, index) { + return getLanguagePriority(type, accepts, index); + }); + return priorities.filter(isQuality).sort(compareSpecs).map(function getLanguage(priority) { + return provided[priorities.indexOf(priority)]; + }); + } + function compareSpecs(a, b) { + return b.q - a.q || b.s - a.s || a.o - b.o || a.i - b.i || 0; + } + function getFullLanguage(spec) { + return spec.full; + } + function isQuality(spec) { + return spec.q > 0; + } + } +}); + +// node_modules/.pnpm/negotiator@0.6.3/node_modules/negotiator/lib/mediaType.js +var require_mediaType = __commonJS({ + "node_modules/.pnpm/negotiator@0.6.3/node_modules/negotiator/lib/mediaType.js"(exports2, module2) { + "use strict"; + module2.exports = preferredMediaTypes; + module2.exports.preferredMediaTypes = preferredMediaTypes; + var simpleMediaTypeRegExp = /^\s*([^\s\/;]+)\/([^;\s]+)\s*(?:;(.*))?$/; + function parseAccept(accept) { + var accepts = splitMediaTypes(accept); + for (var i = 0, j = 0; i < accepts.length; i++) { + var mediaType = parseMediaType(accepts[i].trim(), i); + if (mediaType) { + accepts[j++] = mediaType; + } + } + accepts.length = j; + return accepts; + } + function parseMediaType(str, i) { + var match = simpleMediaTypeRegExp.exec(str); + if (!match) + return null; + var params = /* @__PURE__ */ Object.create(null); + var q = 1; + var subtype = match[2]; + var type = match[1]; + if (match[3]) { + var kvps = splitParameters(match[3]).map(splitKeyValuePair); + for (var j = 0; j < kvps.length; j++) { + var pair = kvps[j]; + var key = pair[0].toLowerCase(); + var val = pair[1]; + var value = val && val[0] === '"' && val[val.length - 1] === '"' ? val.substr(1, val.length - 2) : val; + if (key === "q") { + q = parseFloat(value); + break; + } + params[key] = value; + } + } + return { + type, + subtype, + params, + q, + i + }; + } + function getMediaTypePriority(type, accepted, index) { + var priority = { o: -1, q: 0, s: 0 }; + for (var i = 0; i < accepted.length; i++) { + var spec = specify(type, accepted[i], index); + if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { + priority = spec; + } + } + return priority; + } + function specify(type, spec, index) { + var p = parseMediaType(type); + var s = 0; + if (!p) { + return null; + } + if (spec.type.toLowerCase() == p.type.toLowerCase()) { + s |= 4; + } else if (spec.type != "*") { + return null; + } + if (spec.subtype.toLowerCase() == p.subtype.toLowerCase()) { + s |= 2; + } else if (spec.subtype != "*") { + return null; + } + var keys = Object.keys(spec.params); + if (keys.length > 0) { + if (keys.every(function(k) { + return spec.params[k] == "*" || (spec.params[k] || "").toLowerCase() == (p.params[k] || "").toLowerCase(); + })) { + s |= 1; + } else { + return null; + } + } + return { + i: index, + o: spec.i, + q: spec.q, + s + }; + } + function preferredMediaTypes(accept, provided) { + var accepts = parseAccept(accept === void 0 ? "*/*" : accept || ""); + if (!provided) { + return accepts.filter(isQuality).sort(compareSpecs).map(getFullType); + } + var priorities = provided.map(function getPriority(type, index) { + return getMediaTypePriority(type, accepts, index); + }); + return priorities.filter(isQuality).sort(compareSpecs).map(function getType(priority) { + return provided[priorities.indexOf(priority)]; + }); + } + function compareSpecs(a, b) { + return b.q - a.q || b.s - a.s || a.o - b.o || a.i - b.i || 0; + } + function getFullType(spec) { + return spec.type + "/" + spec.subtype; + } + function isQuality(spec) { + return spec.q > 0; + } + function quoteCount(string) { + var count = 0; + var index = 0; + while ((index = string.indexOf('"', index)) !== -1) { + count++; + index++; + } + return count; + } + function splitKeyValuePair(str) { + var index = str.indexOf("="); + var key; + var val; + if (index === -1) { + key = str; + } else { + key = str.substr(0, index); + val = str.substr(index + 1); + } + return [key, val]; + } + function splitMediaTypes(accept) { + var accepts = accept.split(","); + for (var i = 1, j = 0; i < accepts.length; i++) { + if (quoteCount(accepts[j]) % 2 == 0) { + accepts[++j] = accepts[i]; + } else { + accepts[j] += "," + accepts[i]; + } + } + accepts.length = j + 1; + return accepts; + } + function splitParameters(str) { + var parameters = str.split(";"); + for (var i = 1, j = 0; i < parameters.length; i++) { + if (quoteCount(parameters[j]) % 2 == 0) { + parameters[++j] = parameters[i]; + } else { + parameters[j] += ";" + parameters[i]; + } + } + parameters.length = j + 1; + for (var i = 0; i < parameters.length; i++) { + parameters[i] = parameters[i].trim(); + } + return parameters; + } + } +}); + +// node_modules/.pnpm/negotiator@0.6.3/node_modules/negotiator/index.js +var require_negotiator = __commonJS({ + "node_modules/.pnpm/negotiator@0.6.3/node_modules/negotiator/index.js"(exports2, module2) { + "use strict"; + var preferredCharsets = require_charset(); + var preferredEncodings = require_encoding(); + var preferredLanguages = require_language(); + var preferredMediaTypes = require_mediaType(); + module2.exports = Negotiator; + module2.exports.Negotiator = Negotiator; + function Negotiator(request) { + if (!(this instanceof Negotiator)) { + return new Negotiator(request); + } + this.request = request; + } + Negotiator.prototype.charset = function charset(available) { + var set = this.charsets(available); + return set && set[0]; + }; + Negotiator.prototype.charsets = function charsets(available) { + return preferredCharsets(this.request.headers["accept-charset"], available); + }; + Negotiator.prototype.encoding = function encoding(available) { + var set = this.encodings(available); + return set && set[0]; + }; + Negotiator.prototype.encodings = function encodings(available) { + return preferredEncodings(this.request.headers["accept-encoding"], available); + }; + Negotiator.prototype.language = function language(available) { + var set = this.languages(available); + return set && set[0]; + }; + Negotiator.prototype.languages = function languages(available) { + return preferredLanguages(this.request.headers["accept-language"], available); + }; + Negotiator.prototype.mediaType = function mediaType(available) { + var set = this.mediaTypes(available); + return set && set[0]; + }; + Negotiator.prototype.mediaTypes = function mediaTypes(available) { + return preferredMediaTypes(this.request.headers.accept, available); + }; + Negotiator.prototype.preferredCharset = Negotiator.prototype.charset; + Negotiator.prototype.preferredCharsets = Negotiator.prototype.charsets; + Negotiator.prototype.preferredEncoding = Negotiator.prototype.encoding; + Negotiator.prototype.preferredEncodings = Negotiator.prototype.encodings; + Negotiator.prototype.preferredLanguage = Negotiator.prototype.language; + Negotiator.prototype.preferredLanguages = Negotiator.prototype.languages; + Negotiator.prototype.preferredMediaType = Negotiator.prototype.mediaType; + Negotiator.prototype.preferredMediaTypes = Negotiator.prototype.mediaTypes; + } +}); + +// node_modules/.pnpm/mime-db@1.52.0/node_modules/mime-db/db.json +var require_db = __commonJS({ + "node_modules/.pnpm/mime-db@1.52.0/node_modules/mime-db/db.json"(exports2, module2) { + module2.exports = { + "application/1d-interleaved-parityfec": { + source: "iana" + }, + "application/3gpdash-qoe-report+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/3gpp-ims+xml": { + source: "iana", + compressible: true + }, + "application/3gpphal+json": { + source: "iana", + compressible: true + }, + "application/3gpphalforms+json": { + source: "iana", + compressible: true + }, + "application/a2l": { + source: "iana" + }, + "application/ace+cbor": { + source: "iana" + }, + "application/activemessage": { + source: "iana" + }, + "application/activity+json": { + source: "iana", + compressible: true + }, + "application/alto-costmap+json": { + source: "iana", + compressible: true + }, + "application/alto-costmapfilter+json": { + source: "iana", + compressible: true + }, + "application/alto-directory+json": { + source: "iana", + compressible: true + }, + "application/alto-endpointcost+json": { + source: "iana", + compressible: true + }, + "application/alto-endpointcostparams+json": { + source: "iana", + compressible: true + }, + "application/alto-endpointprop+json": { + source: "iana", + compressible: true + }, + "application/alto-endpointpropparams+json": { + source: "iana", + compressible: true + }, + "application/alto-error+json": { + source: "iana", + compressible: true + }, + "application/alto-networkmap+json": { + source: "iana", + compressible: true + }, + "application/alto-networkmapfilter+json": { + source: "iana", + compressible: true + }, + "application/alto-updatestreamcontrol+json": { + source: "iana", + compressible: true + }, + "application/alto-updatestreamparams+json": { + source: "iana", + compressible: true + }, + "application/aml": { + source: "iana" + }, + "application/andrew-inset": { + source: "iana", + extensions: ["ez"] + }, + "application/applefile": { + source: "iana" + }, + "application/applixware": { + source: "apache", + extensions: ["aw"] + }, + "application/at+jwt": { + source: "iana" + }, + "application/atf": { + source: "iana" + }, + "application/atfx": { + source: "iana" + }, + "application/atom+xml": { + source: "iana", + compressible: true, + extensions: ["atom"] + }, + "application/atomcat+xml": { + source: "iana", + compressible: true, + extensions: ["atomcat"] + }, + "application/atomdeleted+xml": { + source: "iana", + compressible: true, + extensions: ["atomdeleted"] + }, + "application/atomicmail": { + source: "iana" + }, + "application/atomsvc+xml": { + source: "iana", + compressible: true, + extensions: ["atomsvc"] + }, + "application/atsc-dwd+xml": { + source: "iana", + compressible: true, + extensions: ["dwd"] + }, + "application/atsc-dynamic-event-message": { + source: "iana" + }, + "application/atsc-held+xml": { + source: "iana", + compressible: true, + extensions: ["held"] + }, + "application/atsc-rdt+json": { + source: "iana", + compressible: true + }, + "application/atsc-rsat+xml": { + source: "iana", + compressible: true, + extensions: ["rsat"] + }, + "application/atxml": { + source: "iana" + }, + "application/auth-policy+xml": { + source: "iana", + compressible: true + }, + "application/bacnet-xdd+zip": { + source: "iana", + compressible: false + }, + "application/batch-smtp": { + source: "iana" + }, + "application/bdoc": { + compressible: false, + extensions: ["bdoc"] + }, + "application/beep+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/calendar+json": { + source: "iana", + compressible: true + }, + "application/calendar+xml": { + source: "iana", + compressible: true, + extensions: ["xcs"] + }, + "application/call-completion": { + source: "iana" + }, + "application/cals-1840": { + source: "iana" + }, + "application/captive+json": { + source: "iana", + compressible: true + }, + "application/cbor": { + source: "iana" + }, + "application/cbor-seq": { + source: "iana" + }, + "application/cccex": { + source: "iana" + }, + "application/ccmp+xml": { + source: "iana", + compressible: true + }, + "application/ccxml+xml": { + source: "iana", + compressible: true, + extensions: ["ccxml"] + }, + "application/cdfx+xml": { + source: "iana", + compressible: true, + extensions: ["cdfx"] + }, + "application/cdmi-capability": { + source: "iana", + extensions: ["cdmia"] + }, + "application/cdmi-container": { + source: "iana", + extensions: ["cdmic"] + }, + "application/cdmi-domain": { + source: "iana", + extensions: ["cdmid"] + }, + "application/cdmi-object": { + source: "iana", + extensions: ["cdmio"] + }, + "application/cdmi-queue": { + source: "iana", + extensions: ["cdmiq"] + }, + "application/cdni": { + source: "iana" + }, + "application/cea": { + source: "iana" + }, + "application/cea-2018+xml": { + source: "iana", + compressible: true + }, + "application/cellml+xml": { + source: "iana", + compressible: true + }, + "application/cfw": { + source: "iana" + }, + "application/city+json": { + source: "iana", + compressible: true + }, + "application/clr": { + source: "iana" + }, + "application/clue+xml": { + source: "iana", + compressible: true + }, + "application/clue_info+xml": { + source: "iana", + compressible: true + }, + "application/cms": { + source: "iana" + }, + "application/cnrp+xml": { + source: "iana", + compressible: true + }, + "application/coap-group+json": { + source: "iana", + compressible: true + }, + "application/coap-payload": { + source: "iana" + }, + "application/commonground": { + source: "iana" + }, + "application/conference-info+xml": { + source: "iana", + compressible: true + }, + "application/cose": { + source: "iana" + }, + "application/cose-key": { + source: "iana" + }, + "application/cose-key-set": { + source: "iana" + }, + "application/cpl+xml": { + source: "iana", + compressible: true, + extensions: ["cpl"] + }, + "application/csrattrs": { + source: "iana" + }, + "application/csta+xml": { + source: "iana", + compressible: true + }, + "application/cstadata+xml": { + source: "iana", + compressible: true + }, + "application/csvm+json": { + source: "iana", + compressible: true + }, + "application/cu-seeme": { + source: "apache", + extensions: ["cu"] + }, + "application/cwt": { + source: "iana" + }, + "application/cybercash": { + source: "iana" + }, + "application/dart": { + compressible: true + }, + "application/dash+xml": { + source: "iana", + compressible: true, + extensions: ["mpd"] + }, + "application/dash-patch+xml": { + source: "iana", + compressible: true, + extensions: ["mpp"] + }, + "application/dashdelta": { + source: "iana" + }, + "application/davmount+xml": { + source: "iana", + compressible: true, + extensions: ["davmount"] + }, + "application/dca-rft": { + source: "iana" + }, + "application/dcd": { + source: "iana" + }, + "application/dec-dx": { + source: "iana" + }, + "application/dialog-info+xml": { + source: "iana", + compressible: true + }, + "application/dicom": { + source: "iana" + }, + "application/dicom+json": { + source: "iana", + compressible: true + }, + "application/dicom+xml": { + source: "iana", + compressible: true + }, + "application/dii": { + source: "iana" + }, + "application/dit": { + source: "iana" + }, + "application/dns": { + source: "iana" + }, + "application/dns+json": { + source: "iana", + compressible: true + }, + "application/dns-message": { + source: "iana" + }, + "application/docbook+xml": { + source: "apache", + compressible: true, + extensions: ["dbk"] + }, + "application/dots+cbor": { + source: "iana" + }, + "application/dskpp+xml": { + source: "iana", + compressible: true + }, + "application/dssc+der": { + source: "iana", + extensions: ["dssc"] + }, + "application/dssc+xml": { + source: "iana", + compressible: true, + extensions: ["xdssc"] + }, + "application/dvcs": { + source: "iana" + }, + "application/ecmascript": { + source: "iana", + compressible: true, + extensions: ["es", "ecma"] + }, + "application/edi-consent": { + source: "iana" + }, + "application/edi-x12": { + source: "iana", + compressible: false + }, + "application/edifact": { + source: "iana", + compressible: false + }, + "application/efi": { + source: "iana" + }, + "application/elm+json": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/elm+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.cap+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/emergencycalldata.comment+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.control+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.deviceinfo+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.ecall.msd": { + source: "iana" + }, + "application/emergencycalldata.providerinfo+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.serviceinfo+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.subscriberinfo+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.veds+xml": { + source: "iana", + compressible: true + }, + "application/emma+xml": { + source: "iana", + compressible: true, + extensions: ["emma"] + }, + "application/emotionml+xml": { + source: "iana", + compressible: true, + extensions: ["emotionml"] + }, + "application/encaprtp": { + source: "iana" + }, + "application/epp+xml": { + source: "iana", + compressible: true + }, + "application/epub+zip": { + source: "iana", + compressible: false, + extensions: ["epub"] + }, + "application/eshop": { + source: "iana" + }, + "application/exi": { + source: "iana", + extensions: ["exi"] + }, + "application/expect-ct-report+json": { + source: "iana", + compressible: true + }, + "application/express": { + source: "iana", + extensions: ["exp"] + }, + "application/fastinfoset": { + source: "iana" + }, + "application/fastsoap": { + source: "iana" + }, + "application/fdt+xml": { + source: "iana", + compressible: true, + extensions: ["fdt"] + }, + "application/fhir+json": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/fhir+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/fido.trusted-apps+json": { + compressible: true + }, + "application/fits": { + source: "iana" + }, + "application/flexfec": { + source: "iana" + }, + "application/font-sfnt": { + source: "iana" + }, + "application/font-tdpfr": { + source: "iana", + extensions: ["pfr"] + }, + "application/font-woff": { + source: "iana", + compressible: false + }, + "application/framework-attributes+xml": { + source: "iana", + compressible: true + }, + "application/geo+json": { + source: "iana", + compressible: true, + extensions: ["geojson"] + }, + "application/geo+json-seq": { + source: "iana" + }, + "application/geopackage+sqlite3": { + source: "iana" + }, + "application/geoxacml+xml": { + source: "iana", + compressible: true + }, + "application/gltf-buffer": { + source: "iana" + }, + "application/gml+xml": { + source: "iana", + compressible: true, + extensions: ["gml"] + }, + "application/gpx+xml": { + source: "apache", + compressible: true, + extensions: ["gpx"] + }, + "application/gxf": { + source: "apache", + extensions: ["gxf"] + }, + "application/gzip": { + source: "iana", + compressible: false, + extensions: ["gz"] + }, + "application/h224": { + source: "iana" + }, + "application/held+xml": { + source: "iana", + compressible: true + }, + "application/hjson": { + extensions: ["hjson"] + }, + "application/http": { + source: "iana" + }, + "application/hyperstudio": { + source: "iana", + extensions: ["stk"] + }, + "application/ibe-key-request+xml": { + source: "iana", + compressible: true + }, + "application/ibe-pkg-reply+xml": { + source: "iana", + compressible: true + }, + "application/ibe-pp-data": { + source: "iana" + }, + "application/iges": { + source: "iana" + }, + "application/im-iscomposing+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/index": { + source: "iana" + }, + "application/index.cmd": { + source: "iana" + }, + "application/index.obj": { + source: "iana" + }, + "application/index.response": { + source: "iana" + }, + "application/index.vnd": { + source: "iana" + }, + "application/inkml+xml": { + source: "iana", + compressible: true, + extensions: ["ink", "inkml"] + }, + "application/iotp": { + source: "iana" + }, + "application/ipfix": { + source: "iana", + extensions: ["ipfix"] + }, + "application/ipp": { + source: "iana" + }, + "application/isup": { + source: "iana" + }, + "application/its+xml": { + source: "iana", + compressible: true, + extensions: ["its"] + }, + "application/java-archive": { + source: "apache", + compressible: false, + extensions: ["jar", "war", "ear"] + }, + "application/java-serialized-object": { + source: "apache", + compressible: false, + extensions: ["ser"] + }, + "application/java-vm": { + source: "apache", + compressible: false, + extensions: ["class"] + }, + "application/javascript": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["js", "mjs"] + }, + "application/jf2feed+json": { + source: "iana", + compressible: true + }, + "application/jose": { + source: "iana" + }, + "application/jose+json": { + source: "iana", + compressible: true + }, + "application/jrd+json": { + source: "iana", + compressible: true + }, + "application/jscalendar+json": { + source: "iana", + compressible: true + }, + "application/json": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["json", "map"] + }, + "application/json-patch+json": { + source: "iana", + compressible: true + }, + "application/json-seq": { + source: "iana" + }, + "application/json5": { + extensions: ["json5"] + }, + "application/jsonml+json": { + source: "apache", + compressible: true, + extensions: ["jsonml"] + }, + "application/jwk+json": { + source: "iana", + compressible: true + }, + "application/jwk-set+json": { + source: "iana", + compressible: true + }, + "application/jwt": { + source: "iana" + }, + "application/kpml-request+xml": { + source: "iana", + compressible: true + }, + "application/kpml-response+xml": { + source: "iana", + compressible: true + }, + "application/ld+json": { + source: "iana", + compressible: true, + extensions: ["jsonld"] + }, + "application/lgr+xml": { + source: "iana", + compressible: true, + extensions: ["lgr"] + }, + "application/link-format": { + source: "iana" + }, + "application/load-control+xml": { + source: "iana", + compressible: true + }, + "application/lost+xml": { + source: "iana", + compressible: true, + extensions: ["lostxml"] + }, + "application/lostsync+xml": { + source: "iana", + compressible: true + }, + "application/lpf+zip": { + source: "iana", + compressible: false + }, + "application/lxf": { + source: "iana" + }, + "application/mac-binhex40": { + source: "iana", + extensions: ["hqx"] + }, + "application/mac-compactpro": { + source: "apache", + extensions: ["cpt"] + }, + "application/macwriteii": { + source: "iana" + }, + "application/mads+xml": { + source: "iana", + compressible: true, + extensions: ["mads"] + }, + "application/manifest+json": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["webmanifest"] + }, + "application/marc": { + source: "iana", + extensions: ["mrc"] + }, + "application/marcxml+xml": { + source: "iana", + compressible: true, + extensions: ["mrcx"] + }, + "application/mathematica": { + source: "iana", + extensions: ["ma", "nb", "mb"] + }, + "application/mathml+xml": { + source: "iana", + compressible: true, + extensions: ["mathml"] + }, + "application/mathml-content+xml": { + source: "iana", + compressible: true + }, + "application/mathml-presentation+xml": { + source: "iana", + compressible: true + }, + "application/mbms-associated-procedure-description+xml": { + source: "iana", + compressible: true + }, + "application/mbms-deregister+xml": { + source: "iana", + compressible: true + }, + "application/mbms-envelope+xml": { + source: "iana", + compressible: true + }, + "application/mbms-msk+xml": { + source: "iana", + compressible: true + }, + "application/mbms-msk-response+xml": { + source: "iana", + compressible: true + }, + "application/mbms-protection-description+xml": { + source: "iana", + compressible: true + }, + "application/mbms-reception-report+xml": { + source: "iana", + compressible: true + }, + "application/mbms-register+xml": { + source: "iana", + compressible: true + }, + "application/mbms-register-response+xml": { + source: "iana", + compressible: true + }, + "application/mbms-schedule+xml": { + source: "iana", + compressible: true + }, + "application/mbms-user-service-description+xml": { + source: "iana", + compressible: true + }, + "application/mbox": { + source: "iana", + extensions: ["mbox"] + }, + "application/media-policy-dataset+xml": { + source: "iana", + compressible: true, + extensions: ["mpf"] + }, + "application/media_control+xml": { + source: "iana", + compressible: true + }, + "application/mediaservercontrol+xml": { + source: "iana", + compressible: true, + extensions: ["mscml"] + }, + "application/merge-patch+json": { + source: "iana", + compressible: true + }, + "application/metalink+xml": { + source: "apache", + compressible: true, + extensions: ["metalink"] + }, + "application/metalink4+xml": { + source: "iana", + compressible: true, + extensions: ["meta4"] + }, + "application/mets+xml": { + source: "iana", + compressible: true, + extensions: ["mets"] + }, + "application/mf4": { + source: "iana" + }, + "application/mikey": { + source: "iana" + }, + "application/mipc": { + source: "iana" + }, + "application/missing-blocks+cbor-seq": { + source: "iana" + }, + "application/mmt-aei+xml": { + source: "iana", + compressible: true, + extensions: ["maei"] + }, + "application/mmt-usd+xml": { + source: "iana", + compressible: true, + extensions: ["musd"] + }, + "application/mods+xml": { + source: "iana", + compressible: true, + extensions: ["mods"] + }, + "application/moss-keys": { + source: "iana" + }, + "application/moss-signature": { + source: "iana" + }, + "application/mosskey-data": { + source: "iana" + }, + "application/mosskey-request": { + source: "iana" + }, + "application/mp21": { + source: "iana", + extensions: ["m21", "mp21"] + }, + "application/mp4": { + source: "iana", + extensions: ["mp4s", "m4p"] + }, + "application/mpeg4-generic": { + source: "iana" + }, + "application/mpeg4-iod": { + source: "iana" + }, + "application/mpeg4-iod-xmt": { + source: "iana" + }, + "application/mrb-consumer+xml": { + source: "iana", + compressible: true + }, + "application/mrb-publish+xml": { + source: "iana", + compressible: true + }, + "application/msc-ivr+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/msc-mixer+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/msword": { + source: "iana", + compressible: false, + extensions: ["doc", "dot"] + }, + "application/mud+json": { + source: "iana", + compressible: true + }, + "application/multipart-core": { + source: "iana" + }, + "application/mxf": { + source: "iana", + extensions: ["mxf"] + }, + "application/n-quads": { + source: "iana", + extensions: ["nq"] + }, + "application/n-triples": { + source: "iana", + extensions: ["nt"] + }, + "application/nasdata": { + source: "iana" + }, + "application/news-checkgroups": { + source: "iana", + charset: "US-ASCII" + }, + "application/news-groupinfo": { + source: "iana", + charset: "US-ASCII" + }, + "application/news-transmission": { + source: "iana" + }, + "application/nlsml+xml": { + source: "iana", + compressible: true + }, + "application/node": { + source: "iana", + extensions: ["cjs"] + }, + "application/nss": { + source: "iana" + }, + "application/oauth-authz-req+jwt": { + source: "iana" + }, + "application/oblivious-dns-message": { + source: "iana" + }, + "application/ocsp-request": { + source: "iana" + }, + "application/ocsp-response": { + source: "iana" + }, + "application/octet-stream": { + source: "iana", + compressible: false, + extensions: ["bin", "dms", "lrf", "mar", "so", "dist", "distz", "pkg", "bpk", "dump", "elc", "deploy", "exe", "dll", "deb", "dmg", "iso", "img", "msi", "msp", "msm", "buffer"] + }, + "application/oda": { + source: "iana", + extensions: ["oda"] + }, + "application/odm+xml": { + source: "iana", + compressible: true + }, + "application/odx": { + source: "iana" + }, + "application/oebps-package+xml": { + source: "iana", + compressible: true, + extensions: ["opf"] + }, + "application/ogg": { + source: "iana", + compressible: false, + extensions: ["ogx"] + }, + "application/omdoc+xml": { + source: "apache", + compressible: true, + extensions: ["omdoc"] + }, + "application/onenote": { + source: "apache", + extensions: ["onetoc", "onetoc2", "onetmp", "onepkg"] + }, + "application/opc-nodeset+xml": { + source: "iana", + compressible: true + }, + "application/oscore": { + source: "iana" + }, + "application/oxps": { + source: "iana", + extensions: ["oxps"] + }, + "application/p21": { + source: "iana" + }, + "application/p21+zip": { + source: "iana", + compressible: false + }, + "application/p2p-overlay+xml": { + source: "iana", + compressible: true, + extensions: ["relo"] + }, + "application/parityfec": { + source: "iana" + }, + "application/passport": { + source: "iana" + }, + "application/patch-ops-error+xml": { + source: "iana", + compressible: true, + extensions: ["xer"] + }, + "application/pdf": { + source: "iana", + compressible: false, + extensions: ["pdf"] + }, + "application/pdx": { + source: "iana" + }, + "application/pem-certificate-chain": { + source: "iana" + }, + "application/pgp-encrypted": { + source: "iana", + compressible: false, + extensions: ["pgp"] + }, + "application/pgp-keys": { + source: "iana", + extensions: ["asc"] + }, + "application/pgp-signature": { + source: "iana", + extensions: ["asc", "sig"] + }, + "application/pics-rules": { + source: "apache", + extensions: ["prf"] + }, + "application/pidf+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/pidf-diff+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/pkcs10": { + source: "iana", + extensions: ["p10"] + }, + "application/pkcs12": { + source: "iana" + }, + "application/pkcs7-mime": { + source: "iana", + extensions: ["p7m", "p7c"] + }, + "application/pkcs7-signature": { + source: "iana", + extensions: ["p7s"] + }, + "application/pkcs8": { + source: "iana", + extensions: ["p8"] + }, + "application/pkcs8-encrypted": { + source: "iana" + }, + "application/pkix-attr-cert": { + source: "iana", + extensions: ["ac"] + }, + "application/pkix-cert": { + source: "iana", + extensions: ["cer"] + }, + "application/pkix-crl": { + source: "iana", + extensions: ["crl"] + }, + "application/pkix-pkipath": { + source: "iana", + extensions: ["pkipath"] + }, + "application/pkixcmp": { + source: "iana", + extensions: ["pki"] + }, + "application/pls+xml": { + source: "iana", + compressible: true, + extensions: ["pls"] + }, + "application/poc-settings+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/postscript": { + source: "iana", + compressible: true, + extensions: ["ai", "eps", "ps"] + }, + "application/ppsp-tracker+json": { + source: "iana", + compressible: true + }, + "application/problem+json": { + source: "iana", + compressible: true + }, + "application/problem+xml": { + source: "iana", + compressible: true + }, + "application/provenance+xml": { + source: "iana", + compressible: true, + extensions: ["provx"] + }, + "application/prs.alvestrand.titrax-sheet": { + source: "iana" + }, + "application/prs.cww": { + source: "iana", + extensions: ["cww"] + }, + "application/prs.cyn": { + source: "iana", + charset: "7-BIT" + }, + "application/prs.hpub+zip": { + source: "iana", + compressible: false + }, + "application/prs.nprend": { + source: "iana" + }, + "application/prs.plucker": { + source: "iana" + }, + "application/prs.rdf-xml-crypt": { + source: "iana" + }, + "application/prs.xsf+xml": { + source: "iana", + compressible: true + }, + "application/pskc+xml": { + source: "iana", + compressible: true, + extensions: ["pskcxml"] + }, + "application/pvd+json": { + source: "iana", + compressible: true + }, + "application/qsig": { + source: "iana" + }, + "application/raml+yaml": { + compressible: true, + extensions: ["raml"] + }, + "application/raptorfec": { + source: "iana" + }, + "application/rdap+json": { + source: "iana", + compressible: true + }, + "application/rdf+xml": { + source: "iana", + compressible: true, + extensions: ["rdf", "owl"] + }, + "application/reginfo+xml": { + source: "iana", + compressible: true, + extensions: ["rif"] + }, + "application/relax-ng-compact-syntax": { + source: "iana", + extensions: ["rnc"] + }, + "application/remote-printing": { + source: "iana" + }, + "application/reputon+json": { + source: "iana", + compressible: true + }, + "application/resource-lists+xml": { + source: "iana", + compressible: true, + extensions: ["rl"] + }, + "application/resource-lists-diff+xml": { + source: "iana", + compressible: true, + extensions: ["rld"] + }, + "application/rfc+xml": { + source: "iana", + compressible: true + }, + "application/riscos": { + source: "iana" + }, + "application/rlmi+xml": { + source: "iana", + compressible: true + }, + "application/rls-services+xml": { + source: "iana", + compressible: true, + extensions: ["rs"] + }, + "application/route-apd+xml": { + source: "iana", + compressible: true, + extensions: ["rapd"] + }, + "application/route-s-tsid+xml": { + source: "iana", + compressible: true, + extensions: ["sls"] + }, + "application/route-usd+xml": { + source: "iana", + compressible: true, + extensions: ["rusd"] + }, + "application/rpki-ghostbusters": { + source: "iana", + extensions: ["gbr"] + }, + "application/rpki-manifest": { + source: "iana", + extensions: ["mft"] + }, + "application/rpki-publication": { + source: "iana" + }, + "application/rpki-roa": { + source: "iana", + extensions: ["roa"] + }, + "application/rpki-updown": { + source: "iana" + }, + "application/rsd+xml": { + source: "apache", + compressible: true, + extensions: ["rsd"] + }, + "application/rss+xml": { + source: "apache", + compressible: true, + extensions: ["rss"] + }, + "application/rtf": { + source: "iana", + compressible: true, + extensions: ["rtf"] + }, + "application/rtploopback": { + source: "iana" + }, + "application/rtx": { + source: "iana" + }, + "application/samlassertion+xml": { + source: "iana", + compressible: true + }, + "application/samlmetadata+xml": { + source: "iana", + compressible: true + }, + "application/sarif+json": { + source: "iana", + compressible: true + }, + "application/sarif-external-properties+json": { + source: "iana", + compressible: true + }, + "application/sbe": { + source: "iana" + }, + "application/sbml+xml": { + source: "iana", + compressible: true, + extensions: ["sbml"] + }, + "application/scaip+xml": { + source: "iana", + compressible: true + }, + "application/scim+json": { + source: "iana", + compressible: true + }, + "application/scvp-cv-request": { + source: "iana", + extensions: ["scq"] + }, + "application/scvp-cv-response": { + source: "iana", + extensions: ["scs"] + }, + "application/scvp-vp-request": { + source: "iana", + extensions: ["spq"] + }, + "application/scvp-vp-response": { + source: "iana", + extensions: ["spp"] + }, + "application/sdp": { + source: "iana", + extensions: ["sdp"] + }, + "application/secevent+jwt": { + source: "iana" + }, + "application/senml+cbor": { + source: "iana" + }, + "application/senml+json": { + source: "iana", + compressible: true + }, + "application/senml+xml": { + source: "iana", + compressible: true, + extensions: ["senmlx"] + }, + "application/senml-etch+cbor": { + source: "iana" + }, + "application/senml-etch+json": { + source: "iana", + compressible: true + }, + "application/senml-exi": { + source: "iana" + }, + "application/sensml+cbor": { + source: "iana" + }, + "application/sensml+json": { + source: "iana", + compressible: true + }, + "application/sensml+xml": { + source: "iana", + compressible: true, + extensions: ["sensmlx"] + }, + "application/sensml-exi": { + source: "iana" + }, + "application/sep+xml": { + source: "iana", + compressible: true + }, + "application/sep-exi": { + source: "iana" + }, + "application/session-info": { + source: "iana" + }, + "application/set-payment": { + source: "iana" + }, + "application/set-payment-initiation": { + source: "iana", + extensions: ["setpay"] + }, + "application/set-registration": { + source: "iana" + }, + "application/set-registration-initiation": { + source: "iana", + extensions: ["setreg"] + }, + "application/sgml": { + source: "iana" + }, + "application/sgml-open-catalog": { + source: "iana" + }, + "application/shf+xml": { + source: "iana", + compressible: true, + extensions: ["shf"] + }, + "application/sieve": { + source: "iana", + extensions: ["siv", "sieve"] + }, + "application/simple-filter+xml": { + source: "iana", + compressible: true + }, + "application/simple-message-summary": { + source: "iana" + }, + "application/simplesymbolcontainer": { + source: "iana" + }, + "application/sipc": { + source: "iana" + }, + "application/slate": { + source: "iana" + }, + "application/smil": { + source: "iana" + }, + "application/smil+xml": { + source: "iana", + compressible: true, + extensions: ["smi", "smil"] + }, + "application/smpte336m": { + source: "iana" + }, + "application/soap+fastinfoset": { + source: "iana" + }, + "application/soap+xml": { + source: "iana", + compressible: true + }, + "application/sparql-query": { + source: "iana", + extensions: ["rq"] + }, + "application/sparql-results+xml": { + source: "iana", + compressible: true, + extensions: ["srx"] + }, + "application/spdx+json": { + source: "iana", + compressible: true + }, + "application/spirits-event+xml": { + source: "iana", + compressible: true + }, + "application/sql": { + source: "iana" + }, + "application/srgs": { + source: "iana", + extensions: ["gram"] + }, + "application/srgs+xml": { + source: "iana", + compressible: true, + extensions: ["grxml"] + }, + "application/sru+xml": { + source: "iana", + compressible: true, + extensions: ["sru"] + }, + "application/ssdl+xml": { + source: "apache", + compressible: true, + extensions: ["ssdl"] + }, + "application/ssml+xml": { + source: "iana", + compressible: true, + extensions: ["ssml"] + }, + "application/stix+json": { + source: "iana", + compressible: true + }, + "application/swid+xml": { + source: "iana", + compressible: true, + extensions: ["swidtag"] + }, + "application/tamp-apex-update": { + source: "iana" + }, + "application/tamp-apex-update-confirm": { + source: "iana" + }, + "application/tamp-community-update": { + source: "iana" + }, + "application/tamp-community-update-confirm": { + source: "iana" + }, + "application/tamp-error": { + source: "iana" + }, + "application/tamp-sequence-adjust": { + source: "iana" + }, + "application/tamp-sequence-adjust-confirm": { + source: "iana" + }, + "application/tamp-status-query": { + source: "iana" + }, + "application/tamp-status-response": { + source: "iana" + }, + "application/tamp-update": { + source: "iana" + }, + "application/tamp-update-confirm": { + source: "iana" + }, + "application/tar": { + compressible: true + }, + "application/taxii+json": { + source: "iana", + compressible: true + }, + "application/td+json": { + source: "iana", + compressible: true + }, + "application/tei+xml": { + source: "iana", + compressible: true, + extensions: ["tei", "teicorpus"] + }, + "application/tetra_isi": { + source: "iana" + }, + "application/thraud+xml": { + source: "iana", + compressible: true, + extensions: ["tfi"] + }, + "application/timestamp-query": { + source: "iana" + }, + "application/timestamp-reply": { + source: "iana" + }, + "application/timestamped-data": { + source: "iana", + extensions: ["tsd"] + }, + "application/tlsrpt+gzip": { + source: "iana" + }, + "application/tlsrpt+json": { + source: "iana", + compressible: true + }, + "application/tnauthlist": { + source: "iana" + }, + "application/token-introspection+jwt": { + source: "iana" + }, + "application/toml": { + compressible: true, + extensions: ["toml"] + }, + "application/trickle-ice-sdpfrag": { + source: "iana" + }, + "application/trig": { + source: "iana", + extensions: ["trig"] + }, + "application/ttml+xml": { + source: "iana", + compressible: true, + extensions: ["ttml"] + }, + "application/tve-trigger": { + source: "iana" + }, + "application/tzif": { + source: "iana" + }, + "application/tzif-leap": { + source: "iana" + }, + "application/ubjson": { + compressible: false, + extensions: ["ubj"] + }, + "application/ulpfec": { + source: "iana" + }, + "application/urc-grpsheet+xml": { + source: "iana", + compressible: true + }, + "application/urc-ressheet+xml": { + source: "iana", + compressible: true, + extensions: ["rsheet"] + }, + "application/urc-targetdesc+xml": { + source: "iana", + compressible: true, + extensions: ["td"] + }, + "application/urc-uisocketdesc+xml": { + source: "iana", + compressible: true + }, + "application/vcard+json": { + source: "iana", + compressible: true + }, + "application/vcard+xml": { + source: "iana", + compressible: true + }, + "application/vemmi": { + source: "iana" + }, + "application/vividence.scriptfile": { + source: "apache" + }, + "application/vnd.1000minds.decision-model+xml": { + source: "iana", + compressible: true, + extensions: ["1km"] + }, + "application/vnd.3gpp-prose+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp-prose-pc3ch+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp-v2x-local-service-information": { + source: "iana" + }, + "application/vnd.3gpp.5gnas": { + source: "iana" + }, + "application/vnd.3gpp.access-transfer-events+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.bsf+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.gmop+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.gtpc": { + source: "iana" + }, + "application/vnd.3gpp.interworking-data": { + source: "iana" + }, + "application/vnd.3gpp.lpp": { + source: "iana" + }, + "application/vnd.3gpp.mc-signalling-ear": { + source: "iana" + }, + "application/vnd.3gpp.mcdata-affiliation-command+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcdata-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcdata-payload": { + source: "iana" + }, + "application/vnd.3gpp.mcdata-service-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcdata-signalling": { + source: "iana" + }, + "application/vnd.3gpp.mcdata-ue-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcdata-user-profile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-affiliation-command+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-floor-request+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-location-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-mbms-usage-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-service-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-signed+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-ue-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-ue-init-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-user-profile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-affiliation-command+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-affiliation-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-location-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-mbms-usage-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-service-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-transmission-request+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-ue-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-user-profile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mid-call+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.ngap": { + source: "iana" + }, + "application/vnd.3gpp.pfcp": { + source: "iana" + }, + "application/vnd.3gpp.pic-bw-large": { + source: "iana", + extensions: ["plb"] + }, + "application/vnd.3gpp.pic-bw-small": { + source: "iana", + extensions: ["psb"] + }, + "application/vnd.3gpp.pic-bw-var": { + source: "iana", + extensions: ["pvb"] + }, + "application/vnd.3gpp.s1ap": { + source: "iana" + }, + "application/vnd.3gpp.sms": { + source: "iana" + }, + "application/vnd.3gpp.sms+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.srvcc-ext+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.srvcc-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.state-and-event-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.ussd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp2.bcmcsinfo+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp2.sms": { + source: "iana" + }, + "application/vnd.3gpp2.tcap": { + source: "iana", + extensions: ["tcap"] + }, + "application/vnd.3lightssoftware.imagescal": { + source: "iana" + }, + "application/vnd.3m.post-it-notes": { + source: "iana", + extensions: ["pwn"] + }, + "application/vnd.accpac.simply.aso": { + source: "iana", + extensions: ["aso"] + }, + "application/vnd.accpac.simply.imp": { + source: "iana", + extensions: ["imp"] + }, + "application/vnd.acucobol": { + source: "iana", + extensions: ["acu"] + }, + "application/vnd.acucorp": { + source: "iana", + extensions: ["atc", "acutc"] + }, + "application/vnd.adobe.air-application-installer-package+zip": { + source: "apache", + compressible: false, + extensions: ["air"] + }, + "application/vnd.adobe.flash.movie": { + source: "iana" + }, + "application/vnd.adobe.formscentral.fcdt": { + source: "iana", + extensions: ["fcdt"] + }, + "application/vnd.adobe.fxp": { + source: "iana", + extensions: ["fxp", "fxpl"] + }, + "application/vnd.adobe.partial-upload": { + source: "iana" + }, + "application/vnd.adobe.xdp+xml": { + source: "iana", + compressible: true, + extensions: ["xdp"] + }, + "application/vnd.adobe.xfdf": { + source: "iana", + extensions: ["xfdf"] + }, + "application/vnd.aether.imp": { + source: "iana" + }, + "application/vnd.afpc.afplinedata": { + source: "iana" + }, + "application/vnd.afpc.afplinedata-pagedef": { + source: "iana" + }, + "application/vnd.afpc.cmoca-cmresource": { + source: "iana" + }, + "application/vnd.afpc.foca-charset": { + source: "iana" + }, + "application/vnd.afpc.foca-codedfont": { + source: "iana" + }, + "application/vnd.afpc.foca-codepage": { + source: "iana" + }, + "application/vnd.afpc.modca": { + source: "iana" + }, + "application/vnd.afpc.modca-cmtable": { + source: "iana" + }, + "application/vnd.afpc.modca-formdef": { + source: "iana" + }, + "application/vnd.afpc.modca-mediummap": { + source: "iana" + }, + "application/vnd.afpc.modca-objectcontainer": { + source: "iana" + }, + "application/vnd.afpc.modca-overlay": { + source: "iana" + }, + "application/vnd.afpc.modca-pagesegment": { + source: "iana" + }, + "application/vnd.age": { + source: "iana", + extensions: ["age"] + }, + "application/vnd.ah-barcode": { + source: "iana" + }, + "application/vnd.ahead.space": { + source: "iana", + extensions: ["ahead"] + }, + "application/vnd.airzip.filesecure.azf": { + source: "iana", + extensions: ["azf"] + }, + "application/vnd.airzip.filesecure.azs": { + source: "iana", + extensions: ["azs"] + }, + "application/vnd.amadeus+json": { + source: "iana", + compressible: true + }, + "application/vnd.amazon.ebook": { + source: "apache", + extensions: ["azw"] + }, + "application/vnd.amazon.mobi8-ebook": { + source: "iana" + }, + "application/vnd.americandynamics.acc": { + source: "iana", + extensions: ["acc"] + }, + "application/vnd.amiga.ami": { + source: "iana", + extensions: ["ami"] + }, + "application/vnd.amundsen.maze+xml": { + source: "iana", + compressible: true + }, + "application/vnd.android.ota": { + source: "iana" + }, + "application/vnd.android.package-archive": { + source: "apache", + compressible: false, + extensions: ["apk"] + }, + "application/vnd.anki": { + source: "iana" + }, + "application/vnd.anser-web-certificate-issue-initiation": { + source: "iana", + extensions: ["cii"] + }, + "application/vnd.anser-web-funds-transfer-initiation": { + source: "apache", + extensions: ["fti"] + }, + "application/vnd.antix.game-component": { + source: "iana", + extensions: ["atx"] + }, + "application/vnd.apache.arrow.file": { + source: "iana" + }, + "application/vnd.apache.arrow.stream": { + source: "iana" + }, + "application/vnd.apache.thrift.binary": { + source: "iana" + }, + "application/vnd.apache.thrift.compact": { + source: "iana" + }, + "application/vnd.apache.thrift.json": { + source: "iana" + }, + "application/vnd.api+json": { + source: "iana", + compressible: true + }, + "application/vnd.aplextor.warrp+json": { + source: "iana", + compressible: true + }, + "application/vnd.apothekende.reservation+json": { + source: "iana", + compressible: true + }, + "application/vnd.apple.installer+xml": { + source: "iana", + compressible: true, + extensions: ["mpkg"] + }, + "application/vnd.apple.keynote": { + source: "iana", + extensions: ["key"] + }, + "application/vnd.apple.mpegurl": { + source: "iana", + extensions: ["m3u8"] + }, + "application/vnd.apple.numbers": { + source: "iana", + extensions: ["numbers"] + }, + "application/vnd.apple.pages": { + source: "iana", + extensions: ["pages"] + }, + "application/vnd.apple.pkpass": { + compressible: false, + extensions: ["pkpass"] + }, + "application/vnd.arastra.swi": { + source: "iana" + }, + "application/vnd.aristanetworks.swi": { + source: "iana", + extensions: ["swi"] + }, + "application/vnd.artisan+json": { + source: "iana", + compressible: true + }, + "application/vnd.artsquare": { + source: "iana" + }, + "application/vnd.astraea-software.iota": { + source: "iana", + extensions: ["iota"] + }, + "application/vnd.audiograph": { + source: "iana", + extensions: ["aep"] + }, + "application/vnd.autopackage": { + source: "iana" + }, + "application/vnd.avalon+json": { + source: "iana", + compressible: true + }, + "application/vnd.avistar+xml": { + source: "iana", + compressible: true + }, + "application/vnd.balsamiq.bmml+xml": { + source: "iana", + compressible: true, + extensions: ["bmml"] + }, + "application/vnd.balsamiq.bmpr": { + source: "iana" + }, + "application/vnd.banana-accounting": { + source: "iana" + }, + "application/vnd.bbf.usp.error": { + source: "iana" + }, + "application/vnd.bbf.usp.msg": { + source: "iana" + }, + "application/vnd.bbf.usp.msg+json": { + source: "iana", + compressible: true + }, + "application/vnd.bekitzur-stech+json": { + source: "iana", + compressible: true + }, + "application/vnd.bint.med-content": { + source: "iana" + }, + "application/vnd.biopax.rdf+xml": { + source: "iana", + compressible: true + }, + "application/vnd.blink-idb-value-wrapper": { + source: "iana" + }, + "application/vnd.blueice.multipass": { + source: "iana", + extensions: ["mpm"] + }, + "application/vnd.bluetooth.ep.oob": { + source: "iana" + }, + "application/vnd.bluetooth.le.oob": { + source: "iana" + }, + "application/vnd.bmi": { + source: "iana", + extensions: ["bmi"] + }, + "application/vnd.bpf": { + source: "iana" + }, + "application/vnd.bpf3": { + source: "iana" + }, + "application/vnd.businessobjects": { + source: "iana", + extensions: ["rep"] + }, + "application/vnd.byu.uapi+json": { + source: "iana", + compressible: true + }, + "application/vnd.cab-jscript": { + source: "iana" + }, + "application/vnd.canon-cpdl": { + source: "iana" + }, + "application/vnd.canon-lips": { + source: "iana" + }, + "application/vnd.capasystems-pg+json": { + source: "iana", + compressible: true + }, + "application/vnd.cendio.thinlinc.clientconf": { + source: "iana" + }, + "application/vnd.century-systems.tcp_stream": { + source: "iana" + }, + "application/vnd.chemdraw+xml": { + source: "iana", + compressible: true, + extensions: ["cdxml"] + }, + "application/vnd.chess-pgn": { + source: "iana" + }, + "application/vnd.chipnuts.karaoke-mmd": { + source: "iana", + extensions: ["mmd"] + }, + "application/vnd.ciedi": { + source: "iana" + }, + "application/vnd.cinderella": { + source: "iana", + extensions: ["cdy"] + }, + "application/vnd.cirpack.isdn-ext": { + source: "iana" + }, + "application/vnd.citationstyles.style+xml": { + source: "iana", + compressible: true, + extensions: ["csl"] + }, + "application/vnd.claymore": { + source: "iana", + extensions: ["cla"] + }, + "application/vnd.cloanto.rp9": { + source: "iana", + extensions: ["rp9"] + }, + "application/vnd.clonk.c4group": { + source: "iana", + extensions: ["c4g", "c4d", "c4f", "c4p", "c4u"] + }, + "application/vnd.cluetrust.cartomobile-config": { + source: "iana", + extensions: ["c11amc"] + }, + "application/vnd.cluetrust.cartomobile-config-pkg": { + source: "iana", + extensions: ["c11amz"] + }, + "application/vnd.coffeescript": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.document": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.document-template": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.presentation": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.presentation-template": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet-template": { + source: "iana" + }, + "application/vnd.collection+json": { + source: "iana", + compressible: true + }, + "application/vnd.collection.doc+json": { + source: "iana", + compressible: true + }, + "application/vnd.collection.next+json": { + source: "iana", + compressible: true + }, + "application/vnd.comicbook+zip": { + source: "iana", + compressible: false + }, + "application/vnd.comicbook-rar": { + source: "iana" + }, + "application/vnd.commerce-battelle": { + source: "iana" + }, + "application/vnd.commonspace": { + source: "iana", + extensions: ["csp"] + }, + "application/vnd.contact.cmsg": { + source: "iana", + extensions: ["cdbcmsg"] + }, + "application/vnd.coreos.ignition+json": { + source: "iana", + compressible: true + }, + "application/vnd.cosmocaller": { + source: "iana", + extensions: ["cmc"] + }, + "application/vnd.crick.clicker": { + source: "iana", + extensions: ["clkx"] + }, + "application/vnd.crick.clicker.keyboard": { + source: "iana", + extensions: ["clkk"] + }, + "application/vnd.crick.clicker.palette": { + source: "iana", + extensions: ["clkp"] + }, + "application/vnd.crick.clicker.template": { + source: "iana", + extensions: ["clkt"] + }, + "application/vnd.crick.clicker.wordbank": { + source: "iana", + extensions: ["clkw"] + }, + "application/vnd.criticaltools.wbs+xml": { + source: "iana", + compressible: true, + extensions: ["wbs"] + }, + "application/vnd.cryptii.pipe+json": { + source: "iana", + compressible: true + }, + "application/vnd.crypto-shade-file": { + source: "iana" + }, + "application/vnd.cryptomator.encrypted": { + source: "iana" + }, + "application/vnd.cryptomator.vault": { + source: "iana" + }, + "application/vnd.ctc-posml": { + source: "iana", + extensions: ["pml"] + }, + "application/vnd.ctct.ws+xml": { + source: "iana", + compressible: true + }, + "application/vnd.cups-pdf": { + source: "iana" + }, + "application/vnd.cups-postscript": { + source: "iana" + }, + "application/vnd.cups-ppd": { + source: "iana", + extensions: ["ppd"] + }, + "application/vnd.cups-raster": { + source: "iana" + }, + "application/vnd.cups-raw": { + source: "iana" + }, + "application/vnd.curl": { + source: "iana" + }, + "application/vnd.curl.car": { + source: "apache", + extensions: ["car"] + }, + "application/vnd.curl.pcurl": { + source: "apache", + extensions: ["pcurl"] + }, + "application/vnd.cyan.dean.root+xml": { + source: "iana", + compressible: true + }, + "application/vnd.cybank": { + source: "iana" + }, + "application/vnd.cyclonedx+json": { + source: "iana", + compressible: true + }, + "application/vnd.cyclonedx+xml": { + source: "iana", + compressible: true + }, + "application/vnd.d2l.coursepackage1p0+zip": { + source: "iana", + compressible: false + }, + "application/vnd.d3m-dataset": { + source: "iana" + }, + "application/vnd.d3m-problem": { + source: "iana" + }, + "application/vnd.dart": { + source: "iana", + compressible: true, + extensions: ["dart"] + }, + "application/vnd.data-vision.rdz": { + source: "iana", + extensions: ["rdz"] + }, + "application/vnd.datapackage+json": { + source: "iana", + compressible: true + }, + "application/vnd.dataresource+json": { + source: "iana", + compressible: true + }, + "application/vnd.dbf": { + source: "iana", + extensions: ["dbf"] + }, + "application/vnd.debian.binary-package": { + source: "iana" + }, + "application/vnd.dece.data": { + source: "iana", + extensions: ["uvf", "uvvf", "uvd", "uvvd"] + }, + "application/vnd.dece.ttml+xml": { + source: "iana", + compressible: true, + extensions: ["uvt", "uvvt"] + }, + "application/vnd.dece.unspecified": { + source: "iana", + extensions: ["uvx", "uvvx"] + }, + "application/vnd.dece.zip": { + source: "iana", + extensions: ["uvz", "uvvz"] + }, + "application/vnd.denovo.fcselayout-link": { + source: "iana", + extensions: ["fe_launch"] + }, + "application/vnd.desmume.movie": { + source: "iana" + }, + "application/vnd.dir-bi.plate-dl-nosuffix": { + source: "iana" + }, + "application/vnd.dm.delegation+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dna": { + source: "iana", + extensions: ["dna"] + }, + "application/vnd.document+json": { + source: "iana", + compressible: true + }, + "application/vnd.dolby.mlp": { + source: "apache", + extensions: ["mlp"] + }, + "application/vnd.dolby.mobile.1": { + source: "iana" + }, + "application/vnd.dolby.mobile.2": { + source: "iana" + }, + "application/vnd.doremir.scorecloud-binary-document": { + source: "iana" + }, + "application/vnd.dpgraph": { + source: "iana", + extensions: ["dpg"] + }, + "application/vnd.dreamfactory": { + source: "iana", + extensions: ["dfac"] + }, + "application/vnd.drive+json": { + source: "iana", + compressible: true + }, + "application/vnd.ds-keypoint": { + source: "apache", + extensions: ["kpxx"] + }, + "application/vnd.dtg.local": { + source: "iana" + }, + "application/vnd.dtg.local.flash": { + source: "iana" + }, + "application/vnd.dtg.local.html": { + source: "iana" + }, + "application/vnd.dvb.ait": { + source: "iana", + extensions: ["ait"] + }, + "application/vnd.dvb.dvbisl+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.dvbj": { + source: "iana" + }, + "application/vnd.dvb.esgcontainer": { + source: "iana" + }, + "application/vnd.dvb.ipdcdftnotifaccess": { + source: "iana" + }, + "application/vnd.dvb.ipdcesgaccess": { + source: "iana" + }, + "application/vnd.dvb.ipdcesgaccess2": { + source: "iana" + }, + "application/vnd.dvb.ipdcesgpdd": { + source: "iana" + }, + "application/vnd.dvb.ipdcroaming": { + source: "iana" + }, + "application/vnd.dvb.iptv.alfec-base": { + source: "iana" + }, + "application/vnd.dvb.iptv.alfec-enhancement": { + source: "iana" + }, + "application/vnd.dvb.notif-aggregate-root+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-container+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-generic+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-ia-msglist+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-ia-registration-request+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-ia-registration-response+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-init+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.pfr": { + source: "iana" + }, + "application/vnd.dvb.service": { + source: "iana", + extensions: ["svc"] + }, + "application/vnd.dxr": { + source: "iana" + }, + "application/vnd.dynageo": { + source: "iana", + extensions: ["geo"] + }, + "application/vnd.dzr": { + source: "iana" + }, + "application/vnd.easykaraoke.cdgdownload": { + source: "iana" + }, + "application/vnd.ecdis-update": { + source: "iana" + }, + "application/vnd.ecip.rlp": { + source: "iana" + }, + "application/vnd.eclipse.ditto+json": { + source: "iana", + compressible: true + }, + "application/vnd.ecowin.chart": { + source: "iana", + extensions: ["mag"] + }, + "application/vnd.ecowin.filerequest": { + source: "iana" + }, + "application/vnd.ecowin.fileupdate": { + source: "iana" + }, + "application/vnd.ecowin.series": { + source: "iana" + }, + "application/vnd.ecowin.seriesrequest": { + source: "iana" + }, + "application/vnd.ecowin.seriesupdate": { + source: "iana" + }, + "application/vnd.efi.img": { + source: "iana" + }, + "application/vnd.efi.iso": { + source: "iana" + }, + "application/vnd.emclient.accessrequest+xml": { + source: "iana", + compressible: true + }, + "application/vnd.enliven": { + source: "iana", + extensions: ["nml"] + }, + "application/vnd.enphase.envoy": { + source: "iana" + }, + "application/vnd.eprints.data+xml": { + source: "iana", + compressible: true + }, + "application/vnd.epson.esf": { + source: "iana", + extensions: ["esf"] + }, + "application/vnd.epson.msf": { + source: "iana", + extensions: ["msf"] + }, + "application/vnd.epson.quickanime": { + source: "iana", + extensions: ["qam"] + }, + "application/vnd.epson.salt": { + source: "iana", + extensions: ["slt"] + }, + "application/vnd.epson.ssf": { + source: "iana", + extensions: ["ssf"] + }, + "application/vnd.ericsson.quickcall": { + source: "iana" + }, + "application/vnd.espass-espass+zip": { + source: "iana", + compressible: false + }, + "application/vnd.eszigno3+xml": { + source: "iana", + compressible: true, + extensions: ["es3", "et3"] + }, + "application/vnd.etsi.aoc+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.asic-e+zip": { + source: "iana", + compressible: false + }, + "application/vnd.etsi.asic-s+zip": { + source: "iana", + compressible: false + }, + "application/vnd.etsi.cug+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvcommand+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvdiscovery+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvprofile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvsad-bc+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvsad-cod+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvsad-npvr+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvservice+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvsync+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvueprofile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.mcid+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.mheg5": { + source: "iana" + }, + "application/vnd.etsi.overload-control-policy-dataset+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.pstn+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.sci+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.simservs+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.timestamp-token": { + source: "iana" + }, + "application/vnd.etsi.tsl+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.tsl.der": { + source: "iana" + }, + "application/vnd.eu.kasparian.car+json": { + source: "iana", + compressible: true + }, + "application/vnd.eudora.data": { + source: "iana" + }, + "application/vnd.evolv.ecig.profile": { + source: "iana" + }, + "application/vnd.evolv.ecig.settings": { + source: "iana" + }, + "application/vnd.evolv.ecig.theme": { + source: "iana" + }, + "application/vnd.exstream-empower+zip": { + source: "iana", + compressible: false + }, + "application/vnd.exstream-package": { + source: "iana" + }, + "application/vnd.ezpix-album": { + source: "iana", + extensions: ["ez2"] + }, + "application/vnd.ezpix-package": { + source: "iana", + extensions: ["ez3"] + }, + "application/vnd.f-secure.mobile": { + source: "iana" + }, + "application/vnd.familysearch.gedcom+zip": { + source: "iana", + compressible: false + }, + "application/vnd.fastcopy-disk-image": { + source: "iana" + }, + "application/vnd.fdf": { + source: "iana", + extensions: ["fdf"] + }, + "application/vnd.fdsn.mseed": { + source: "iana", + extensions: ["mseed"] + }, + "application/vnd.fdsn.seed": { + source: "iana", + extensions: ["seed", "dataless"] + }, + "application/vnd.ffsns": { + source: "iana" + }, + "application/vnd.ficlab.flb+zip": { + source: "iana", + compressible: false + }, + "application/vnd.filmit.zfc": { + source: "iana" + }, + "application/vnd.fints": { + source: "iana" + }, + "application/vnd.firemonkeys.cloudcell": { + source: "iana" + }, + "application/vnd.flographit": { + source: "iana", + extensions: ["gph"] + }, + "application/vnd.fluxtime.clip": { + source: "iana", + extensions: ["ftc"] + }, + "application/vnd.font-fontforge-sfd": { + source: "iana" + }, + "application/vnd.framemaker": { + source: "iana", + extensions: ["fm", "frame", "maker", "book"] + }, + "application/vnd.frogans.fnc": { + source: "iana", + extensions: ["fnc"] + }, + "application/vnd.frogans.ltf": { + source: "iana", + extensions: ["ltf"] + }, + "application/vnd.fsc.weblaunch": { + source: "iana", + extensions: ["fsc"] + }, + "application/vnd.fujifilm.fb.docuworks": { + source: "iana" + }, + "application/vnd.fujifilm.fb.docuworks.binder": { + source: "iana" + }, + "application/vnd.fujifilm.fb.docuworks.container": { + source: "iana" + }, + "application/vnd.fujifilm.fb.jfi+xml": { + source: "iana", + compressible: true + }, + "application/vnd.fujitsu.oasys": { + source: "iana", + extensions: ["oas"] + }, + "application/vnd.fujitsu.oasys2": { + source: "iana", + extensions: ["oa2"] + }, + "application/vnd.fujitsu.oasys3": { + source: "iana", + extensions: ["oa3"] + }, + "application/vnd.fujitsu.oasysgp": { + source: "iana", + extensions: ["fg5"] + }, + "application/vnd.fujitsu.oasysprs": { + source: "iana", + extensions: ["bh2"] + }, + "application/vnd.fujixerox.art-ex": { + source: "iana" + }, + "application/vnd.fujixerox.art4": { + source: "iana" + }, + "application/vnd.fujixerox.ddd": { + source: "iana", + extensions: ["ddd"] + }, + "application/vnd.fujixerox.docuworks": { + source: "iana", + extensions: ["xdw"] + }, + "application/vnd.fujixerox.docuworks.binder": { + source: "iana", + extensions: ["xbd"] + }, + "application/vnd.fujixerox.docuworks.container": { + source: "iana" + }, + "application/vnd.fujixerox.hbpl": { + source: "iana" + }, + "application/vnd.fut-misnet": { + source: "iana" + }, + "application/vnd.futoin+cbor": { + source: "iana" + }, + "application/vnd.futoin+json": { + source: "iana", + compressible: true + }, + "application/vnd.fuzzysheet": { + source: "iana", + extensions: ["fzs"] + }, + "application/vnd.genomatix.tuxedo": { + source: "iana", + extensions: ["txd"] + }, + "application/vnd.gentics.grd+json": { + source: "iana", + compressible: true + }, + "application/vnd.geo+json": { + source: "iana", + compressible: true + }, + "application/vnd.geocube+xml": { + source: "iana", + compressible: true + }, + "application/vnd.geogebra.file": { + source: "iana", + extensions: ["ggb"] + }, + "application/vnd.geogebra.slides": { + source: "iana" + }, + "application/vnd.geogebra.tool": { + source: "iana", + extensions: ["ggt"] + }, + "application/vnd.geometry-explorer": { + source: "iana", + extensions: ["gex", "gre"] + }, + "application/vnd.geonext": { + source: "iana", + extensions: ["gxt"] + }, + "application/vnd.geoplan": { + source: "iana", + extensions: ["g2w"] + }, + "application/vnd.geospace": { + source: "iana", + extensions: ["g3w"] + }, + "application/vnd.gerber": { + source: "iana" + }, + "application/vnd.globalplatform.card-content-mgt": { + source: "iana" + }, + "application/vnd.globalplatform.card-content-mgt-response": { + source: "iana" + }, + "application/vnd.gmx": { + source: "iana", + extensions: ["gmx"] + }, + "application/vnd.google-apps.document": { + compressible: false, + extensions: ["gdoc"] + }, + "application/vnd.google-apps.presentation": { + compressible: false, + extensions: ["gslides"] + }, + "application/vnd.google-apps.spreadsheet": { + compressible: false, + extensions: ["gsheet"] + }, + "application/vnd.google-earth.kml+xml": { + source: "iana", + compressible: true, + extensions: ["kml"] + }, + "application/vnd.google-earth.kmz": { + source: "iana", + compressible: false, + extensions: ["kmz"] + }, + "application/vnd.gov.sk.e-form+xml": { + source: "iana", + compressible: true + }, + "application/vnd.gov.sk.e-form+zip": { + source: "iana", + compressible: false + }, + "application/vnd.gov.sk.xmldatacontainer+xml": { + source: "iana", + compressible: true + }, + "application/vnd.grafeq": { + source: "iana", + extensions: ["gqf", "gqs"] + }, + "application/vnd.gridmp": { + source: "iana" + }, + "application/vnd.groove-account": { + source: "iana", + extensions: ["gac"] + }, + "application/vnd.groove-help": { + source: "iana", + extensions: ["ghf"] + }, + "application/vnd.groove-identity-message": { + source: "iana", + extensions: ["gim"] + }, + "application/vnd.groove-injector": { + source: "iana", + extensions: ["grv"] + }, + "application/vnd.groove-tool-message": { + source: "iana", + extensions: ["gtm"] + }, + "application/vnd.groove-tool-template": { + source: "iana", + extensions: ["tpl"] + }, + "application/vnd.groove-vcard": { + source: "iana", + extensions: ["vcg"] + }, + "application/vnd.hal+json": { + source: "iana", + compressible: true + }, + "application/vnd.hal+xml": { + source: "iana", + compressible: true, + extensions: ["hal"] + }, + "application/vnd.handheld-entertainment+xml": { + source: "iana", + compressible: true, + extensions: ["zmm"] + }, + "application/vnd.hbci": { + source: "iana", + extensions: ["hbci"] + }, + "application/vnd.hc+json": { + source: "iana", + compressible: true + }, + "application/vnd.hcl-bireports": { + source: "iana" + }, + "application/vnd.hdt": { + source: "iana" + }, + "application/vnd.heroku+json": { + source: "iana", + compressible: true + }, + "application/vnd.hhe.lesson-player": { + source: "iana", + extensions: ["les"] + }, + "application/vnd.hl7cda+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.hl7v2+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.hp-hpgl": { + source: "iana", + extensions: ["hpgl"] + }, + "application/vnd.hp-hpid": { + source: "iana", + extensions: ["hpid"] + }, + "application/vnd.hp-hps": { + source: "iana", + extensions: ["hps"] + }, + "application/vnd.hp-jlyt": { + source: "iana", + extensions: ["jlt"] + }, + "application/vnd.hp-pcl": { + source: "iana", + extensions: ["pcl"] + }, + "application/vnd.hp-pclxl": { + source: "iana", + extensions: ["pclxl"] + }, + "application/vnd.httphone": { + source: "iana" + }, + "application/vnd.hydrostatix.sof-data": { + source: "iana", + extensions: ["sfd-hdstx"] + }, + "application/vnd.hyper+json": { + source: "iana", + compressible: true + }, + "application/vnd.hyper-item+json": { + source: "iana", + compressible: true + }, + "application/vnd.hyperdrive+json": { + source: "iana", + compressible: true + }, + "application/vnd.hzn-3d-crossword": { + source: "iana" + }, + "application/vnd.ibm.afplinedata": { + source: "iana" + }, + "application/vnd.ibm.electronic-media": { + source: "iana" + }, + "application/vnd.ibm.minipay": { + source: "iana", + extensions: ["mpy"] + }, + "application/vnd.ibm.modcap": { + source: "iana", + extensions: ["afp", "listafp", "list3820"] + }, + "application/vnd.ibm.rights-management": { + source: "iana", + extensions: ["irm"] + }, + "application/vnd.ibm.secure-container": { + source: "iana", + extensions: ["sc"] + }, + "application/vnd.iccprofile": { + source: "iana", + extensions: ["icc", "icm"] + }, + "application/vnd.ieee.1905": { + source: "iana" + }, + "application/vnd.igloader": { + source: "iana", + extensions: ["igl"] + }, + "application/vnd.imagemeter.folder+zip": { + source: "iana", + compressible: false + }, + "application/vnd.imagemeter.image+zip": { + source: "iana", + compressible: false + }, + "application/vnd.immervision-ivp": { + source: "iana", + extensions: ["ivp"] + }, + "application/vnd.immervision-ivu": { + source: "iana", + extensions: ["ivu"] + }, + "application/vnd.ims.imsccv1p1": { + source: "iana" + }, + "application/vnd.ims.imsccv1p2": { + source: "iana" + }, + "application/vnd.ims.imsccv1p3": { + source: "iana" + }, + "application/vnd.ims.lis.v2.result+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolconsumerprofile+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolproxy+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolproxy.id+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolsettings+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolsettings.simple+json": { + source: "iana", + compressible: true + }, + "application/vnd.informedcontrol.rms+xml": { + source: "iana", + compressible: true + }, + "application/vnd.informix-visionary": { + source: "iana" + }, + "application/vnd.infotech.project": { + source: "iana" + }, + "application/vnd.infotech.project+xml": { + source: "iana", + compressible: true + }, + "application/vnd.innopath.wamp.notification": { + source: "iana" + }, + "application/vnd.insors.igm": { + source: "iana", + extensions: ["igm"] + }, + "application/vnd.intercon.formnet": { + source: "iana", + extensions: ["xpw", "xpx"] + }, + "application/vnd.intergeo": { + source: "iana", + extensions: ["i2g"] + }, + "application/vnd.intertrust.digibox": { + source: "iana" + }, + "application/vnd.intertrust.nncp": { + source: "iana" + }, + "application/vnd.intu.qbo": { + source: "iana", + extensions: ["qbo"] + }, + "application/vnd.intu.qfx": { + source: "iana", + extensions: ["qfx"] + }, + "application/vnd.iptc.g2.catalogitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.conceptitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.knowledgeitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.newsitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.newsmessage+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.packageitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.planningitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ipunplugged.rcprofile": { + source: "iana", + extensions: ["rcprofile"] + }, + "application/vnd.irepository.package+xml": { + source: "iana", + compressible: true, + extensions: ["irp"] + }, + "application/vnd.is-xpr": { + source: "iana", + extensions: ["xpr"] + }, + "application/vnd.isac.fcs": { + source: "iana", + extensions: ["fcs"] + }, + "application/vnd.iso11783-10+zip": { + source: "iana", + compressible: false + }, + "application/vnd.jam": { + source: "iana", + extensions: ["jam"] + }, + "application/vnd.japannet-directory-service": { + source: "iana" + }, + "application/vnd.japannet-jpnstore-wakeup": { + source: "iana" + }, + "application/vnd.japannet-payment-wakeup": { + source: "iana" + }, + "application/vnd.japannet-registration": { + source: "iana" + }, + "application/vnd.japannet-registration-wakeup": { + source: "iana" + }, + "application/vnd.japannet-setstore-wakeup": { + source: "iana" + }, + "application/vnd.japannet-verification": { + source: "iana" + }, + "application/vnd.japannet-verification-wakeup": { + source: "iana" + }, + "application/vnd.jcp.javame.midlet-rms": { + source: "iana", + extensions: ["rms"] + }, + "application/vnd.jisp": { + source: "iana", + extensions: ["jisp"] + }, + "application/vnd.joost.joda-archive": { + source: "iana", + extensions: ["joda"] + }, + "application/vnd.jsk.isdn-ngn": { + source: "iana" + }, + "application/vnd.kahootz": { + source: "iana", + extensions: ["ktz", "ktr"] + }, + "application/vnd.kde.karbon": { + source: "iana", + extensions: ["karbon"] + }, + "application/vnd.kde.kchart": { + source: "iana", + extensions: ["chrt"] + }, + "application/vnd.kde.kformula": { + source: "iana", + extensions: ["kfo"] + }, + "application/vnd.kde.kivio": { + source: "iana", + extensions: ["flw"] + }, + "application/vnd.kde.kontour": { + source: "iana", + extensions: ["kon"] + }, + "application/vnd.kde.kpresenter": { + source: "iana", + extensions: ["kpr", "kpt"] + }, + "application/vnd.kde.kspread": { + source: "iana", + extensions: ["ksp"] + }, + "application/vnd.kde.kword": { + source: "iana", + extensions: ["kwd", "kwt"] + }, + "application/vnd.kenameaapp": { + source: "iana", + extensions: ["htke"] + }, + "application/vnd.kidspiration": { + source: "iana", + extensions: ["kia"] + }, + "application/vnd.kinar": { + source: "iana", + extensions: ["kne", "knp"] + }, + "application/vnd.koan": { + source: "iana", + extensions: ["skp", "skd", "skt", "skm"] + }, + "application/vnd.kodak-descriptor": { + source: "iana", + extensions: ["sse"] + }, + "application/vnd.las": { + source: "iana" + }, + "application/vnd.las.las+json": { + source: "iana", + compressible: true + }, + "application/vnd.las.las+xml": { + source: "iana", + compressible: true, + extensions: ["lasxml"] + }, + "application/vnd.laszip": { + source: "iana" + }, + "application/vnd.leap+json": { + source: "iana", + compressible: true + }, + "application/vnd.liberty-request+xml": { + source: "iana", + compressible: true + }, + "application/vnd.llamagraphics.life-balance.desktop": { + source: "iana", + extensions: ["lbd"] + }, + "application/vnd.llamagraphics.life-balance.exchange+xml": { + source: "iana", + compressible: true, + extensions: ["lbe"] + }, + "application/vnd.logipipe.circuit+zip": { + source: "iana", + compressible: false + }, + "application/vnd.loom": { + source: "iana" + }, + "application/vnd.lotus-1-2-3": { + source: "iana", + extensions: ["123"] + }, + "application/vnd.lotus-approach": { + source: "iana", + extensions: ["apr"] + }, + "application/vnd.lotus-freelance": { + source: "iana", + extensions: ["pre"] + }, + "application/vnd.lotus-notes": { + source: "iana", + extensions: ["nsf"] + }, + "application/vnd.lotus-organizer": { + source: "iana", + extensions: ["org"] + }, + "application/vnd.lotus-screencam": { + source: "iana", + extensions: ["scm"] + }, + "application/vnd.lotus-wordpro": { + source: "iana", + extensions: ["lwp"] + }, + "application/vnd.macports.portpkg": { + source: "iana", + extensions: ["portpkg"] + }, + "application/vnd.mapbox-vector-tile": { + source: "iana", + extensions: ["mvt"] + }, + "application/vnd.marlin.drm.actiontoken+xml": { + source: "iana", + compressible: true + }, + "application/vnd.marlin.drm.conftoken+xml": { + source: "iana", + compressible: true + }, + "application/vnd.marlin.drm.license+xml": { + source: "iana", + compressible: true + }, + "application/vnd.marlin.drm.mdcf": { + source: "iana" + }, + "application/vnd.mason+json": { + source: "iana", + compressible: true + }, + "application/vnd.maxar.archive.3tz+zip": { + source: "iana", + compressible: false + }, + "application/vnd.maxmind.maxmind-db": { + source: "iana" + }, + "application/vnd.mcd": { + source: "iana", + extensions: ["mcd"] + }, + "application/vnd.medcalcdata": { + source: "iana", + extensions: ["mc1"] + }, + "application/vnd.mediastation.cdkey": { + source: "iana", + extensions: ["cdkey"] + }, + "application/vnd.meridian-slingshot": { + source: "iana" + }, + "application/vnd.mfer": { + source: "iana", + extensions: ["mwf"] + }, + "application/vnd.mfmp": { + source: "iana", + extensions: ["mfm"] + }, + "application/vnd.micro+json": { + source: "iana", + compressible: true + }, + "application/vnd.micrografx.flo": { + source: "iana", + extensions: ["flo"] + }, + "application/vnd.micrografx.igx": { + source: "iana", + extensions: ["igx"] + }, + "application/vnd.microsoft.portable-executable": { + source: "iana" + }, + "application/vnd.microsoft.windows.thumbnail-cache": { + source: "iana" + }, + "application/vnd.miele+json": { + source: "iana", + compressible: true + }, + "application/vnd.mif": { + source: "iana", + extensions: ["mif"] + }, + "application/vnd.minisoft-hp3000-save": { + source: "iana" + }, + "application/vnd.mitsubishi.misty-guard.trustweb": { + source: "iana" + }, + "application/vnd.mobius.daf": { + source: "iana", + extensions: ["daf"] + }, + "application/vnd.mobius.dis": { + source: "iana", + extensions: ["dis"] + }, + "application/vnd.mobius.mbk": { + source: "iana", + extensions: ["mbk"] + }, + "application/vnd.mobius.mqy": { + source: "iana", + extensions: ["mqy"] + }, + "application/vnd.mobius.msl": { + source: "iana", + extensions: ["msl"] + }, + "application/vnd.mobius.plc": { + source: "iana", + extensions: ["plc"] + }, + "application/vnd.mobius.txf": { + source: "iana", + extensions: ["txf"] + }, + "application/vnd.mophun.application": { + source: "iana", + extensions: ["mpn"] + }, + "application/vnd.mophun.certificate": { + source: "iana", + extensions: ["mpc"] + }, + "application/vnd.motorola.flexsuite": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.adsi": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.fis": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.gotap": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.kmr": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.ttc": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.wem": { + source: "iana" + }, + "application/vnd.motorola.iprm": { + source: "iana" + }, + "application/vnd.mozilla.xul+xml": { + source: "iana", + compressible: true, + extensions: ["xul"] + }, + "application/vnd.ms-3mfdocument": { + source: "iana" + }, + "application/vnd.ms-artgalry": { + source: "iana", + extensions: ["cil"] + }, + "application/vnd.ms-asf": { + source: "iana" + }, + "application/vnd.ms-cab-compressed": { + source: "iana", + extensions: ["cab"] + }, + "application/vnd.ms-color.iccprofile": { + source: "apache" + }, + "application/vnd.ms-excel": { + source: "iana", + compressible: false, + extensions: ["xls", "xlm", "xla", "xlc", "xlt", "xlw"] + }, + "application/vnd.ms-excel.addin.macroenabled.12": { + source: "iana", + extensions: ["xlam"] + }, + "application/vnd.ms-excel.sheet.binary.macroenabled.12": { + source: "iana", + extensions: ["xlsb"] + }, + "application/vnd.ms-excel.sheet.macroenabled.12": { + source: "iana", + extensions: ["xlsm"] + }, + "application/vnd.ms-excel.template.macroenabled.12": { + source: "iana", + extensions: ["xltm"] + }, + "application/vnd.ms-fontobject": { + source: "iana", + compressible: true, + extensions: ["eot"] + }, + "application/vnd.ms-htmlhelp": { + source: "iana", + extensions: ["chm"] + }, + "application/vnd.ms-ims": { + source: "iana", + extensions: ["ims"] + }, + "application/vnd.ms-lrm": { + source: "iana", + extensions: ["lrm"] + }, + "application/vnd.ms-office.activex+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ms-officetheme": { + source: "iana", + extensions: ["thmx"] + }, + "application/vnd.ms-opentype": { + source: "apache", + compressible: true + }, + "application/vnd.ms-outlook": { + compressible: false, + extensions: ["msg"] + }, + "application/vnd.ms-package.obfuscated-opentype": { + source: "apache" + }, + "application/vnd.ms-pki.seccat": { + source: "apache", + extensions: ["cat"] + }, + "application/vnd.ms-pki.stl": { + source: "apache", + extensions: ["stl"] + }, + "application/vnd.ms-playready.initiator+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ms-powerpoint": { + source: "iana", + compressible: false, + extensions: ["ppt", "pps", "pot"] + }, + "application/vnd.ms-powerpoint.addin.macroenabled.12": { + source: "iana", + extensions: ["ppam"] + }, + "application/vnd.ms-powerpoint.presentation.macroenabled.12": { + source: "iana", + extensions: ["pptm"] + }, + "application/vnd.ms-powerpoint.slide.macroenabled.12": { + source: "iana", + extensions: ["sldm"] + }, + "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { + source: "iana", + extensions: ["ppsm"] + }, + "application/vnd.ms-powerpoint.template.macroenabled.12": { + source: "iana", + extensions: ["potm"] + }, + "application/vnd.ms-printdevicecapabilities+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ms-printing.printticket+xml": { + source: "apache", + compressible: true + }, + "application/vnd.ms-printschematicket+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ms-project": { + source: "iana", + extensions: ["mpp", "mpt"] + }, + "application/vnd.ms-tnef": { + source: "iana" + }, + "application/vnd.ms-windows.devicepairing": { + source: "iana" + }, + "application/vnd.ms-windows.nwprinting.oob": { + source: "iana" + }, + "application/vnd.ms-windows.printerpairing": { + source: "iana" + }, + "application/vnd.ms-windows.wsd.oob": { + source: "iana" + }, + "application/vnd.ms-wmdrm.lic-chlg-req": { + source: "iana" + }, + "application/vnd.ms-wmdrm.lic-resp": { + source: "iana" + }, + "application/vnd.ms-wmdrm.meter-chlg-req": { + source: "iana" + }, + "application/vnd.ms-wmdrm.meter-resp": { + source: "iana" + }, + "application/vnd.ms-word.document.macroenabled.12": { + source: "iana", + extensions: ["docm"] + }, + "application/vnd.ms-word.template.macroenabled.12": { + source: "iana", + extensions: ["dotm"] + }, + "application/vnd.ms-works": { + source: "iana", + extensions: ["wps", "wks", "wcm", "wdb"] + }, + "application/vnd.ms-wpl": { + source: "iana", + extensions: ["wpl"] + }, + "application/vnd.ms-xpsdocument": { + source: "iana", + compressible: false, + extensions: ["xps"] + }, + "application/vnd.msa-disk-image": { + source: "iana" + }, + "application/vnd.mseq": { + source: "iana", + extensions: ["mseq"] + }, + "application/vnd.msign": { + source: "iana" + }, + "application/vnd.multiad.creator": { + source: "iana" + }, + "application/vnd.multiad.creator.cif": { + source: "iana" + }, + "application/vnd.music-niff": { + source: "iana" + }, + "application/vnd.musician": { + source: "iana", + extensions: ["mus"] + }, + "application/vnd.muvee.style": { + source: "iana", + extensions: ["msty"] + }, + "application/vnd.mynfc": { + source: "iana", + extensions: ["taglet"] + }, + "application/vnd.nacamar.ybrid+json": { + source: "iana", + compressible: true + }, + "application/vnd.ncd.control": { + source: "iana" + }, + "application/vnd.ncd.reference": { + source: "iana" + }, + "application/vnd.nearst.inv+json": { + source: "iana", + compressible: true + }, + "application/vnd.nebumind.line": { + source: "iana" + }, + "application/vnd.nervana": { + source: "iana" + }, + "application/vnd.netfpx": { + source: "iana" + }, + "application/vnd.neurolanguage.nlu": { + source: "iana", + extensions: ["nlu"] + }, + "application/vnd.nimn": { + source: "iana" + }, + "application/vnd.nintendo.nitro.rom": { + source: "iana" + }, + "application/vnd.nintendo.snes.rom": { + source: "iana" + }, + "application/vnd.nitf": { + source: "iana", + extensions: ["ntf", "nitf"] + }, + "application/vnd.noblenet-directory": { + source: "iana", + extensions: ["nnd"] + }, + "application/vnd.noblenet-sealer": { + source: "iana", + extensions: ["nns"] + }, + "application/vnd.noblenet-web": { + source: "iana", + extensions: ["nnw"] + }, + "application/vnd.nokia.catalogs": { + source: "iana" + }, + "application/vnd.nokia.conml+wbxml": { + source: "iana" + }, + "application/vnd.nokia.conml+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.iptv.config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.isds-radio-presets": { + source: "iana" + }, + "application/vnd.nokia.landmark+wbxml": { + source: "iana" + }, + "application/vnd.nokia.landmark+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.landmarkcollection+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.n-gage.ac+xml": { + source: "iana", + compressible: true, + extensions: ["ac"] + }, + "application/vnd.nokia.n-gage.data": { + source: "iana", + extensions: ["ngdat"] + }, + "application/vnd.nokia.n-gage.symbian.install": { + source: "iana", + extensions: ["n-gage"] + }, + "application/vnd.nokia.ncd": { + source: "iana" + }, + "application/vnd.nokia.pcd+wbxml": { + source: "iana" + }, + "application/vnd.nokia.pcd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.radio-preset": { + source: "iana", + extensions: ["rpst"] + }, + "application/vnd.nokia.radio-presets": { + source: "iana", + extensions: ["rpss"] + }, + "application/vnd.novadigm.edm": { + source: "iana", + extensions: ["edm"] + }, + "application/vnd.novadigm.edx": { + source: "iana", + extensions: ["edx"] + }, + "application/vnd.novadigm.ext": { + source: "iana", + extensions: ["ext"] + }, + "application/vnd.ntt-local.content-share": { + source: "iana" + }, + "application/vnd.ntt-local.file-transfer": { + source: "iana" + }, + "application/vnd.ntt-local.ogw_remote-access": { + source: "iana" + }, + "application/vnd.ntt-local.sip-ta_remote": { + source: "iana" + }, + "application/vnd.ntt-local.sip-ta_tcp_stream": { + source: "iana" + }, + "application/vnd.oasis.opendocument.chart": { + source: "iana", + extensions: ["odc"] + }, + "application/vnd.oasis.opendocument.chart-template": { + source: "iana", + extensions: ["otc"] + }, + "application/vnd.oasis.opendocument.database": { + source: "iana", + extensions: ["odb"] + }, + "application/vnd.oasis.opendocument.formula": { + source: "iana", + extensions: ["odf"] + }, + "application/vnd.oasis.opendocument.formula-template": { + source: "iana", + extensions: ["odft"] + }, + "application/vnd.oasis.opendocument.graphics": { + source: "iana", + compressible: false, + extensions: ["odg"] + }, + "application/vnd.oasis.opendocument.graphics-template": { + source: "iana", + extensions: ["otg"] + }, + "application/vnd.oasis.opendocument.image": { + source: "iana", + extensions: ["odi"] + }, + "application/vnd.oasis.opendocument.image-template": { + source: "iana", + extensions: ["oti"] + }, + "application/vnd.oasis.opendocument.presentation": { + source: "iana", + compressible: false, + extensions: ["odp"] + }, + "application/vnd.oasis.opendocument.presentation-template": { + source: "iana", + extensions: ["otp"] + }, + "application/vnd.oasis.opendocument.spreadsheet": { + source: "iana", + compressible: false, + extensions: ["ods"] + }, + "application/vnd.oasis.opendocument.spreadsheet-template": { + source: "iana", + extensions: ["ots"] + }, + "application/vnd.oasis.opendocument.text": { + source: "iana", + compressible: false, + extensions: ["odt"] + }, + "application/vnd.oasis.opendocument.text-master": { + source: "iana", + extensions: ["odm"] + }, + "application/vnd.oasis.opendocument.text-template": { + source: "iana", + extensions: ["ott"] + }, + "application/vnd.oasis.opendocument.text-web": { + source: "iana", + extensions: ["oth"] + }, + "application/vnd.obn": { + source: "iana" + }, + "application/vnd.ocf+cbor": { + source: "iana" + }, + "application/vnd.oci.image.manifest.v1+json": { + source: "iana", + compressible: true + }, + "application/vnd.oftn.l10n+json": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.contentaccessdownload+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.contentaccessstreaming+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.cspg-hexbinary": { + source: "iana" + }, + "application/vnd.oipf.dae.svg+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.dae.xhtml+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.mippvcontrolmessage+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.pae.gem": { + source: "iana" + }, + "application/vnd.oipf.spdiscovery+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.spdlist+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.ueprofile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.userprofile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.olpc-sugar": { + source: "iana", + extensions: ["xo"] + }, + "application/vnd.oma-scws-config": { + source: "iana" + }, + "application/vnd.oma-scws-http-request": { + source: "iana" + }, + "application/vnd.oma-scws-http-response": { + source: "iana" + }, + "application/vnd.oma.bcast.associated-procedure-parameter+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.drm-trigger+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.imd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.ltkm": { + source: "iana" + }, + "application/vnd.oma.bcast.notification+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.provisioningtrigger": { + source: "iana" + }, + "application/vnd.oma.bcast.sgboot": { + source: "iana" + }, + "application/vnd.oma.bcast.sgdd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.sgdu": { + source: "iana" + }, + "application/vnd.oma.bcast.simple-symbol-container": { + source: "iana" + }, + "application/vnd.oma.bcast.smartcard-trigger+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.sprov+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.stkm": { + source: "iana" + }, + "application/vnd.oma.cab-address-book+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.cab-feature-handler+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.cab-pcc+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.cab-subs-invite+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.cab-user-prefs+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.dcd": { + source: "iana" + }, + "application/vnd.oma.dcdc": { + source: "iana" + }, + "application/vnd.oma.dd2+xml": { + source: "iana", + compressible: true, + extensions: ["dd2"] + }, + "application/vnd.oma.drm.risd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.group-usage-list+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.lwm2m+cbor": { + source: "iana" + }, + "application/vnd.oma.lwm2m+json": { + source: "iana", + compressible: true + }, + "application/vnd.oma.lwm2m+tlv": { + source: "iana" + }, + "application/vnd.oma.pal+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.detailed-progress-report+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.final-report+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.groups+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.invocation-descriptor+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.optimized-progress-report+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.push": { + source: "iana" + }, + "application/vnd.oma.scidm.messages+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.xcap-directory+xml": { + source: "iana", + compressible: true + }, + "application/vnd.omads-email+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.omads-file+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.omads-folder+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.omaloc-supl-init": { + source: "iana" + }, + "application/vnd.onepager": { + source: "iana" + }, + "application/vnd.onepagertamp": { + source: "iana" + }, + "application/vnd.onepagertamx": { + source: "iana" + }, + "application/vnd.onepagertat": { + source: "iana" + }, + "application/vnd.onepagertatp": { + source: "iana" + }, + "application/vnd.onepagertatx": { + source: "iana" + }, + "application/vnd.openblox.game+xml": { + source: "iana", + compressible: true, + extensions: ["obgx"] + }, + "application/vnd.openblox.game-binary": { + source: "iana" + }, + "application/vnd.openeye.oeb": { + source: "iana" + }, + "application/vnd.openofficeorg.extension": { + source: "apache", + extensions: ["oxt"] + }, + "application/vnd.openstreetmap.data+xml": { + source: "iana", + compressible: true, + extensions: ["osm"] + }, + "application/vnd.opentimestamps.ots": { + source: "iana" + }, + "application/vnd.openxmlformats-officedocument.custom-properties+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawing+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.extended-properties+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation": { + source: "iana", + compressible: false, + extensions: ["pptx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide": { + source: "iana", + extensions: ["sldx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { + source: "iana", + extensions: ["ppsx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.template": { + source: "iana", + extensions: ["potx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { + source: "iana", + compressible: false, + extensions: ["xlsx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { + source: "iana", + extensions: ["xltx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.theme+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.themeoverride+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.vmldrawing": { + source: "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { + source: "iana", + compressible: false, + extensions: ["docx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { + source: "iana", + extensions: ["dotx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-package.core-properties+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-package.relationships+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oracle.resource+json": { + source: "iana", + compressible: true + }, + "application/vnd.orange.indata": { + source: "iana" + }, + "application/vnd.osa.netdeploy": { + source: "iana" + }, + "application/vnd.osgeo.mapguide.package": { + source: "iana", + extensions: ["mgp"] + }, + "application/vnd.osgi.bundle": { + source: "iana" + }, + "application/vnd.osgi.dp": { + source: "iana", + extensions: ["dp"] + }, + "application/vnd.osgi.subsystem": { + source: "iana", + extensions: ["esa"] + }, + "application/vnd.otps.ct-kip+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oxli.countgraph": { + source: "iana" + }, + "application/vnd.pagerduty+json": { + source: "iana", + compressible: true + }, + "application/vnd.palm": { + source: "iana", + extensions: ["pdb", "pqa", "oprc"] + }, + "application/vnd.panoply": { + source: "iana" + }, + "application/vnd.paos.xml": { + source: "iana" + }, + "application/vnd.patentdive": { + source: "iana" + }, + "application/vnd.patientecommsdoc": { + source: "iana" + }, + "application/vnd.pawaafile": { + source: "iana", + extensions: ["paw"] + }, + "application/vnd.pcos": { + source: "iana" + }, + "application/vnd.pg.format": { + source: "iana", + extensions: ["str"] + }, + "application/vnd.pg.osasli": { + source: "iana", + extensions: ["ei6"] + }, + "application/vnd.piaccess.application-licence": { + source: "iana" + }, + "application/vnd.picsel": { + source: "iana", + extensions: ["efif"] + }, + "application/vnd.pmi.widget": { + source: "iana", + extensions: ["wg"] + }, + "application/vnd.poc.group-advertisement+xml": { + source: "iana", + compressible: true + }, + "application/vnd.pocketlearn": { + source: "iana", + extensions: ["plf"] + }, + "application/vnd.powerbuilder6": { + source: "iana", + extensions: ["pbd"] + }, + "application/vnd.powerbuilder6-s": { + source: "iana" + }, + "application/vnd.powerbuilder7": { + source: "iana" + }, + "application/vnd.powerbuilder7-s": { + source: "iana" + }, + "application/vnd.powerbuilder75": { + source: "iana" + }, + "application/vnd.powerbuilder75-s": { + source: "iana" + }, + "application/vnd.preminet": { + source: "iana" + }, + "application/vnd.previewsystems.box": { + source: "iana", + extensions: ["box"] + }, + "application/vnd.proteus.magazine": { + source: "iana", + extensions: ["mgz"] + }, + "application/vnd.psfs": { + source: "iana" + }, + "application/vnd.publishare-delta-tree": { + source: "iana", + extensions: ["qps"] + }, + "application/vnd.pvi.ptid1": { + source: "iana", + extensions: ["ptid"] + }, + "application/vnd.pwg-multiplexed": { + source: "iana" + }, + "application/vnd.pwg-xhtml-print+xml": { + source: "iana", + compressible: true + }, + "application/vnd.qualcomm.brew-app-res": { + source: "iana" + }, + "application/vnd.quarantainenet": { + source: "iana" + }, + "application/vnd.quark.quarkxpress": { + source: "iana", + extensions: ["qxd", "qxt", "qwd", "qwt", "qxl", "qxb"] + }, + "application/vnd.quobject-quoxdocument": { + source: "iana" + }, + "application/vnd.radisys.moml+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit-conf+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit-conn+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit-dialog+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit-stream+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-conf+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-base+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-fax-detect+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-group+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-speech+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-transform+xml": { + source: "iana", + compressible: true + }, + "application/vnd.rainstor.data": { + source: "iana" + }, + "application/vnd.rapid": { + source: "iana" + }, + "application/vnd.rar": { + source: "iana", + extensions: ["rar"] + }, + "application/vnd.realvnc.bed": { + source: "iana", + extensions: ["bed"] + }, + "application/vnd.recordare.musicxml": { + source: "iana", + extensions: ["mxl"] + }, + "application/vnd.recordare.musicxml+xml": { + source: "iana", + compressible: true, + extensions: ["musicxml"] + }, + "application/vnd.renlearn.rlprint": { + source: "iana" + }, + "application/vnd.resilient.logic": { + source: "iana" + }, + "application/vnd.restful+json": { + source: "iana", + compressible: true + }, + "application/vnd.rig.cryptonote": { + source: "iana", + extensions: ["cryptonote"] + }, + "application/vnd.rim.cod": { + source: "apache", + extensions: ["cod"] + }, + "application/vnd.rn-realmedia": { + source: "apache", + extensions: ["rm"] + }, + "application/vnd.rn-realmedia-vbr": { + source: "apache", + extensions: ["rmvb"] + }, + "application/vnd.route66.link66+xml": { + source: "iana", + compressible: true, + extensions: ["link66"] + }, + "application/vnd.rs-274x": { + source: "iana" + }, + "application/vnd.ruckus.download": { + source: "iana" + }, + "application/vnd.s3sms": { + source: "iana" + }, + "application/vnd.sailingtracker.track": { + source: "iana", + extensions: ["st"] + }, + "application/vnd.sar": { + source: "iana" + }, + "application/vnd.sbm.cid": { + source: "iana" + }, + "application/vnd.sbm.mid2": { + source: "iana" + }, + "application/vnd.scribus": { + source: "iana" + }, + "application/vnd.sealed.3df": { + source: "iana" + }, + "application/vnd.sealed.csf": { + source: "iana" + }, + "application/vnd.sealed.doc": { + source: "iana" + }, + "application/vnd.sealed.eml": { + source: "iana" + }, + "application/vnd.sealed.mht": { + source: "iana" + }, + "application/vnd.sealed.net": { + source: "iana" + }, + "application/vnd.sealed.ppt": { + source: "iana" + }, + "application/vnd.sealed.tiff": { + source: "iana" + }, + "application/vnd.sealed.xls": { + source: "iana" + }, + "application/vnd.sealedmedia.softseal.html": { + source: "iana" + }, + "application/vnd.sealedmedia.softseal.pdf": { + source: "iana" + }, + "application/vnd.seemail": { + source: "iana", + extensions: ["see"] + }, + "application/vnd.seis+json": { + source: "iana", + compressible: true + }, + "application/vnd.sema": { + source: "iana", + extensions: ["sema"] + }, + "application/vnd.semd": { + source: "iana", + extensions: ["semd"] + }, + "application/vnd.semf": { + source: "iana", + extensions: ["semf"] + }, + "application/vnd.shade-save-file": { + source: "iana" + }, + "application/vnd.shana.informed.formdata": { + source: "iana", + extensions: ["ifm"] + }, + "application/vnd.shana.informed.formtemplate": { + source: "iana", + extensions: ["itp"] + }, + "application/vnd.shana.informed.interchange": { + source: "iana", + extensions: ["iif"] + }, + "application/vnd.shana.informed.package": { + source: "iana", + extensions: ["ipk"] + }, + "application/vnd.shootproof+json": { + source: "iana", + compressible: true + }, + "application/vnd.shopkick+json": { + source: "iana", + compressible: true + }, + "application/vnd.shp": { + source: "iana" + }, + "application/vnd.shx": { + source: "iana" + }, + "application/vnd.sigrok.session": { + source: "iana" + }, + "application/vnd.simtech-mindmapper": { + source: "iana", + extensions: ["twd", "twds"] + }, + "application/vnd.siren+json": { + source: "iana", + compressible: true + }, + "application/vnd.smaf": { + source: "iana", + extensions: ["mmf"] + }, + "application/vnd.smart.notebook": { + source: "iana" + }, + "application/vnd.smart.teacher": { + source: "iana", + extensions: ["teacher"] + }, + "application/vnd.snesdev-page-table": { + source: "iana" + }, + "application/vnd.software602.filler.form+xml": { + source: "iana", + compressible: true, + extensions: ["fo"] + }, + "application/vnd.software602.filler.form-xml-zip": { + source: "iana" + }, + "application/vnd.solent.sdkm+xml": { + source: "iana", + compressible: true, + extensions: ["sdkm", "sdkd"] + }, + "application/vnd.spotfire.dxp": { + source: "iana", + extensions: ["dxp"] + }, + "application/vnd.spotfire.sfs": { + source: "iana", + extensions: ["sfs"] + }, + "application/vnd.sqlite3": { + source: "iana" + }, + "application/vnd.sss-cod": { + source: "iana" + }, + "application/vnd.sss-dtf": { + source: "iana" + }, + "application/vnd.sss-ntf": { + source: "iana" + }, + "application/vnd.stardivision.calc": { + source: "apache", + extensions: ["sdc"] + }, + "application/vnd.stardivision.draw": { + source: "apache", + extensions: ["sda"] + }, + "application/vnd.stardivision.impress": { + source: "apache", + extensions: ["sdd"] + }, + "application/vnd.stardivision.math": { + source: "apache", + extensions: ["smf"] + }, + "application/vnd.stardivision.writer": { + source: "apache", + extensions: ["sdw", "vor"] + }, + "application/vnd.stardivision.writer-global": { + source: "apache", + extensions: ["sgl"] + }, + "application/vnd.stepmania.package": { + source: "iana", + extensions: ["smzip"] + }, + "application/vnd.stepmania.stepchart": { + source: "iana", + extensions: ["sm"] + }, + "application/vnd.street-stream": { + source: "iana" + }, + "application/vnd.sun.wadl+xml": { + source: "iana", + compressible: true, + extensions: ["wadl"] + }, + "application/vnd.sun.xml.calc": { + source: "apache", + extensions: ["sxc"] + }, + "application/vnd.sun.xml.calc.template": { + source: "apache", + extensions: ["stc"] + }, + "application/vnd.sun.xml.draw": { + source: "apache", + extensions: ["sxd"] + }, + "application/vnd.sun.xml.draw.template": { + source: "apache", + extensions: ["std"] + }, + "application/vnd.sun.xml.impress": { + source: "apache", + extensions: ["sxi"] + }, + "application/vnd.sun.xml.impress.template": { + source: "apache", + extensions: ["sti"] + }, + "application/vnd.sun.xml.math": { + source: "apache", + extensions: ["sxm"] + }, + "application/vnd.sun.xml.writer": { + source: "apache", + extensions: ["sxw"] + }, + "application/vnd.sun.xml.writer.global": { + source: "apache", + extensions: ["sxg"] + }, + "application/vnd.sun.xml.writer.template": { + source: "apache", + extensions: ["stw"] + }, + "application/vnd.sus-calendar": { + source: "iana", + extensions: ["sus", "susp"] + }, + "application/vnd.svd": { + source: "iana", + extensions: ["svd"] + }, + "application/vnd.swiftview-ics": { + source: "iana" + }, + "application/vnd.sycle+xml": { + source: "iana", + compressible: true + }, + "application/vnd.syft+json": { + source: "iana", + compressible: true + }, + "application/vnd.symbian.install": { + source: "apache", + extensions: ["sis", "sisx"] + }, + "application/vnd.syncml+xml": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["xsm"] + }, + "application/vnd.syncml.dm+wbxml": { + source: "iana", + charset: "UTF-8", + extensions: ["bdm"] + }, + "application/vnd.syncml.dm+xml": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["xdm"] + }, + "application/vnd.syncml.dm.notification": { + source: "iana" + }, + "application/vnd.syncml.dmddf+wbxml": { + source: "iana" + }, + "application/vnd.syncml.dmddf+xml": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["ddf"] + }, + "application/vnd.syncml.dmtnds+wbxml": { + source: "iana" + }, + "application/vnd.syncml.dmtnds+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.syncml.ds.notification": { + source: "iana" + }, + "application/vnd.tableschema+json": { + source: "iana", + compressible: true + }, + "application/vnd.tao.intent-module-archive": { + source: "iana", + extensions: ["tao"] + }, + "application/vnd.tcpdump.pcap": { + source: "iana", + extensions: ["pcap", "cap", "dmp"] + }, + "application/vnd.think-cell.ppttc+json": { + source: "iana", + compressible: true + }, + "application/vnd.tmd.mediaflex.api+xml": { + source: "iana", + compressible: true + }, + "application/vnd.tml": { + source: "iana" + }, + "application/vnd.tmobile-livetv": { + source: "iana", + extensions: ["tmo"] + }, + "application/vnd.tri.onesource": { + source: "iana" + }, + "application/vnd.trid.tpt": { + source: "iana", + extensions: ["tpt"] + }, + "application/vnd.triscape.mxs": { + source: "iana", + extensions: ["mxs"] + }, + "application/vnd.trueapp": { + source: "iana", + extensions: ["tra"] + }, + "application/vnd.truedoc": { + source: "iana" + }, + "application/vnd.ubisoft.webplayer": { + source: "iana" + }, + "application/vnd.ufdl": { + source: "iana", + extensions: ["ufd", "ufdl"] + }, + "application/vnd.uiq.theme": { + source: "iana", + extensions: ["utz"] + }, + "application/vnd.umajin": { + source: "iana", + extensions: ["umj"] + }, + "application/vnd.unity": { + source: "iana", + extensions: ["unityweb"] + }, + "application/vnd.uoml+xml": { + source: "iana", + compressible: true, + extensions: ["uoml"] + }, + "application/vnd.uplanet.alert": { + source: "iana" + }, + "application/vnd.uplanet.alert-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.bearer-choice": { + source: "iana" + }, + "application/vnd.uplanet.bearer-choice-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.cacheop": { + source: "iana" + }, + "application/vnd.uplanet.cacheop-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.channel": { + source: "iana" + }, + "application/vnd.uplanet.channel-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.list": { + source: "iana" + }, + "application/vnd.uplanet.list-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.listcmd": { + source: "iana" + }, + "application/vnd.uplanet.listcmd-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.signal": { + source: "iana" + }, + "application/vnd.uri-map": { + source: "iana" + }, + "application/vnd.valve.source.material": { + source: "iana" + }, + "application/vnd.vcx": { + source: "iana", + extensions: ["vcx"] + }, + "application/vnd.vd-study": { + source: "iana" + }, + "application/vnd.vectorworks": { + source: "iana" + }, + "application/vnd.vel+json": { + source: "iana", + compressible: true + }, + "application/vnd.verimatrix.vcas": { + source: "iana" + }, + "application/vnd.veritone.aion+json": { + source: "iana", + compressible: true + }, + "application/vnd.veryant.thin": { + source: "iana" + }, + "application/vnd.ves.encrypted": { + source: "iana" + }, + "application/vnd.vidsoft.vidconference": { + source: "iana" + }, + "application/vnd.visio": { + source: "iana", + extensions: ["vsd", "vst", "vss", "vsw"] + }, + "application/vnd.visionary": { + source: "iana", + extensions: ["vis"] + }, + "application/vnd.vividence.scriptfile": { + source: "iana" + }, + "application/vnd.vsf": { + source: "iana", + extensions: ["vsf"] + }, + "application/vnd.wap.sic": { + source: "iana" + }, + "application/vnd.wap.slc": { + source: "iana" + }, + "application/vnd.wap.wbxml": { + source: "iana", + charset: "UTF-8", + extensions: ["wbxml"] + }, + "application/vnd.wap.wmlc": { + source: "iana", + extensions: ["wmlc"] + }, + "application/vnd.wap.wmlscriptc": { + source: "iana", + extensions: ["wmlsc"] + }, + "application/vnd.webturbo": { + source: "iana", + extensions: ["wtb"] + }, + "application/vnd.wfa.dpp": { + source: "iana" + }, + "application/vnd.wfa.p2p": { + source: "iana" + }, + "application/vnd.wfa.wsc": { + source: "iana" + }, + "application/vnd.windows.devicepairing": { + source: "iana" + }, + "application/vnd.wmc": { + source: "iana" + }, + "application/vnd.wmf.bootstrap": { + source: "iana" + }, + "application/vnd.wolfram.mathematica": { + source: "iana" + }, + "application/vnd.wolfram.mathematica.package": { + source: "iana" + }, + "application/vnd.wolfram.player": { + source: "iana", + extensions: ["nbp"] + }, + "application/vnd.wordperfect": { + source: "iana", + extensions: ["wpd"] + }, + "application/vnd.wqd": { + source: "iana", + extensions: ["wqd"] + }, + "application/vnd.wrq-hp3000-labelled": { + source: "iana" + }, + "application/vnd.wt.stf": { + source: "iana", + extensions: ["stf"] + }, + "application/vnd.wv.csp+wbxml": { + source: "iana" + }, + "application/vnd.wv.csp+xml": { + source: "iana", + compressible: true + }, + "application/vnd.wv.ssp+xml": { + source: "iana", + compressible: true + }, + "application/vnd.xacml+json": { + source: "iana", + compressible: true + }, + "application/vnd.xara": { + source: "iana", + extensions: ["xar"] + }, + "application/vnd.xfdl": { + source: "iana", + extensions: ["xfdl"] + }, + "application/vnd.xfdl.webform": { + source: "iana" + }, + "application/vnd.xmi+xml": { + source: "iana", + compressible: true + }, + "application/vnd.xmpie.cpkg": { + source: "iana" + }, + "application/vnd.xmpie.dpkg": { + source: "iana" + }, + "application/vnd.xmpie.plan": { + source: "iana" + }, + "application/vnd.xmpie.ppkg": { + source: "iana" + }, + "application/vnd.xmpie.xlim": { + source: "iana" + }, + "application/vnd.yamaha.hv-dic": { + source: "iana", + extensions: ["hvd"] + }, + "application/vnd.yamaha.hv-script": { + source: "iana", + extensions: ["hvs"] + }, + "application/vnd.yamaha.hv-voice": { + source: "iana", + extensions: ["hvp"] + }, + "application/vnd.yamaha.openscoreformat": { + source: "iana", + extensions: ["osf"] + }, + "application/vnd.yamaha.openscoreformat.osfpvg+xml": { + source: "iana", + compressible: true, + extensions: ["osfpvg"] + }, + "application/vnd.yamaha.remote-setup": { + source: "iana" + }, + "application/vnd.yamaha.smaf-audio": { + source: "iana", + extensions: ["saf"] + }, + "application/vnd.yamaha.smaf-phrase": { + source: "iana", + extensions: ["spf"] + }, + "application/vnd.yamaha.through-ngn": { + source: "iana" + }, + "application/vnd.yamaha.tunnel-udpencap": { + source: "iana" + }, + "application/vnd.yaoweme": { + source: "iana" + }, + "application/vnd.yellowriver-custom-menu": { + source: "iana", + extensions: ["cmp"] + }, + "application/vnd.youtube.yt": { + source: "iana" + }, + "application/vnd.zul": { + source: "iana", + extensions: ["zir", "zirz"] + }, + "application/vnd.zzazz.deck+xml": { + source: "iana", + compressible: true, + extensions: ["zaz"] + }, + "application/voicexml+xml": { + source: "iana", + compressible: true, + extensions: ["vxml"] + }, + "application/voucher-cms+json": { + source: "iana", + compressible: true + }, + "application/vq-rtcpxr": { + source: "iana" + }, + "application/wasm": { + source: "iana", + compressible: true, + extensions: ["wasm"] + }, + "application/watcherinfo+xml": { + source: "iana", + compressible: true, + extensions: ["wif"] + }, + "application/webpush-options+json": { + source: "iana", + compressible: true + }, + "application/whoispp-query": { + source: "iana" + }, + "application/whoispp-response": { + source: "iana" + }, + "application/widget": { + source: "iana", + extensions: ["wgt"] + }, + "application/winhlp": { + source: "apache", + extensions: ["hlp"] + }, + "application/wita": { + source: "iana" + }, + "application/wordperfect5.1": { + source: "iana" + }, + "application/wsdl+xml": { + source: "iana", + compressible: true, + extensions: ["wsdl"] + }, + "application/wspolicy+xml": { + source: "iana", + compressible: true, + extensions: ["wspolicy"] + }, + "application/x-7z-compressed": { + source: "apache", + compressible: false, + extensions: ["7z"] + }, + "application/x-abiword": { + source: "apache", + extensions: ["abw"] + }, + "application/x-ace-compressed": { + source: "apache", + extensions: ["ace"] + }, + "application/x-amf": { + source: "apache" + }, + "application/x-apple-diskimage": { + source: "apache", + extensions: ["dmg"] + }, + "application/x-arj": { + compressible: false, + extensions: ["arj"] + }, + "application/x-authorware-bin": { + source: "apache", + extensions: ["aab", "x32", "u32", "vox"] + }, + "application/x-authorware-map": { + source: "apache", + extensions: ["aam"] + }, + "application/x-authorware-seg": { + source: "apache", + extensions: ["aas"] + }, + "application/x-bcpio": { + source: "apache", + extensions: ["bcpio"] + }, + "application/x-bdoc": { + compressible: false, + extensions: ["bdoc"] + }, + "application/x-bittorrent": { + source: "apache", + extensions: ["torrent"] + }, + "application/x-blorb": { + source: "apache", + extensions: ["blb", "blorb"] + }, + "application/x-bzip": { + source: "apache", + compressible: false, + extensions: ["bz"] + }, + "application/x-bzip2": { + source: "apache", + compressible: false, + extensions: ["bz2", "boz"] + }, + "application/x-cbr": { + source: "apache", + extensions: ["cbr", "cba", "cbt", "cbz", "cb7"] + }, + "application/x-cdlink": { + source: "apache", + extensions: ["vcd"] + }, + "application/x-cfs-compressed": { + source: "apache", + extensions: ["cfs"] + }, + "application/x-chat": { + source: "apache", + extensions: ["chat"] + }, + "application/x-chess-pgn": { + source: "apache", + extensions: ["pgn"] + }, + "application/x-chrome-extension": { + extensions: ["crx"] + }, + "application/x-cocoa": { + source: "nginx", + extensions: ["cco"] + }, + "application/x-compress": { + source: "apache" + }, + "application/x-conference": { + source: "apache", + extensions: ["nsc"] + }, + "application/x-cpio": { + source: "apache", + extensions: ["cpio"] + }, + "application/x-csh": { + source: "apache", + extensions: ["csh"] + }, + "application/x-deb": { + compressible: false + }, + "application/x-debian-package": { + source: "apache", + extensions: ["deb", "udeb"] + }, + "application/x-dgc-compressed": { + source: "apache", + extensions: ["dgc"] + }, + "application/x-director": { + source: "apache", + extensions: ["dir", "dcr", "dxr", "cst", "cct", "cxt", "w3d", "fgd", "swa"] + }, + "application/x-doom": { + source: "apache", + extensions: ["wad"] + }, + "application/x-dtbncx+xml": { + source: "apache", + compressible: true, + extensions: ["ncx"] + }, + "application/x-dtbook+xml": { + source: "apache", + compressible: true, + extensions: ["dtb"] + }, + "application/x-dtbresource+xml": { + source: "apache", + compressible: true, + extensions: ["res"] + }, + "application/x-dvi": { + source: "apache", + compressible: false, + extensions: ["dvi"] + }, + "application/x-envoy": { + source: "apache", + extensions: ["evy"] + }, + "application/x-eva": { + source: "apache", + extensions: ["eva"] + }, + "application/x-font-bdf": { + source: "apache", + extensions: ["bdf"] + }, + "application/x-font-dos": { + source: "apache" + }, + "application/x-font-framemaker": { + source: "apache" + }, + "application/x-font-ghostscript": { + source: "apache", + extensions: ["gsf"] + }, + "application/x-font-libgrx": { + source: "apache" + }, + "application/x-font-linux-psf": { + source: "apache", + extensions: ["psf"] + }, + "application/x-font-pcf": { + source: "apache", + extensions: ["pcf"] + }, + "application/x-font-snf": { + source: "apache", + extensions: ["snf"] + }, + "application/x-font-speedo": { + source: "apache" + }, + "application/x-font-sunos-news": { + source: "apache" + }, + "application/x-font-type1": { + source: "apache", + extensions: ["pfa", "pfb", "pfm", "afm"] + }, + "application/x-font-vfont": { + source: "apache" + }, + "application/x-freearc": { + source: "apache", + extensions: ["arc"] + }, + "application/x-futuresplash": { + source: "apache", + extensions: ["spl"] + }, + "application/x-gca-compressed": { + source: "apache", + extensions: ["gca"] + }, + "application/x-glulx": { + source: "apache", + extensions: ["ulx"] + }, + "application/x-gnumeric": { + source: "apache", + extensions: ["gnumeric"] + }, + "application/x-gramps-xml": { + source: "apache", + extensions: ["gramps"] + }, + "application/x-gtar": { + source: "apache", + extensions: ["gtar"] + }, + "application/x-gzip": { + source: "apache" + }, + "application/x-hdf": { + source: "apache", + extensions: ["hdf"] + }, + "application/x-httpd-php": { + compressible: true, + extensions: ["php"] + }, + "application/x-install-instructions": { + source: "apache", + extensions: ["install"] + }, + "application/x-iso9660-image": { + source: "apache", + extensions: ["iso"] + }, + "application/x-iwork-keynote-sffkey": { + extensions: ["key"] + }, + "application/x-iwork-numbers-sffnumbers": { + extensions: ["numbers"] + }, + "application/x-iwork-pages-sffpages": { + extensions: ["pages"] + }, + "application/x-java-archive-diff": { + source: "nginx", + extensions: ["jardiff"] + }, + "application/x-java-jnlp-file": { + source: "apache", + compressible: false, + extensions: ["jnlp"] + }, + "application/x-javascript": { + compressible: true + }, + "application/x-keepass2": { + extensions: ["kdbx"] + }, + "application/x-latex": { + source: "apache", + compressible: false, + extensions: ["latex"] + }, + "application/x-lua-bytecode": { + extensions: ["luac"] + }, + "application/x-lzh-compressed": { + source: "apache", + extensions: ["lzh", "lha"] + }, + "application/x-makeself": { + source: "nginx", + extensions: ["run"] + }, + "application/x-mie": { + source: "apache", + extensions: ["mie"] + }, + "application/x-mobipocket-ebook": { + source: "apache", + extensions: ["prc", "mobi"] + }, + "application/x-mpegurl": { + compressible: false + }, + "application/x-ms-application": { + source: "apache", + extensions: ["application"] + }, + "application/x-ms-shortcut": { + source: "apache", + extensions: ["lnk"] + }, + "application/x-ms-wmd": { + source: "apache", + extensions: ["wmd"] + }, + "application/x-ms-wmz": { + source: "apache", + extensions: ["wmz"] + }, + "application/x-ms-xbap": { + source: "apache", + extensions: ["xbap"] + }, + "application/x-msaccess": { + source: "apache", + extensions: ["mdb"] + }, + "application/x-msbinder": { + source: "apache", + extensions: ["obd"] + }, + "application/x-mscardfile": { + source: "apache", + extensions: ["crd"] + }, + "application/x-msclip": { + source: "apache", + extensions: ["clp"] + }, + "application/x-msdos-program": { + extensions: ["exe"] + }, + "application/x-msdownload": { + source: "apache", + extensions: ["exe", "dll", "com", "bat", "msi"] + }, + "application/x-msmediaview": { + source: "apache", + extensions: ["mvb", "m13", "m14"] + }, + "application/x-msmetafile": { + source: "apache", + extensions: ["wmf", "wmz", "emf", "emz"] + }, + "application/x-msmoney": { + source: "apache", + extensions: ["mny"] + }, + "application/x-mspublisher": { + source: "apache", + extensions: ["pub"] + }, + "application/x-msschedule": { + source: "apache", + extensions: ["scd"] + }, + "application/x-msterminal": { + source: "apache", + extensions: ["trm"] + }, + "application/x-mswrite": { + source: "apache", + extensions: ["wri"] + }, + "application/x-netcdf": { + source: "apache", + extensions: ["nc", "cdf"] + }, + "application/x-ns-proxy-autoconfig": { + compressible: true, + extensions: ["pac"] + }, + "application/x-nzb": { + source: "apache", + extensions: ["nzb"] + }, + "application/x-perl": { + source: "nginx", + extensions: ["pl", "pm"] + }, + "application/x-pilot": { + source: "nginx", + extensions: ["prc", "pdb"] + }, + "application/x-pkcs12": { + source: "apache", + compressible: false, + extensions: ["p12", "pfx"] + }, + "application/x-pkcs7-certificates": { + source: "apache", + extensions: ["p7b", "spc"] + }, + "application/x-pkcs7-certreqresp": { + source: "apache", + extensions: ["p7r"] + }, + "application/x-pki-message": { + source: "iana" + }, + "application/x-rar-compressed": { + source: "apache", + compressible: false, + extensions: ["rar"] + }, + "application/x-redhat-package-manager": { + source: "nginx", + extensions: ["rpm"] + }, + "application/x-research-info-systems": { + source: "apache", + extensions: ["ris"] + }, + "application/x-sea": { + source: "nginx", + extensions: ["sea"] + }, + "application/x-sh": { + source: "apache", + compressible: true, + extensions: ["sh"] + }, + "application/x-shar": { + source: "apache", + extensions: ["shar"] + }, + "application/x-shockwave-flash": { + source: "apache", + compressible: false, + extensions: ["swf"] + }, + "application/x-silverlight-app": { + source: "apache", + extensions: ["xap"] + }, + "application/x-sql": { + source: "apache", + extensions: ["sql"] + }, + "application/x-stuffit": { + source: "apache", + compressible: false, + extensions: ["sit"] + }, + "application/x-stuffitx": { + source: "apache", + extensions: ["sitx"] + }, + "application/x-subrip": { + source: "apache", + extensions: ["srt"] + }, + "application/x-sv4cpio": { + source: "apache", + extensions: ["sv4cpio"] + }, + "application/x-sv4crc": { + source: "apache", + extensions: ["sv4crc"] + }, + "application/x-t3vm-image": { + source: "apache", + extensions: ["t3"] + }, + "application/x-tads": { + source: "apache", + extensions: ["gam"] + }, + "application/x-tar": { + source: "apache", + compressible: true, + extensions: ["tar"] + }, + "application/x-tcl": { + source: "apache", + extensions: ["tcl", "tk"] + }, + "application/x-tex": { + source: "apache", + extensions: ["tex"] + }, + "application/x-tex-tfm": { + source: "apache", + extensions: ["tfm"] + }, + "application/x-texinfo": { + source: "apache", + extensions: ["texinfo", "texi"] + }, + "application/x-tgif": { + source: "apache", + extensions: ["obj"] + }, + "application/x-ustar": { + source: "apache", + extensions: ["ustar"] + }, + "application/x-virtualbox-hdd": { + compressible: true, + extensions: ["hdd"] + }, + "application/x-virtualbox-ova": { + compressible: true, + extensions: ["ova"] + }, + "application/x-virtualbox-ovf": { + compressible: true, + extensions: ["ovf"] + }, + "application/x-virtualbox-vbox": { + compressible: true, + extensions: ["vbox"] + }, + "application/x-virtualbox-vbox-extpack": { + compressible: false, + extensions: ["vbox-extpack"] + }, + "application/x-virtualbox-vdi": { + compressible: true, + extensions: ["vdi"] + }, + "application/x-virtualbox-vhd": { + compressible: true, + extensions: ["vhd"] + }, + "application/x-virtualbox-vmdk": { + compressible: true, + extensions: ["vmdk"] + }, + "application/x-wais-source": { + source: "apache", + extensions: ["src"] + }, + "application/x-web-app-manifest+json": { + compressible: true, + extensions: ["webapp"] + }, + "application/x-www-form-urlencoded": { + source: "iana", + compressible: true + }, + "application/x-x509-ca-cert": { + source: "iana", + extensions: ["der", "crt", "pem"] + }, + "application/x-x509-ca-ra-cert": { + source: "iana" + }, + "application/x-x509-next-ca-cert": { + source: "iana" + }, + "application/x-xfig": { + source: "apache", + extensions: ["fig"] + }, + "application/x-xliff+xml": { + source: "apache", + compressible: true, + extensions: ["xlf"] + }, + "application/x-xpinstall": { + source: "apache", + compressible: false, + extensions: ["xpi"] + }, + "application/x-xz": { + source: "apache", + extensions: ["xz"] + }, + "application/x-zmachine": { + source: "apache", + extensions: ["z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8"] + }, + "application/x400-bp": { + source: "iana" + }, + "application/xacml+xml": { + source: "iana", + compressible: true + }, + "application/xaml+xml": { + source: "apache", + compressible: true, + extensions: ["xaml"] + }, + "application/xcap-att+xml": { + source: "iana", + compressible: true, + extensions: ["xav"] + }, + "application/xcap-caps+xml": { + source: "iana", + compressible: true, + extensions: ["xca"] + }, + "application/xcap-diff+xml": { + source: "iana", + compressible: true, + extensions: ["xdf"] + }, + "application/xcap-el+xml": { + source: "iana", + compressible: true, + extensions: ["xel"] + }, + "application/xcap-error+xml": { + source: "iana", + compressible: true + }, + "application/xcap-ns+xml": { + source: "iana", + compressible: true, + extensions: ["xns"] + }, + "application/xcon-conference-info+xml": { + source: "iana", + compressible: true + }, + "application/xcon-conference-info-diff+xml": { + source: "iana", + compressible: true + }, + "application/xenc+xml": { + source: "iana", + compressible: true, + extensions: ["xenc"] + }, + "application/xhtml+xml": { + source: "iana", + compressible: true, + extensions: ["xhtml", "xht"] + }, + "application/xhtml-voice+xml": { + source: "apache", + compressible: true + }, + "application/xliff+xml": { + source: "iana", + compressible: true, + extensions: ["xlf"] + }, + "application/xml": { + source: "iana", + compressible: true, + extensions: ["xml", "xsl", "xsd", "rng"] + }, + "application/xml-dtd": { + source: "iana", + compressible: true, + extensions: ["dtd"] + }, + "application/xml-external-parsed-entity": { + source: "iana" + }, + "application/xml-patch+xml": { + source: "iana", + compressible: true + }, + "application/xmpp+xml": { + source: "iana", + compressible: true + }, + "application/xop+xml": { + source: "iana", + compressible: true, + extensions: ["xop"] + }, + "application/xproc+xml": { + source: "apache", + compressible: true, + extensions: ["xpl"] + }, + "application/xslt+xml": { + source: "iana", + compressible: true, + extensions: ["xsl", "xslt"] + }, + "application/xspf+xml": { + source: "apache", + compressible: true, + extensions: ["xspf"] + }, + "application/xv+xml": { + source: "iana", + compressible: true, + extensions: ["mxml", "xhvml", "xvml", "xvm"] + }, + "application/yang": { + source: "iana", + extensions: ["yang"] + }, + "application/yang-data+json": { + source: "iana", + compressible: true + }, + "application/yang-data+xml": { + source: "iana", + compressible: true + }, + "application/yang-patch+json": { + source: "iana", + compressible: true + }, + "application/yang-patch+xml": { + source: "iana", + compressible: true + }, + "application/yin+xml": { + source: "iana", + compressible: true, + extensions: ["yin"] + }, + "application/zip": { + source: "iana", + compressible: false, + extensions: ["zip"] + }, + "application/zlib": { + source: "iana" + }, + "application/zstd": { + source: "iana" + }, + "audio/1d-interleaved-parityfec": { + source: "iana" + }, + "audio/32kadpcm": { + source: "iana" + }, + "audio/3gpp": { + source: "iana", + compressible: false, + extensions: ["3gpp"] + }, + "audio/3gpp2": { + source: "iana" + }, + "audio/aac": { + source: "iana" + }, + "audio/ac3": { + source: "iana" + }, + "audio/adpcm": { + source: "apache", + extensions: ["adp"] + }, + "audio/amr": { + source: "iana", + extensions: ["amr"] + }, + "audio/amr-wb": { + source: "iana" + }, + "audio/amr-wb+": { + source: "iana" + }, + "audio/aptx": { + source: "iana" + }, + "audio/asc": { + source: "iana" + }, + "audio/atrac-advanced-lossless": { + source: "iana" + }, + "audio/atrac-x": { + source: "iana" + }, + "audio/atrac3": { + source: "iana" + }, + "audio/basic": { + source: "iana", + compressible: false, + extensions: ["au", "snd"] + }, + "audio/bv16": { + source: "iana" + }, + "audio/bv32": { + source: "iana" + }, + "audio/clearmode": { + source: "iana" + }, + "audio/cn": { + source: "iana" + }, + "audio/dat12": { + source: "iana" + }, + "audio/dls": { + source: "iana" + }, + "audio/dsr-es201108": { + source: "iana" + }, + "audio/dsr-es202050": { + source: "iana" + }, + "audio/dsr-es202211": { + source: "iana" + }, + "audio/dsr-es202212": { + source: "iana" + }, + "audio/dv": { + source: "iana" + }, + "audio/dvi4": { + source: "iana" + }, + "audio/eac3": { + source: "iana" + }, + "audio/encaprtp": { + source: "iana" + }, + "audio/evrc": { + source: "iana" + }, + "audio/evrc-qcp": { + source: "iana" + }, + "audio/evrc0": { + source: "iana" + }, + "audio/evrc1": { + source: "iana" + }, + "audio/evrcb": { + source: "iana" + }, + "audio/evrcb0": { + source: "iana" + }, + "audio/evrcb1": { + source: "iana" + }, + "audio/evrcnw": { + source: "iana" + }, + "audio/evrcnw0": { + source: "iana" + }, + "audio/evrcnw1": { + source: "iana" + }, + "audio/evrcwb": { + source: "iana" + }, + "audio/evrcwb0": { + source: "iana" + }, + "audio/evrcwb1": { + source: "iana" + }, + "audio/evs": { + source: "iana" + }, + "audio/flexfec": { + source: "iana" + }, + "audio/fwdred": { + source: "iana" + }, + "audio/g711-0": { + source: "iana" + }, + "audio/g719": { + source: "iana" + }, + "audio/g722": { + source: "iana" + }, + "audio/g7221": { + source: "iana" + }, + "audio/g723": { + source: "iana" + }, + "audio/g726-16": { + source: "iana" + }, + "audio/g726-24": { + source: "iana" + }, + "audio/g726-32": { + source: "iana" + }, + "audio/g726-40": { + source: "iana" + }, + "audio/g728": { + source: "iana" + }, + "audio/g729": { + source: "iana" + }, + "audio/g7291": { + source: "iana" + }, + "audio/g729d": { + source: "iana" + }, + "audio/g729e": { + source: "iana" + }, + "audio/gsm": { + source: "iana" + }, + "audio/gsm-efr": { + source: "iana" + }, + "audio/gsm-hr-08": { + source: "iana" + }, + "audio/ilbc": { + source: "iana" + }, + "audio/ip-mr_v2.5": { + source: "iana" + }, + "audio/isac": { + source: "apache" + }, + "audio/l16": { + source: "iana" + }, + "audio/l20": { + source: "iana" + }, + "audio/l24": { + source: "iana", + compressible: false + }, + "audio/l8": { + source: "iana" + }, + "audio/lpc": { + source: "iana" + }, + "audio/melp": { + source: "iana" + }, + "audio/melp1200": { + source: "iana" + }, + "audio/melp2400": { + source: "iana" + }, + "audio/melp600": { + source: "iana" + }, + "audio/mhas": { + source: "iana" + }, + "audio/midi": { + source: "apache", + extensions: ["mid", "midi", "kar", "rmi"] + }, + "audio/mobile-xmf": { + source: "iana", + extensions: ["mxmf"] + }, + "audio/mp3": { + compressible: false, + extensions: ["mp3"] + }, + "audio/mp4": { + source: "iana", + compressible: false, + extensions: ["m4a", "mp4a"] + }, + "audio/mp4a-latm": { + source: "iana" + }, + "audio/mpa": { + source: "iana" + }, + "audio/mpa-robust": { + source: "iana" + }, + "audio/mpeg": { + source: "iana", + compressible: false, + extensions: ["mpga", "mp2", "mp2a", "mp3", "m2a", "m3a"] + }, + "audio/mpeg4-generic": { + source: "iana" + }, + "audio/musepack": { + source: "apache" + }, + "audio/ogg": { + source: "iana", + compressible: false, + extensions: ["oga", "ogg", "spx", "opus"] + }, + "audio/opus": { + source: "iana" + }, + "audio/parityfec": { + source: "iana" + }, + "audio/pcma": { + source: "iana" + }, + "audio/pcma-wb": { + source: "iana" + }, + "audio/pcmu": { + source: "iana" + }, + "audio/pcmu-wb": { + source: "iana" + }, + "audio/prs.sid": { + source: "iana" + }, + "audio/qcelp": { + source: "iana" + }, + "audio/raptorfec": { + source: "iana" + }, + "audio/red": { + source: "iana" + }, + "audio/rtp-enc-aescm128": { + source: "iana" + }, + "audio/rtp-midi": { + source: "iana" + }, + "audio/rtploopback": { + source: "iana" + }, + "audio/rtx": { + source: "iana" + }, + "audio/s3m": { + source: "apache", + extensions: ["s3m"] + }, + "audio/scip": { + source: "iana" + }, + "audio/silk": { + source: "apache", + extensions: ["sil"] + }, + "audio/smv": { + source: "iana" + }, + "audio/smv-qcp": { + source: "iana" + }, + "audio/smv0": { + source: "iana" + }, + "audio/sofa": { + source: "iana" + }, + "audio/sp-midi": { + source: "iana" + }, + "audio/speex": { + source: "iana" + }, + "audio/t140c": { + source: "iana" + }, + "audio/t38": { + source: "iana" + }, + "audio/telephone-event": { + source: "iana" + }, + "audio/tetra_acelp": { + source: "iana" + }, + "audio/tetra_acelp_bb": { + source: "iana" + }, + "audio/tone": { + source: "iana" + }, + "audio/tsvcis": { + source: "iana" + }, + "audio/uemclip": { + source: "iana" + }, + "audio/ulpfec": { + source: "iana" + }, + "audio/usac": { + source: "iana" + }, + "audio/vdvi": { + source: "iana" + }, + "audio/vmr-wb": { + source: "iana" + }, + "audio/vnd.3gpp.iufp": { + source: "iana" + }, + "audio/vnd.4sb": { + source: "iana" + }, + "audio/vnd.audiokoz": { + source: "iana" + }, + "audio/vnd.celp": { + source: "iana" + }, + "audio/vnd.cisco.nse": { + source: "iana" + }, + "audio/vnd.cmles.radio-events": { + source: "iana" + }, + "audio/vnd.cns.anp1": { + source: "iana" + }, + "audio/vnd.cns.inf1": { + source: "iana" + }, + "audio/vnd.dece.audio": { + source: "iana", + extensions: ["uva", "uvva"] + }, + "audio/vnd.digital-winds": { + source: "iana", + extensions: ["eol"] + }, + "audio/vnd.dlna.adts": { + source: "iana" + }, + "audio/vnd.dolby.heaac.1": { + source: "iana" + }, + "audio/vnd.dolby.heaac.2": { + source: "iana" + }, + "audio/vnd.dolby.mlp": { + source: "iana" + }, + "audio/vnd.dolby.mps": { + source: "iana" + }, + "audio/vnd.dolby.pl2": { + source: "iana" + }, + "audio/vnd.dolby.pl2x": { + source: "iana" + }, + "audio/vnd.dolby.pl2z": { + source: "iana" + }, + "audio/vnd.dolby.pulse.1": { + source: "iana" + }, + "audio/vnd.dra": { + source: "iana", + extensions: ["dra"] + }, + "audio/vnd.dts": { + source: "iana", + extensions: ["dts"] + }, + "audio/vnd.dts.hd": { + source: "iana", + extensions: ["dtshd"] + }, + "audio/vnd.dts.uhd": { + source: "iana" + }, + "audio/vnd.dvb.file": { + source: "iana" + }, + "audio/vnd.everad.plj": { + source: "iana" + }, + "audio/vnd.hns.audio": { + source: "iana" + }, + "audio/vnd.lucent.voice": { + source: "iana", + extensions: ["lvp"] + }, + "audio/vnd.ms-playready.media.pya": { + source: "iana", + extensions: ["pya"] + }, + "audio/vnd.nokia.mobile-xmf": { + source: "iana" + }, + "audio/vnd.nortel.vbk": { + source: "iana" + }, + "audio/vnd.nuera.ecelp4800": { + source: "iana", + extensions: ["ecelp4800"] + }, + "audio/vnd.nuera.ecelp7470": { + source: "iana", + extensions: ["ecelp7470"] + }, + "audio/vnd.nuera.ecelp9600": { + source: "iana", + extensions: ["ecelp9600"] + }, + "audio/vnd.octel.sbc": { + source: "iana" + }, + "audio/vnd.presonus.multitrack": { + source: "iana" + }, + "audio/vnd.qcelp": { + source: "iana" + }, + "audio/vnd.rhetorex.32kadpcm": { + source: "iana" + }, + "audio/vnd.rip": { + source: "iana", + extensions: ["rip"] + }, + "audio/vnd.rn-realaudio": { + compressible: false + }, + "audio/vnd.sealedmedia.softseal.mpeg": { + source: "iana" + }, + "audio/vnd.vmx.cvsd": { + source: "iana" + }, + "audio/vnd.wave": { + compressible: false + }, + "audio/vorbis": { + source: "iana", + compressible: false + }, + "audio/vorbis-config": { + source: "iana" + }, + "audio/wav": { + compressible: false, + extensions: ["wav"] + }, + "audio/wave": { + compressible: false, + extensions: ["wav"] + }, + "audio/webm": { + source: "apache", + compressible: false, + extensions: ["weba"] + }, + "audio/x-aac": { + source: "apache", + compressible: false, + extensions: ["aac"] + }, + "audio/x-aiff": { + source: "apache", + extensions: ["aif", "aiff", "aifc"] + }, + "audio/x-caf": { + source: "apache", + compressible: false, + extensions: ["caf"] + }, + "audio/x-flac": { + source: "apache", + extensions: ["flac"] + }, + "audio/x-m4a": { + source: "nginx", + extensions: ["m4a"] + }, + "audio/x-matroska": { + source: "apache", + extensions: ["mka"] + }, + "audio/x-mpegurl": { + source: "apache", + extensions: ["m3u"] + }, + "audio/x-ms-wax": { + source: "apache", + extensions: ["wax"] + }, + "audio/x-ms-wma": { + source: "apache", + extensions: ["wma"] + }, + "audio/x-pn-realaudio": { + source: "apache", + extensions: ["ram", "ra"] + }, + "audio/x-pn-realaudio-plugin": { + source: "apache", + extensions: ["rmp"] + }, + "audio/x-realaudio": { + source: "nginx", + extensions: ["ra"] + }, + "audio/x-tta": { + source: "apache" + }, + "audio/x-wav": { + source: "apache", + extensions: ["wav"] + }, + "audio/xm": { + source: "apache", + extensions: ["xm"] + }, + "chemical/x-cdx": { + source: "apache", + extensions: ["cdx"] + }, + "chemical/x-cif": { + source: "apache", + extensions: ["cif"] + }, + "chemical/x-cmdf": { + source: "apache", + extensions: ["cmdf"] + }, + "chemical/x-cml": { + source: "apache", + extensions: ["cml"] + }, + "chemical/x-csml": { + source: "apache", + extensions: ["csml"] + }, + "chemical/x-pdb": { + source: "apache" + }, + "chemical/x-xyz": { + source: "apache", + extensions: ["xyz"] + }, + "font/collection": { + source: "iana", + extensions: ["ttc"] + }, + "font/otf": { + source: "iana", + compressible: true, + extensions: ["otf"] + }, + "font/sfnt": { + source: "iana" + }, + "font/ttf": { + source: "iana", + compressible: true, + extensions: ["ttf"] + }, + "font/woff": { + source: "iana", + extensions: ["woff"] + }, + "font/woff2": { + source: "iana", + extensions: ["woff2"] + }, + "image/aces": { + source: "iana", + extensions: ["exr"] + }, + "image/apng": { + compressible: false, + extensions: ["apng"] + }, + "image/avci": { + source: "iana", + extensions: ["avci"] + }, + "image/avcs": { + source: "iana", + extensions: ["avcs"] + }, + "image/avif": { + source: "iana", + compressible: false, + extensions: ["avif"] + }, + "image/bmp": { + source: "iana", + compressible: true, + extensions: ["bmp"] + }, + "image/cgm": { + source: "iana", + extensions: ["cgm"] + }, + "image/dicom-rle": { + source: "iana", + extensions: ["drle"] + }, + "image/emf": { + source: "iana", + extensions: ["emf"] + }, + "image/fits": { + source: "iana", + extensions: ["fits"] + }, + "image/g3fax": { + source: "iana", + extensions: ["g3"] + }, + "image/gif": { + source: "iana", + compressible: false, + extensions: ["gif"] + }, + "image/heic": { + source: "iana", + extensions: ["heic"] + }, + "image/heic-sequence": { + source: "iana", + extensions: ["heics"] + }, + "image/heif": { + source: "iana", + extensions: ["heif"] + }, + "image/heif-sequence": { + source: "iana", + extensions: ["heifs"] + }, + "image/hej2k": { + source: "iana", + extensions: ["hej2"] + }, + "image/hsj2": { + source: "iana", + extensions: ["hsj2"] + }, + "image/ief": { + source: "iana", + extensions: ["ief"] + }, + "image/jls": { + source: "iana", + extensions: ["jls"] + }, + "image/jp2": { + source: "iana", + compressible: false, + extensions: ["jp2", "jpg2"] + }, + "image/jpeg": { + source: "iana", + compressible: false, + extensions: ["jpeg", "jpg", "jpe"] + }, + "image/jph": { + source: "iana", + extensions: ["jph"] + }, + "image/jphc": { + source: "iana", + extensions: ["jhc"] + }, + "image/jpm": { + source: "iana", + compressible: false, + extensions: ["jpm"] + }, + "image/jpx": { + source: "iana", + compressible: false, + extensions: ["jpx", "jpf"] + }, + "image/jxr": { + source: "iana", + extensions: ["jxr"] + }, + "image/jxra": { + source: "iana", + extensions: ["jxra"] + }, + "image/jxrs": { + source: "iana", + extensions: ["jxrs"] + }, + "image/jxs": { + source: "iana", + extensions: ["jxs"] + }, + "image/jxsc": { + source: "iana", + extensions: ["jxsc"] + }, + "image/jxsi": { + source: "iana", + extensions: ["jxsi"] + }, + "image/jxss": { + source: "iana", + extensions: ["jxss"] + }, + "image/ktx": { + source: "iana", + extensions: ["ktx"] + }, + "image/ktx2": { + source: "iana", + extensions: ["ktx2"] + }, + "image/naplps": { + source: "iana" + }, + "image/pjpeg": { + compressible: false + }, + "image/png": { + source: "iana", + compressible: false, + extensions: ["png"] + }, + "image/prs.btif": { + source: "iana", + extensions: ["btif"] + }, + "image/prs.pti": { + source: "iana", + extensions: ["pti"] + }, + "image/pwg-raster": { + source: "iana" + }, + "image/sgi": { + source: "apache", + extensions: ["sgi"] + }, + "image/svg+xml": { + source: "iana", + compressible: true, + extensions: ["svg", "svgz"] + }, + "image/t38": { + source: "iana", + extensions: ["t38"] + }, + "image/tiff": { + source: "iana", + compressible: false, + extensions: ["tif", "tiff"] + }, + "image/tiff-fx": { + source: "iana", + extensions: ["tfx"] + }, + "image/vnd.adobe.photoshop": { + source: "iana", + compressible: true, + extensions: ["psd"] + }, + "image/vnd.airzip.accelerator.azv": { + source: "iana", + extensions: ["azv"] + }, + "image/vnd.cns.inf2": { + source: "iana" + }, + "image/vnd.dece.graphic": { + source: "iana", + extensions: ["uvi", "uvvi", "uvg", "uvvg"] + }, + "image/vnd.djvu": { + source: "iana", + extensions: ["djvu", "djv"] + }, + "image/vnd.dvb.subtitle": { + source: "iana", + extensions: ["sub"] + }, + "image/vnd.dwg": { + source: "iana", + extensions: ["dwg"] + }, + "image/vnd.dxf": { + source: "iana", + extensions: ["dxf"] + }, + "image/vnd.fastbidsheet": { + source: "iana", + extensions: ["fbs"] + }, + "image/vnd.fpx": { + source: "iana", + extensions: ["fpx"] + }, + "image/vnd.fst": { + source: "iana", + extensions: ["fst"] + }, + "image/vnd.fujixerox.edmics-mmr": { + source: "iana", + extensions: ["mmr"] + }, + "image/vnd.fujixerox.edmics-rlc": { + source: "iana", + extensions: ["rlc"] + }, + "image/vnd.globalgraphics.pgb": { + source: "iana" + }, + "image/vnd.microsoft.icon": { + source: "iana", + compressible: true, + extensions: ["ico"] + }, + "image/vnd.mix": { + source: "iana" + }, + "image/vnd.mozilla.apng": { + source: "iana" + }, + "image/vnd.ms-dds": { + compressible: true, + extensions: ["dds"] + }, + "image/vnd.ms-modi": { + source: "iana", + extensions: ["mdi"] + }, + "image/vnd.ms-photo": { + source: "apache", + extensions: ["wdp"] + }, + "image/vnd.net-fpx": { + source: "iana", + extensions: ["npx"] + }, + "image/vnd.pco.b16": { + source: "iana", + extensions: ["b16"] + }, + "image/vnd.radiance": { + source: "iana" + }, + "image/vnd.sealed.png": { + source: "iana" + }, + "image/vnd.sealedmedia.softseal.gif": { + source: "iana" + }, + "image/vnd.sealedmedia.softseal.jpg": { + source: "iana" + }, + "image/vnd.svf": { + source: "iana" + }, + "image/vnd.tencent.tap": { + source: "iana", + extensions: ["tap"] + }, + "image/vnd.valve.source.texture": { + source: "iana", + extensions: ["vtf"] + }, + "image/vnd.wap.wbmp": { + source: "iana", + extensions: ["wbmp"] + }, + "image/vnd.xiff": { + source: "iana", + extensions: ["xif"] + }, + "image/vnd.zbrush.pcx": { + source: "iana", + extensions: ["pcx"] + }, + "image/webp": { + source: "apache", + extensions: ["webp"] + }, + "image/wmf": { + source: "iana", + extensions: ["wmf"] + }, + "image/x-3ds": { + source: "apache", + extensions: ["3ds"] + }, + "image/x-cmu-raster": { + source: "apache", + extensions: ["ras"] + }, + "image/x-cmx": { + source: "apache", + extensions: ["cmx"] + }, + "image/x-freehand": { + source: "apache", + extensions: ["fh", "fhc", "fh4", "fh5", "fh7"] + }, + "image/x-icon": { + source: "apache", + compressible: true, + extensions: ["ico"] + }, + "image/x-jng": { + source: "nginx", + extensions: ["jng"] + }, + "image/x-mrsid-image": { + source: "apache", + extensions: ["sid"] + }, + "image/x-ms-bmp": { + source: "nginx", + compressible: true, + extensions: ["bmp"] + }, + "image/x-pcx": { + source: "apache", + extensions: ["pcx"] + }, + "image/x-pict": { + source: "apache", + extensions: ["pic", "pct"] + }, + "image/x-portable-anymap": { + source: "apache", + extensions: ["pnm"] + }, + "image/x-portable-bitmap": { + source: "apache", + extensions: ["pbm"] + }, + "image/x-portable-graymap": { + source: "apache", + extensions: ["pgm"] + }, + "image/x-portable-pixmap": { + source: "apache", + extensions: ["ppm"] + }, + "image/x-rgb": { + source: "apache", + extensions: ["rgb"] + }, + "image/x-tga": { + source: "apache", + extensions: ["tga"] + }, + "image/x-xbitmap": { + source: "apache", + extensions: ["xbm"] + }, + "image/x-xcf": { + compressible: false + }, + "image/x-xpixmap": { + source: "apache", + extensions: ["xpm"] + }, + "image/x-xwindowdump": { + source: "apache", + extensions: ["xwd"] + }, + "message/cpim": { + source: "iana" + }, + "message/delivery-status": { + source: "iana" + }, + "message/disposition-notification": { + source: "iana", + extensions: [ + "disposition-notification" + ] + }, + "message/external-body": { + source: "iana" + }, + "message/feedback-report": { + source: "iana" + }, + "message/global": { + source: "iana", + extensions: ["u8msg"] + }, + "message/global-delivery-status": { + source: "iana", + extensions: ["u8dsn"] + }, + "message/global-disposition-notification": { + source: "iana", + extensions: ["u8mdn"] + }, + "message/global-headers": { + source: "iana", + extensions: ["u8hdr"] + }, + "message/http": { + source: "iana", + compressible: false + }, + "message/imdn+xml": { + source: "iana", + compressible: true + }, + "message/news": { + source: "iana" + }, + "message/partial": { + source: "iana", + compressible: false + }, + "message/rfc822": { + source: "iana", + compressible: true, + extensions: ["eml", "mime"] + }, + "message/s-http": { + source: "iana" + }, + "message/sip": { + source: "iana" + }, + "message/sipfrag": { + source: "iana" + }, + "message/tracking-status": { + source: "iana" + }, + "message/vnd.si.simp": { + source: "iana" + }, + "message/vnd.wfa.wsc": { + source: "iana", + extensions: ["wsc"] + }, + "model/3mf": { + source: "iana", + extensions: ["3mf"] + }, + "model/e57": { + source: "iana" + }, + "model/gltf+json": { + source: "iana", + compressible: true, + extensions: ["gltf"] + }, + "model/gltf-binary": { + source: "iana", + compressible: true, + extensions: ["glb"] + }, + "model/iges": { + source: "iana", + compressible: false, + extensions: ["igs", "iges"] + }, + "model/mesh": { + source: "iana", + compressible: false, + extensions: ["msh", "mesh", "silo"] + }, + "model/mtl": { + source: "iana", + extensions: ["mtl"] + }, + "model/obj": { + source: "iana", + extensions: ["obj"] + }, + "model/step": { + source: "iana" + }, + "model/step+xml": { + source: "iana", + compressible: true, + extensions: ["stpx"] + }, + "model/step+zip": { + source: "iana", + compressible: false, + extensions: ["stpz"] + }, + "model/step-xml+zip": { + source: "iana", + compressible: false, + extensions: ["stpxz"] + }, + "model/stl": { + source: "iana", + extensions: ["stl"] + }, + "model/vnd.collada+xml": { + source: "iana", + compressible: true, + extensions: ["dae"] + }, + "model/vnd.dwf": { + source: "iana", + extensions: ["dwf"] + }, + "model/vnd.flatland.3dml": { + source: "iana" + }, + "model/vnd.gdl": { + source: "iana", + extensions: ["gdl"] + }, + "model/vnd.gs-gdl": { + source: "apache" + }, + "model/vnd.gs.gdl": { + source: "iana" + }, + "model/vnd.gtw": { + source: "iana", + extensions: ["gtw"] + }, + "model/vnd.moml+xml": { + source: "iana", + compressible: true + }, + "model/vnd.mts": { + source: "iana", + extensions: ["mts"] + }, + "model/vnd.opengex": { + source: "iana", + extensions: ["ogex"] + }, + "model/vnd.parasolid.transmit.binary": { + source: "iana", + extensions: ["x_b"] + }, + "model/vnd.parasolid.transmit.text": { + source: "iana", + extensions: ["x_t"] + }, + "model/vnd.pytha.pyox": { + source: "iana" + }, + "model/vnd.rosette.annotated-data-model": { + source: "iana" + }, + "model/vnd.sap.vds": { + source: "iana", + extensions: ["vds"] + }, + "model/vnd.usdz+zip": { + source: "iana", + compressible: false, + extensions: ["usdz"] + }, + "model/vnd.valve.source.compiled-map": { + source: "iana", + extensions: ["bsp"] + }, + "model/vnd.vtu": { + source: "iana", + extensions: ["vtu"] + }, + "model/vrml": { + source: "iana", + compressible: false, + extensions: ["wrl", "vrml"] + }, + "model/x3d+binary": { + source: "apache", + compressible: false, + extensions: ["x3db", "x3dbz"] + }, + "model/x3d+fastinfoset": { + source: "iana", + extensions: ["x3db"] + }, + "model/x3d+vrml": { + source: "apache", + compressible: false, + extensions: ["x3dv", "x3dvz"] + }, + "model/x3d+xml": { + source: "iana", + compressible: true, + extensions: ["x3d", "x3dz"] + }, + "model/x3d-vrml": { + source: "iana", + extensions: ["x3dv"] + }, + "multipart/alternative": { + source: "iana", + compressible: false + }, + "multipart/appledouble": { + source: "iana" + }, + "multipart/byteranges": { + source: "iana" + }, + "multipart/digest": { + source: "iana" + }, + "multipart/encrypted": { + source: "iana", + compressible: false + }, + "multipart/form-data": { + source: "iana", + compressible: false + }, + "multipart/header-set": { + source: "iana" + }, + "multipart/mixed": { + source: "iana" + }, + "multipart/multilingual": { + source: "iana" + }, + "multipart/parallel": { + source: "iana" + }, + "multipart/related": { + source: "iana", + compressible: false + }, + "multipart/report": { + source: "iana" + }, + "multipart/signed": { + source: "iana", + compressible: false + }, + "multipart/vnd.bint.med-plus": { + source: "iana" + }, + "multipart/voice-message": { + source: "iana" + }, + "multipart/x-mixed-replace": { + source: "iana" + }, + "text/1d-interleaved-parityfec": { + source: "iana" + }, + "text/cache-manifest": { + source: "iana", + compressible: true, + extensions: ["appcache", "manifest"] + }, + "text/calendar": { + source: "iana", + extensions: ["ics", "ifb"] + }, + "text/calender": { + compressible: true + }, + "text/cmd": { + compressible: true + }, + "text/coffeescript": { + extensions: ["coffee", "litcoffee"] + }, + "text/cql": { + source: "iana" + }, + "text/cql-expression": { + source: "iana" + }, + "text/cql-identifier": { + source: "iana" + }, + "text/css": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["css"] + }, + "text/csv": { + source: "iana", + compressible: true, + extensions: ["csv"] + }, + "text/csv-schema": { + source: "iana" + }, + "text/directory": { + source: "iana" + }, + "text/dns": { + source: "iana" + }, + "text/ecmascript": { + source: "iana" + }, + "text/encaprtp": { + source: "iana" + }, + "text/enriched": { + source: "iana" + }, + "text/fhirpath": { + source: "iana" + }, + "text/flexfec": { + source: "iana" + }, + "text/fwdred": { + source: "iana" + }, + "text/gff3": { + source: "iana" + }, + "text/grammar-ref-list": { + source: "iana" + }, + "text/html": { + source: "iana", + compressible: true, + extensions: ["html", "htm", "shtml"] + }, + "text/jade": { + extensions: ["jade"] + }, + "text/javascript": { + source: "iana", + compressible: true + }, + "text/jcr-cnd": { + source: "iana" + }, + "text/jsx": { + compressible: true, + extensions: ["jsx"] + }, + "text/less": { + compressible: true, + extensions: ["less"] + }, + "text/markdown": { + source: "iana", + compressible: true, + extensions: ["markdown", "md"] + }, + "text/mathml": { + source: "nginx", + extensions: ["mml"] + }, + "text/mdx": { + compressible: true, + extensions: ["mdx"] + }, + "text/mizar": { + source: "iana" + }, + "text/n3": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["n3"] + }, + "text/parameters": { + source: "iana", + charset: "UTF-8" + }, + "text/parityfec": { + source: "iana" + }, + "text/plain": { + source: "iana", + compressible: true, + extensions: ["txt", "text", "conf", "def", "list", "log", "in", "ini"] + }, + "text/provenance-notation": { + source: "iana", + charset: "UTF-8" + }, + "text/prs.fallenstein.rst": { + source: "iana" + }, + "text/prs.lines.tag": { + source: "iana", + extensions: ["dsc"] + }, + "text/prs.prop.logic": { + source: "iana" + }, + "text/raptorfec": { + source: "iana" + }, + "text/red": { + source: "iana" + }, + "text/rfc822-headers": { + source: "iana" + }, + "text/richtext": { + source: "iana", + compressible: true, + extensions: ["rtx"] + }, + "text/rtf": { + source: "iana", + compressible: true, + extensions: ["rtf"] + }, + "text/rtp-enc-aescm128": { + source: "iana" + }, + "text/rtploopback": { + source: "iana" + }, + "text/rtx": { + source: "iana" + }, + "text/sgml": { + source: "iana", + extensions: ["sgml", "sgm"] + }, + "text/shaclc": { + source: "iana" + }, + "text/shex": { + source: "iana", + extensions: ["shex"] + }, + "text/slim": { + extensions: ["slim", "slm"] + }, + "text/spdx": { + source: "iana", + extensions: ["spdx"] + }, + "text/strings": { + source: "iana" + }, + "text/stylus": { + extensions: ["stylus", "styl"] + }, + "text/t140": { + source: "iana" + }, + "text/tab-separated-values": { + source: "iana", + compressible: true, + extensions: ["tsv"] + }, + "text/troff": { + source: "iana", + extensions: ["t", "tr", "roff", "man", "me", "ms"] + }, + "text/turtle": { + source: "iana", + charset: "UTF-8", + extensions: ["ttl"] + }, + "text/ulpfec": { + source: "iana" + }, + "text/uri-list": { + source: "iana", + compressible: true, + extensions: ["uri", "uris", "urls"] + }, + "text/vcard": { + source: "iana", + compressible: true, + extensions: ["vcard"] + }, + "text/vnd.a": { + source: "iana" + }, + "text/vnd.abc": { + source: "iana" + }, + "text/vnd.ascii-art": { + source: "iana" + }, + "text/vnd.curl": { + source: "iana", + extensions: ["curl"] + }, + "text/vnd.curl.dcurl": { + source: "apache", + extensions: ["dcurl"] + }, + "text/vnd.curl.mcurl": { + source: "apache", + extensions: ["mcurl"] + }, + "text/vnd.curl.scurl": { + source: "apache", + extensions: ["scurl"] + }, + "text/vnd.debian.copyright": { + source: "iana", + charset: "UTF-8" + }, + "text/vnd.dmclientscript": { + source: "iana" + }, + "text/vnd.dvb.subtitle": { + source: "iana", + extensions: ["sub"] + }, + "text/vnd.esmertec.theme-descriptor": { + source: "iana", + charset: "UTF-8" + }, + "text/vnd.familysearch.gedcom": { + source: "iana", + extensions: ["ged"] + }, + "text/vnd.ficlab.flt": { + source: "iana" + }, + "text/vnd.fly": { + source: "iana", + extensions: ["fly"] + }, + "text/vnd.fmi.flexstor": { + source: "iana", + extensions: ["flx"] + }, + "text/vnd.gml": { + source: "iana" + }, + "text/vnd.graphviz": { + source: "iana", + extensions: ["gv"] + }, + "text/vnd.hans": { + source: "iana" + }, + "text/vnd.hgl": { + source: "iana" + }, + "text/vnd.in3d.3dml": { + source: "iana", + extensions: ["3dml"] + }, + "text/vnd.in3d.spot": { + source: "iana", + extensions: ["spot"] + }, + "text/vnd.iptc.newsml": { + source: "iana" + }, + "text/vnd.iptc.nitf": { + source: "iana" + }, + "text/vnd.latex-z": { + source: "iana" + }, + "text/vnd.motorola.reflex": { + source: "iana" + }, + "text/vnd.ms-mediapackage": { + source: "iana" + }, + "text/vnd.net2phone.commcenter.command": { + source: "iana" + }, + "text/vnd.radisys.msml-basic-layout": { + source: "iana" + }, + "text/vnd.senx.warpscript": { + source: "iana" + }, + "text/vnd.si.uricatalogue": { + source: "iana" + }, + "text/vnd.sosi": { + source: "iana" + }, + "text/vnd.sun.j2me.app-descriptor": { + source: "iana", + charset: "UTF-8", + extensions: ["jad"] + }, + "text/vnd.trolltech.linguist": { + source: "iana", + charset: "UTF-8" + }, + "text/vnd.wap.si": { + source: "iana" + }, + "text/vnd.wap.sl": { + source: "iana" + }, + "text/vnd.wap.wml": { + source: "iana", + extensions: ["wml"] + }, + "text/vnd.wap.wmlscript": { + source: "iana", + extensions: ["wmls"] + }, + "text/vtt": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["vtt"] + }, + "text/x-asm": { + source: "apache", + extensions: ["s", "asm"] + }, + "text/x-c": { + source: "apache", + extensions: ["c", "cc", "cxx", "cpp", "h", "hh", "dic"] + }, + "text/x-component": { + source: "nginx", + extensions: ["htc"] + }, + "text/x-fortran": { + source: "apache", + extensions: ["f", "for", "f77", "f90"] + }, + "text/x-gwt-rpc": { + compressible: true + }, + "text/x-handlebars-template": { + extensions: ["hbs"] + }, + "text/x-java-source": { + source: "apache", + extensions: ["java"] + }, + "text/x-jquery-tmpl": { + compressible: true + }, + "text/x-lua": { + extensions: ["lua"] + }, + "text/x-markdown": { + compressible: true, + extensions: ["mkd"] + }, + "text/x-nfo": { + source: "apache", + extensions: ["nfo"] + }, + "text/x-opml": { + source: "apache", + extensions: ["opml"] + }, + "text/x-org": { + compressible: true, + extensions: ["org"] + }, + "text/x-pascal": { + source: "apache", + extensions: ["p", "pas"] + }, + "text/x-processing": { + compressible: true, + extensions: ["pde"] + }, + "text/x-sass": { + extensions: ["sass"] + }, + "text/x-scss": { + extensions: ["scss"] + }, + "text/x-setext": { + source: "apache", + extensions: ["etx"] + }, + "text/x-sfv": { + source: "apache", + extensions: ["sfv"] + }, + "text/x-suse-ymp": { + compressible: true, + extensions: ["ymp"] + }, + "text/x-uuencode": { + source: "apache", + extensions: ["uu"] + }, + "text/x-vcalendar": { + source: "apache", + extensions: ["vcs"] + }, + "text/x-vcard": { + source: "apache", + extensions: ["vcf"] + }, + "text/xml": { + source: "iana", + compressible: true, + extensions: ["xml"] + }, + "text/xml-external-parsed-entity": { + source: "iana" + }, + "text/yaml": { + compressible: true, + extensions: ["yaml", "yml"] + }, + "video/1d-interleaved-parityfec": { + source: "iana" + }, + "video/3gpp": { + source: "iana", + extensions: ["3gp", "3gpp"] + }, + "video/3gpp-tt": { + source: "iana" + }, + "video/3gpp2": { + source: "iana", + extensions: ["3g2"] + }, + "video/av1": { + source: "iana" + }, + "video/bmpeg": { + source: "iana" + }, + "video/bt656": { + source: "iana" + }, + "video/celb": { + source: "iana" + }, + "video/dv": { + source: "iana" + }, + "video/encaprtp": { + source: "iana" + }, + "video/ffv1": { + source: "iana" + }, + "video/flexfec": { + source: "iana" + }, + "video/h261": { + source: "iana", + extensions: ["h261"] + }, + "video/h263": { + source: "iana", + extensions: ["h263"] + }, + "video/h263-1998": { + source: "iana" + }, + "video/h263-2000": { + source: "iana" + }, + "video/h264": { + source: "iana", + extensions: ["h264"] + }, + "video/h264-rcdo": { + source: "iana" + }, + "video/h264-svc": { + source: "iana" + }, + "video/h265": { + source: "iana" + }, + "video/iso.segment": { + source: "iana", + extensions: ["m4s"] + }, + "video/jpeg": { + source: "iana", + extensions: ["jpgv"] + }, + "video/jpeg2000": { + source: "iana" + }, + "video/jpm": { + source: "apache", + extensions: ["jpm", "jpgm"] + }, + "video/jxsv": { + source: "iana" + }, + "video/mj2": { + source: "iana", + extensions: ["mj2", "mjp2"] + }, + "video/mp1s": { + source: "iana" + }, + "video/mp2p": { + source: "iana" + }, + "video/mp2t": { + source: "iana", + extensions: ["ts"] + }, + "video/mp4": { + source: "iana", + compressible: false, + extensions: ["mp4", "mp4v", "mpg4"] + }, + "video/mp4v-es": { + source: "iana" + }, + "video/mpeg": { + source: "iana", + compressible: false, + extensions: ["mpeg", "mpg", "mpe", "m1v", "m2v"] + }, + "video/mpeg4-generic": { + source: "iana" + }, + "video/mpv": { + source: "iana" + }, + "video/nv": { + source: "iana" + }, + "video/ogg": { + source: "iana", + compressible: false, + extensions: ["ogv"] + }, + "video/parityfec": { + source: "iana" + }, + "video/pointer": { + source: "iana" + }, + "video/quicktime": { + source: "iana", + compressible: false, + extensions: ["qt", "mov"] + }, + "video/raptorfec": { + source: "iana" + }, + "video/raw": { + source: "iana" + }, + "video/rtp-enc-aescm128": { + source: "iana" + }, + "video/rtploopback": { + source: "iana" + }, + "video/rtx": { + source: "iana" + }, + "video/scip": { + source: "iana" + }, + "video/smpte291": { + source: "iana" + }, + "video/smpte292m": { + source: "iana" + }, + "video/ulpfec": { + source: "iana" + }, + "video/vc1": { + source: "iana" + }, + "video/vc2": { + source: "iana" + }, + "video/vnd.cctv": { + source: "iana" + }, + "video/vnd.dece.hd": { + source: "iana", + extensions: ["uvh", "uvvh"] + }, + "video/vnd.dece.mobile": { + source: "iana", + extensions: ["uvm", "uvvm"] + }, + "video/vnd.dece.mp4": { + source: "iana" + }, + "video/vnd.dece.pd": { + source: "iana", + extensions: ["uvp", "uvvp"] + }, + "video/vnd.dece.sd": { + source: "iana", + extensions: ["uvs", "uvvs"] + }, + "video/vnd.dece.video": { + source: "iana", + extensions: ["uvv", "uvvv"] + }, + "video/vnd.directv.mpeg": { + source: "iana" + }, + "video/vnd.directv.mpeg-tts": { + source: "iana" + }, + "video/vnd.dlna.mpeg-tts": { + source: "iana" + }, + "video/vnd.dvb.file": { + source: "iana", + extensions: ["dvb"] + }, + "video/vnd.fvt": { + source: "iana", + extensions: ["fvt"] + }, + "video/vnd.hns.video": { + source: "iana" + }, + "video/vnd.iptvforum.1dparityfec-1010": { + source: "iana" + }, + "video/vnd.iptvforum.1dparityfec-2005": { + source: "iana" + }, + "video/vnd.iptvforum.2dparityfec-1010": { + source: "iana" + }, + "video/vnd.iptvforum.2dparityfec-2005": { + source: "iana" + }, + "video/vnd.iptvforum.ttsavc": { + source: "iana" + }, + "video/vnd.iptvforum.ttsmpeg2": { + source: "iana" + }, + "video/vnd.motorola.video": { + source: "iana" + }, + "video/vnd.motorola.videop": { + source: "iana" + }, + "video/vnd.mpegurl": { + source: "iana", + extensions: ["mxu", "m4u"] + }, + "video/vnd.ms-playready.media.pyv": { + source: "iana", + extensions: ["pyv"] + }, + "video/vnd.nokia.interleaved-multimedia": { + source: "iana" + }, + "video/vnd.nokia.mp4vr": { + source: "iana" + }, + "video/vnd.nokia.videovoip": { + source: "iana" + }, + "video/vnd.objectvideo": { + source: "iana" + }, + "video/vnd.radgamettools.bink": { + source: "iana" + }, + "video/vnd.radgamettools.smacker": { + source: "iana" + }, + "video/vnd.sealed.mpeg1": { + source: "iana" + }, + "video/vnd.sealed.mpeg4": { + source: "iana" + }, + "video/vnd.sealed.swf": { + source: "iana" + }, + "video/vnd.sealedmedia.softseal.mov": { + source: "iana" + }, + "video/vnd.uvvu.mp4": { + source: "iana", + extensions: ["uvu", "uvvu"] + }, + "video/vnd.vivo": { + source: "iana", + extensions: ["viv"] + }, + "video/vnd.youtube.yt": { + source: "iana" + }, + "video/vp8": { + source: "iana" + }, + "video/vp9": { + source: "iana" + }, + "video/webm": { + source: "apache", + compressible: false, + extensions: ["webm"] + }, + "video/x-f4v": { + source: "apache", + extensions: ["f4v"] + }, + "video/x-fli": { + source: "apache", + extensions: ["fli"] + }, + "video/x-flv": { + source: "apache", + compressible: false, + extensions: ["flv"] + }, + "video/x-m4v": { + source: "apache", + extensions: ["m4v"] + }, + "video/x-matroska": { + source: "apache", + compressible: false, + extensions: ["mkv", "mk3d", "mks"] + }, + "video/x-mng": { + source: "apache", + extensions: ["mng"] + }, + "video/x-ms-asf": { + source: "apache", + extensions: ["asf", "asx"] + }, + "video/x-ms-vob": { + source: "apache", + extensions: ["vob"] + }, + "video/x-ms-wm": { + source: "apache", + extensions: ["wm"] + }, + "video/x-ms-wmv": { + source: "apache", + compressible: false, + extensions: ["wmv"] + }, + "video/x-ms-wmx": { + source: "apache", + extensions: ["wmx"] + }, + "video/x-ms-wvx": { + source: "apache", + extensions: ["wvx"] + }, + "video/x-msvideo": { + source: "apache", + extensions: ["avi"] + }, + "video/x-sgi-movie": { + source: "apache", + extensions: ["movie"] + }, + "video/x-smv": { + source: "apache", + extensions: ["smv"] + }, + "x-conference/x-cooltalk": { + source: "apache", + extensions: ["ice"] + }, + "x-shader/x-fragment": { + compressible: true + }, + "x-shader/x-vertex": { + compressible: true + } + }; + } +}); + +// node_modules/.pnpm/mime-db@1.52.0/node_modules/mime-db/index.js +var require_mime_db = __commonJS({ + "node_modules/.pnpm/mime-db@1.52.0/node_modules/mime-db/index.js"(exports2, module2) { + module2.exports = require_db(); + } +}); + +// node_modules/.pnpm/mime-types@2.1.35/node_modules/mime-types/index.js +var require_mime_types = __commonJS({ + "node_modules/.pnpm/mime-types@2.1.35/node_modules/mime-types/index.js"(exports2) { + "use strict"; + var db = require_mime_db(); + var extname = require("path").extname; + var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/; + var TEXT_TYPE_REGEXP = /^text\//i; + exports2.charset = charset; + exports2.charsets = { lookup: charset }; + exports2.contentType = contentType; + exports2.extension = extension; + exports2.extensions = /* @__PURE__ */ Object.create(null); + exports2.lookup = lookup; + exports2.types = /* @__PURE__ */ Object.create(null); + populateMaps(exports2.extensions, exports2.types); + function charset(type) { + if (!type || typeof type !== "string") { + return false; + } + var match = EXTRACT_TYPE_REGEXP.exec(type); + var mime = match && db[match[1].toLowerCase()]; + if (mime && mime.charset) { + return mime.charset; + } + if (match && TEXT_TYPE_REGEXP.test(match[1])) { + return "UTF-8"; + } + return false; + } + function contentType(str) { + if (!str || typeof str !== "string") { + return false; + } + var mime = str.indexOf("/") === -1 ? exports2.lookup(str) : str; + if (!mime) { + return false; + } + if (mime.indexOf("charset") === -1) { + var charset2 = exports2.charset(mime); + if (charset2) + mime += "; charset=" + charset2.toLowerCase(); + } + return mime; + } + function extension(type) { + if (!type || typeof type !== "string") { + return false; + } + var match = EXTRACT_TYPE_REGEXP.exec(type); + var exts = match && exports2.extensions[match[1].toLowerCase()]; + if (!exts || !exts.length) { + return false; + } + return exts[0]; + } + function lookup(path) { + if (!path || typeof path !== "string") { + return false; + } + var extension2 = extname("x." + path).toLowerCase().substr(1); + if (!extension2) { + return false; + } + return exports2.types[extension2] || false; + } + function populateMaps(extensions, types) { + var preference = ["nginx", "apache", void 0, "iana"]; + Object.keys(db).forEach(function forEachMimeType(type) { + var mime = db[type]; + var exts = mime.extensions; + if (!exts || !exts.length) { + return; + } + extensions[type] = exts; + for (var i = 0; i < exts.length; i++) { + var extension2 = exts[i]; + if (types[extension2]) { + var from = preference.indexOf(db[types[extension2]].source); + var to = preference.indexOf(mime.source); + if (types[extension2] !== "application/octet-stream" && (from > to || from === to && types[extension2].substr(0, 12) === "application/")) { + continue; + } + } + types[extension2] = type; + } + }); + } + } +}); + +// node_modules/.pnpm/accepts@1.3.8/node_modules/accepts/index.js +var require_accepts = __commonJS({ + "node_modules/.pnpm/accepts@1.3.8/node_modules/accepts/index.js"(exports2, module2) { + "use strict"; + var Negotiator = require_negotiator(); + var mime = require_mime_types(); + module2.exports = Accepts; + function Accepts(req) { + if (!(this instanceof Accepts)) { + return new Accepts(req); + } + this.headers = req.headers; + this.negotiator = new Negotiator(req); + } + Accepts.prototype.type = Accepts.prototype.types = function(types_) { + var types = types_; + if (types && !Array.isArray(types)) { + types = new Array(arguments.length); + for (var i = 0; i < types.length; i++) { + types[i] = arguments[i]; + } + } + if (!types || types.length === 0) { + return this.negotiator.mediaTypes(); + } + if (!this.headers.accept) { + return types[0]; + } + var mimes = types.map(extToMime); + var accepts = this.negotiator.mediaTypes(mimes.filter(validMime)); + var first = accepts[0]; + return first ? types[mimes.indexOf(first)] : false; + }; + Accepts.prototype.encoding = Accepts.prototype.encodings = function(encodings_) { + var encodings = encodings_; + if (encodings && !Array.isArray(encodings)) { + encodings = new Array(arguments.length); + for (var i = 0; i < encodings.length; i++) { + encodings[i] = arguments[i]; + } + } + if (!encodings || encodings.length === 0) { + return this.negotiator.encodings(); + } + return this.negotiator.encodings(encodings)[0] || false; + }; + Accepts.prototype.charset = Accepts.prototype.charsets = function(charsets_) { + var charsets = charsets_; + if (charsets && !Array.isArray(charsets)) { + charsets = new Array(arguments.length); + for (var i = 0; i < charsets.length; i++) { + charsets[i] = arguments[i]; + } + } + if (!charsets || charsets.length === 0) { + return this.negotiator.charsets(); + } + return this.negotiator.charsets(charsets)[0] || false; + }; + Accepts.prototype.lang = Accepts.prototype.langs = Accepts.prototype.language = Accepts.prototype.languages = function(languages_) { + var languages = languages_; + if (languages && !Array.isArray(languages)) { + languages = new Array(arguments.length); + for (var i = 0; i < languages.length; i++) { + languages[i] = arguments[i]; + } + } + if (!languages || languages.length === 0) { + return this.negotiator.languages(); + } + return this.negotiator.languages(languages)[0] || false; + }; + function extToMime(type) { + return type.indexOf("/") === -1 ? mime.lookup(type) : type; + } + function validMime(type) { + return typeof type === "string"; + } + } +}); + +// node_modules/.pnpm/base64id@2.0.0/node_modules/base64id/lib/base64id.js +var require_base64id = __commonJS({ + "node_modules/.pnpm/base64id@2.0.0/node_modules/base64id/lib/base64id.js"(exports2, module2) { + var crypto = require("crypto"); + var Base64Id = function() { + }; + Base64Id.prototype.getRandomBytes = function(bytes) { + var BUFFER_SIZE = 4096; + var self = this; + bytes = bytes || 12; + if (bytes > BUFFER_SIZE) { + return crypto.randomBytes(bytes); + } + var bytesInBuffer = parseInt(BUFFER_SIZE / bytes); + var threshold = parseInt(bytesInBuffer * 0.85); + if (!threshold) { + return crypto.randomBytes(bytes); + } + if (this.bytesBufferIndex == null) { + this.bytesBufferIndex = -1; + } + if (this.bytesBufferIndex == bytesInBuffer) { + this.bytesBuffer = null; + this.bytesBufferIndex = -1; + } + if (this.bytesBufferIndex == -1 || this.bytesBufferIndex > threshold) { + if (!this.isGeneratingBytes) { + this.isGeneratingBytes = true; + crypto.randomBytes(BUFFER_SIZE, function(err, bytes2) { + self.bytesBuffer = bytes2; + self.bytesBufferIndex = 0; + self.isGeneratingBytes = false; + }); + } + if (this.bytesBufferIndex == -1) { + return crypto.randomBytes(bytes); + } + } + var result = this.bytesBuffer.slice(bytes * this.bytesBufferIndex, bytes * (this.bytesBufferIndex + 1)); + this.bytesBufferIndex++; + return result; + }; + Base64Id.prototype.generateId = function() { + var rand = Buffer.alloc(15); + if (!rand.writeInt32BE) { + return Math.abs(Math.random() * Math.random() * Date.now() | 0).toString() + Math.abs(Math.random() * Math.random() * Date.now() | 0).toString(); + } + this.sequenceNumber = this.sequenceNumber + 1 | 0; + rand.writeInt32BE(this.sequenceNumber, 11); + if (crypto.randomBytes) { + this.getRandomBytes(12).copy(rand); + } else { + [0, 4, 8].forEach(function(i) { + rand.writeInt32BE(Math.random() * Math.pow(2, 32) | 0, i); + }); + } + return rand.toString("base64").replace(/\//g, "_").replace(/\+/g, "-"); + }; + exports2 = module2.exports = new Base64Id(); + } +}); + +// node_modules/.pnpm/engine.io-parser@5.2.1/node_modules/engine.io-parser/build/cjs/commons.js +var require_commons = __commonJS({ + "node_modules/.pnpm/engine.io-parser@5.2.1/node_modules/engine.io-parser/build/cjs/commons.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ERROR_PACKET = exports2.PACKET_TYPES_REVERSE = exports2.PACKET_TYPES = void 0; + var PACKET_TYPES = /* @__PURE__ */ Object.create(null); + exports2.PACKET_TYPES = PACKET_TYPES; + PACKET_TYPES["open"] = "0"; + PACKET_TYPES["close"] = "1"; + PACKET_TYPES["ping"] = "2"; + PACKET_TYPES["pong"] = "3"; + PACKET_TYPES["message"] = "4"; + PACKET_TYPES["upgrade"] = "5"; + PACKET_TYPES["noop"] = "6"; + var PACKET_TYPES_REVERSE = /* @__PURE__ */ Object.create(null); + exports2.PACKET_TYPES_REVERSE = PACKET_TYPES_REVERSE; + Object.keys(PACKET_TYPES).forEach((key) => { + PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key; + }); + var ERROR_PACKET = { type: "error", data: "parser error" }; + exports2.ERROR_PACKET = ERROR_PACKET; + } +}); + +// node_modules/.pnpm/engine.io-parser@5.2.1/node_modules/engine.io-parser/build/cjs/encodePacket.js +var require_encodePacket = __commonJS({ + "node_modules/.pnpm/engine.io-parser@5.2.1/node_modules/engine.io-parser/build/cjs/encodePacket.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.encodePacketToBinary = exports2.encodePacket = void 0; + var commons_js_1 = require_commons(); + var encodePacket = ({ type, data }, supportsBinary, callback) => { + if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) { + return callback(supportsBinary ? data : "b" + toBuffer(data, true).toString("base64")); + } + return callback(commons_js_1.PACKET_TYPES[type] + (data || "")); + }; + exports2.encodePacket = encodePacket; + var toBuffer = (data, forceBufferConversion) => { + if (Buffer.isBuffer(data) || data instanceof Uint8Array && !forceBufferConversion) { + return data; + } else if (data instanceof ArrayBuffer) { + return Buffer.from(data); + } else { + return Buffer.from(data.buffer, data.byteOffset, data.byteLength); + } + }; + var TEXT_ENCODER; + function encodePacketToBinary(packet, callback) { + if (packet.data instanceof ArrayBuffer || ArrayBuffer.isView(packet.data)) { + return callback(toBuffer(packet.data, false)); + } + (0, exports2.encodePacket)(packet, true, (encoded) => { + if (!TEXT_ENCODER) { + TEXT_ENCODER = new TextEncoder(); + } + callback(TEXT_ENCODER.encode(encoded)); + }); + } + exports2.encodePacketToBinary = encodePacketToBinary; + } +}); + +// node_modules/.pnpm/engine.io-parser@5.2.1/node_modules/engine.io-parser/build/cjs/decodePacket.js +var require_decodePacket = __commonJS({ + "node_modules/.pnpm/engine.io-parser@5.2.1/node_modules/engine.io-parser/build/cjs/decodePacket.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.decodePacket = void 0; + var commons_js_1 = require_commons(); + var decodePacket = (encodedPacket, binaryType) => { + if (typeof encodedPacket !== "string") { + return { + type: "message", + data: mapBinary(encodedPacket, binaryType) + }; + } + const type = encodedPacket.charAt(0); + if (type === "b") { + const buffer = Buffer.from(encodedPacket.substring(1), "base64"); + return { + type: "message", + data: mapBinary(buffer, binaryType) + }; + } + if (!commons_js_1.PACKET_TYPES_REVERSE[type]) { + return commons_js_1.ERROR_PACKET; + } + return encodedPacket.length > 1 ? { + type: commons_js_1.PACKET_TYPES_REVERSE[type], + data: encodedPacket.substring(1) + } : { + type: commons_js_1.PACKET_TYPES_REVERSE[type] + }; + }; + exports2.decodePacket = decodePacket; + var mapBinary = (data, binaryType) => { + switch (binaryType) { + case "arraybuffer": + if (data instanceof ArrayBuffer) { + return data; + } else if (Buffer.isBuffer(data)) { + return data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength); + } else { + return data.buffer; + } + case "nodebuffer": + default: + if (Buffer.isBuffer(data)) { + return data; + } else { + return Buffer.from(data); + } + } + }; + } +}); + +// node_modules/.pnpm/engine.io-parser@5.2.1/node_modules/engine.io-parser/build/cjs/index.js +var require_cjs = __commonJS({ + "node_modules/.pnpm/engine.io-parser@5.2.1/node_modules/engine.io-parser/build/cjs/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.decodePayload = exports2.decodePacket = exports2.encodePayload = exports2.encodePacket = exports2.protocol = exports2.createPacketDecoderStream = exports2.createPacketEncoderStream = void 0; + var encodePacket_js_1 = require_encodePacket(); + Object.defineProperty(exports2, "encodePacket", { enumerable: true, get: function() { + return encodePacket_js_1.encodePacket; + } }); + var decodePacket_js_1 = require_decodePacket(); + Object.defineProperty(exports2, "decodePacket", { enumerable: true, get: function() { + return decodePacket_js_1.decodePacket; + } }); + var commons_js_1 = require_commons(); + var SEPARATOR = String.fromCharCode(30); + var encodePayload = (packets, callback) => { + const length = packets.length; + const encodedPackets = new Array(length); + let count = 0; + packets.forEach((packet, i) => { + (0, encodePacket_js_1.encodePacket)(packet, false, (encodedPacket) => { + encodedPackets[i] = encodedPacket; + if (++count === length) { + callback(encodedPackets.join(SEPARATOR)); + } + }); + }); + }; + exports2.encodePayload = encodePayload; + var decodePayload = (encodedPayload, binaryType) => { + const encodedPackets = encodedPayload.split(SEPARATOR); + const packets = []; + for (let i = 0; i < encodedPackets.length; i++) { + const decodedPacket = (0, decodePacket_js_1.decodePacket)(encodedPackets[i], binaryType); + packets.push(decodedPacket); + if (decodedPacket.type === "error") { + break; + } + } + return packets; + }; + exports2.decodePayload = decodePayload; + function createPacketEncoderStream() { + return new TransformStream({ + transform(packet, controller) { + (0, encodePacket_js_1.encodePacketToBinary)(packet, (encodedPacket) => { + const payloadLength = encodedPacket.length; + let header; + if (payloadLength < 126) { + header = new Uint8Array(1); + new DataView(header.buffer).setUint8(0, payloadLength); + } else if (payloadLength < 65536) { + header = new Uint8Array(3); + const view = new DataView(header.buffer); + view.setUint8(0, 126); + view.setUint16(1, payloadLength); + } else { + header = new Uint8Array(9); + const view = new DataView(header.buffer); + view.setUint8(0, 127); + view.setBigUint64(1, BigInt(payloadLength)); + } + if (packet.data && typeof packet.data !== "string") { + header[0] |= 128; + } + controller.enqueue(header); + controller.enqueue(encodedPacket); + }); + } + }); + } + exports2.createPacketEncoderStream = createPacketEncoderStream; + var TEXT_DECODER; + function totalLength(chunks) { + return chunks.reduce((acc, chunk) => acc + chunk.length, 0); + } + function concatChunks(chunks, size) { + if (chunks[0].length === size) { + return chunks.shift(); + } + const buffer = new Uint8Array(size); + let j = 0; + for (let i = 0; i < size; i++) { + buffer[i] = chunks[0][j++]; + if (j === chunks[0].length) { + chunks.shift(); + j = 0; + } + } + if (chunks.length && j < chunks[0].length) { + chunks[0] = chunks[0].slice(j); + } + return buffer; + } + function createPacketDecoderStream(maxPayload, binaryType) { + if (!TEXT_DECODER) { + TEXT_DECODER = new TextDecoder(); + } + const chunks = []; + let state = 0; + let expectedLength = -1; + let isBinary = false; + return new TransformStream({ + transform(chunk, controller) { + chunks.push(chunk); + while (true) { + if (state === 0) { + if (totalLength(chunks) < 1) { + break; + } + const header = concatChunks(chunks, 1); + isBinary = (header[0] & 128) === 128; + expectedLength = header[0] & 127; + if (expectedLength < 126) { + state = 3; + } else if (expectedLength === 126) { + state = 1; + } else { + state = 2; + } + } else if (state === 1) { + if (totalLength(chunks) < 2) { + break; + } + const headerArray = concatChunks(chunks, 2); + expectedLength = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length).getUint16(0); + state = 3; + } else if (state === 2) { + if (totalLength(chunks) < 8) { + break; + } + const headerArray = concatChunks(chunks, 8); + const view = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length); + const n = view.getUint32(0); + if (n > Math.pow(2, 53 - 32) - 1) { + controller.enqueue(commons_js_1.ERROR_PACKET); + break; + } + expectedLength = n * Math.pow(2, 32) + view.getUint32(4); + state = 3; + } else { + if (totalLength(chunks) < expectedLength) { + break; + } + const data = concatChunks(chunks, expectedLength); + controller.enqueue((0, decodePacket_js_1.decodePacket)(isBinary ? data : TEXT_DECODER.decode(data), binaryType)); + state = 0; + } + if (expectedLength === 0 || expectedLength > maxPayload) { + controller.enqueue(commons_js_1.ERROR_PACKET); + break; + } + } + } + }); + } + exports2.createPacketDecoderStream = createPacketDecoderStream; + exports2.protocol = 4; + } +}); + +// node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/parser-v3/utf8.js +var require_utf8 = __commonJS({ + "node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/parser-v3/utf8.js"(exports2, module2) { + var stringFromCharCode = String.fromCharCode; + function ucs2decode(string) { + var output = []; + var counter = 0; + var length = string.length; + var value; + var extra; + while (counter < length) { + value = string.charCodeAt(counter++); + if (value >= 55296 && value <= 56319 && counter < length) { + extra = string.charCodeAt(counter++); + if ((extra & 64512) == 56320) { + output.push(((value & 1023) << 10) + (extra & 1023) + 65536); + } else { + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; + } + function ucs2encode(array) { + var length = array.length; + var index = -1; + var value; + var output = ""; + while (++index < length) { + value = array[index]; + if (value > 65535) { + value -= 65536; + output += stringFromCharCode(value >>> 10 & 1023 | 55296); + value = 56320 | value & 1023; + } + output += stringFromCharCode(value); + } + return output; + } + function checkScalarValue(codePoint, strict) { + if (codePoint >= 55296 && codePoint <= 57343) { + if (strict) { + throw Error("Lone surrogate U+" + codePoint.toString(16).toUpperCase() + " is not a scalar value"); + } + return false; + } + return true; + } + function createByte(codePoint, shift) { + return stringFromCharCode(codePoint >> shift & 63 | 128); + } + function encodeCodePoint(codePoint, strict) { + if ((codePoint & 4294967168) == 0) { + return stringFromCharCode(codePoint); + } + var symbol = ""; + if ((codePoint & 4294965248) == 0) { + symbol = stringFromCharCode(codePoint >> 6 & 31 | 192); + } else if ((codePoint & 4294901760) == 0) { + if (!checkScalarValue(codePoint, strict)) { + codePoint = 65533; + } + symbol = stringFromCharCode(codePoint >> 12 & 15 | 224); + symbol += createByte(codePoint, 6); + } else if ((codePoint & 4292870144) == 0) { + symbol = stringFromCharCode(codePoint >> 18 & 7 | 240); + symbol += createByte(codePoint, 12); + symbol += createByte(codePoint, 6); + } + symbol += stringFromCharCode(codePoint & 63 | 128); + return symbol; + } + function utf8encode(string, opts) { + opts = opts || {}; + var strict = false !== opts.strict; + var codePoints = ucs2decode(string); + var length = codePoints.length; + var index = -1; + var codePoint; + var byteString = ""; + while (++index < length) { + codePoint = codePoints[index]; + byteString += encodeCodePoint(codePoint, strict); + } + return byteString; + } + function readContinuationByte() { + if (byteIndex >= byteCount) { + throw Error("Invalid byte index"); + } + var continuationByte = byteArray[byteIndex] & 255; + byteIndex++; + if ((continuationByte & 192) == 128) { + return continuationByte & 63; + } + throw Error("Invalid continuation byte"); + } + function decodeSymbol(strict) { + var byte1; + var byte2; + var byte3; + var byte4; + var codePoint; + if (byteIndex > byteCount) { + throw Error("Invalid byte index"); + } + if (byteIndex == byteCount) { + return false; + } + byte1 = byteArray[byteIndex] & 255; + byteIndex++; + if ((byte1 & 128) == 0) { + return byte1; + } + if ((byte1 & 224) == 192) { + byte2 = readContinuationByte(); + codePoint = (byte1 & 31) << 6 | byte2; + if (codePoint >= 128) { + return codePoint; + } else { + throw Error("Invalid continuation byte"); + } + } + if ((byte1 & 240) == 224) { + byte2 = readContinuationByte(); + byte3 = readContinuationByte(); + codePoint = (byte1 & 15) << 12 | byte2 << 6 | byte3; + if (codePoint >= 2048) { + return checkScalarValue(codePoint, strict) ? codePoint : 65533; + } else { + throw Error("Invalid continuation byte"); + } + } + if ((byte1 & 248) == 240) { + byte2 = readContinuationByte(); + byte3 = readContinuationByte(); + byte4 = readContinuationByte(); + codePoint = (byte1 & 7) << 18 | byte2 << 12 | byte3 << 6 | byte4; + if (codePoint >= 65536 && codePoint <= 1114111) { + return codePoint; + } + } + throw Error("Invalid UTF-8 detected"); + } + var byteArray; + var byteCount; + var byteIndex; + function utf8decode(byteString, opts) { + opts = opts || {}; + var strict = false !== opts.strict; + byteArray = ucs2decode(byteString); + byteCount = byteArray.length; + byteIndex = 0; + var codePoints = []; + var tmp; + while ((tmp = decodeSymbol(strict)) !== false) { + codePoints.push(tmp); + } + return ucs2encode(codePoints); + } + module2.exports = { + version: "2.1.2", + encode: utf8encode, + decode: utf8decode + }; + } +}); + +// node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/parser-v3/index.js +var require_parser_v3 = __commonJS({ + "node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/parser-v3/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.decodePayloadAsBinary = exports2.encodePayloadAsBinary = exports2.decodePayload = exports2.encodePayload = exports2.decodeBase64Packet = exports2.decodePacket = exports2.encodeBase64Packet = exports2.encodePacket = exports2.packets = exports2.protocol = void 0; + var utf8 = require_utf8(); + exports2.protocol = 3; + var hasBinary = (packets) => { + for (const packet of packets) { + if (packet.data instanceof ArrayBuffer || ArrayBuffer.isView(packet.data)) { + return true; + } + } + return false; + }; + exports2.packets = { + open: 0, + close: 1, + ping: 2, + pong: 3, + message: 4, + upgrade: 5, + noop: 6 + }; + var packetslist = Object.keys(exports2.packets); + var err = { type: "error", data: "parser error" }; + var EMPTY_BUFFER = Buffer.concat([]); + function encodePacket(packet, supportsBinary, utf8encode, callback) { + if (typeof supportsBinary === "function") { + callback = supportsBinary; + supportsBinary = null; + } + if (typeof utf8encode === "function") { + callback = utf8encode; + utf8encode = null; + } + if (Buffer.isBuffer(packet.data)) { + return encodeBuffer(packet, supportsBinary, callback); + } else if (packet.data && (packet.data.buffer || packet.data) instanceof ArrayBuffer) { + return encodeBuffer({ type: packet.type, data: arrayBufferToBuffer(packet.data) }, supportsBinary, callback); + } + var encoded = exports2.packets[packet.type]; + if (void 0 !== packet.data) { + encoded += utf8encode ? utf8.encode(String(packet.data), { strict: false }) : String(packet.data); + } + return callback("" + encoded); + } + exports2.encodePacket = encodePacket; + function encodeBuffer(packet, supportsBinary, callback) { + if (!supportsBinary) { + return encodeBase64Packet(packet, callback); + } + var data = packet.data; + var typeBuffer = Buffer.allocUnsafe(1); + typeBuffer[0] = exports2.packets[packet.type]; + return callback(Buffer.concat([typeBuffer, data])); + } + function encodeBase64Packet(packet, callback) { + var data = Buffer.isBuffer(packet.data) ? packet.data : arrayBufferToBuffer(packet.data); + var message = "b" + exports2.packets[packet.type]; + message += data.toString("base64"); + return callback(message); + } + exports2.encodeBase64Packet = encodeBase64Packet; + function decodePacket(data, binaryType, utf8decode) { + if (data === void 0) { + return err; + } + var type; + if (typeof data === "string") { + type = data.charAt(0); + if (type === "b") { + return decodeBase64Packet(data.slice(1), binaryType); + } + if (utf8decode) { + data = tryDecode(data); + if (data === false) { + return err; + } + } + if (Number(type) != type || !packetslist[type]) { + return err; + } + if (data.length > 1) { + return { type: packetslist[type], data: data.slice(1) }; + } else { + return { type: packetslist[type] }; + } + } + if (binaryType === "arraybuffer") { + var intArray = new Uint8Array(data); + type = intArray[0]; + return { type: packetslist[type], data: intArray.buffer.slice(1) }; + } + if (data instanceof ArrayBuffer) { + data = arrayBufferToBuffer(data); + } + type = data[0]; + return { type: packetslist[type], data: data.slice(1) }; + } + exports2.decodePacket = decodePacket; + function tryDecode(data) { + try { + data = utf8.decode(data, { strict: false }); + } catch (e) { + return false; + } + return data; + } + function decodeBase64Packet(msg, binaryType) { + var type = packetslist[msg.charAt(0)]; + var data = Buffer.from(msg.slice(1), "base64"); + if (binaryType === "arraybuffer") { + var abv = new Uint8Array(data.length); + for (var i = 0; i < abv.length; i++) { + abv[i] = data[i]; + } + data = abv.buffer; + } + return { type, data }; + } + exports2.decodeBase64Packet = decodeBase64Packet; + function encodePayload(packets, supportsBinary, callback) { + if (typeof supportsBinary === "function") { + callback = supportsBinary; + supportsBinary = null; + } + if (supportsBinary && hasBinary(packets)) { + return encodePayloadAsBinary(packets, callback); + } + if (!packets.length) { + return callback("0:"); + } + function encodeOne(packet, doneCallback) { + encodePacket(packet, supportsBinary, false, function(message) { + doneCallback(null, setLengthHeader(message)); + }); + } + map(packets, encodeOne, function(err2, results) { + return callback(results.join("")); + }); + } + exports2.encodePayload = encodePayload; + function setLengthHeader(message) { + return message.length + ":" + message; + } + function map(ary, each, done) { + const results = new Array(ary.length); + let count = 0; + for (let i = 0; i < ary.length; i++) { + each(ary[i], (error, msg) => { + results[i] = msg; + if (++count === ary.length) { + done(null, results); + } + }); + } + } + function decodePayload(data, binaryType, callback) { + if (typeof data !== "string") { + return decodePayloadAsBinary(data, binaryType, callback); + } + if (typeof binaryType === "function") { + callback = binaryType; + binaryType = null; + } + if (data === "") { + return callback(err, 0, 1); + } + var length = "", n, msg, packet; + for (var i = 0, l = data.length; i < l; i++) { + var chr = data.charAt(i); + if (chr !== ":") { + length += chr; + continue; + } + if (length === "" || length != (n = Number(length))) { + return callback(err, 0, 1); + } + msg = data.slice(i + 1, i + 1 + n); + if (length != msg.length) { + return callback(err, 0, 1); + } + if (msg.length) { + packet = decodePacket(msg, binaryType, false); + if (err.type === packet.type && err.data === packet.data) { + return callback(err, 0, 1); + } + var more = callback(packet, i + n, l); + if (false === more) + return; + } + i += n; + length = ""; + } + if (length !== "") { + return callback(err, 0, 1); + } + } + exports2.decodePayload = decodePayload; + function bufferToString(buffer) { + var str = ""; + for (var i = 0, l = buffer.length; i < l; i++) { + str += String.fromCharCode(buffer[i]); + } + return str; + } + function stringToBuffer(string) { + var buf = Buffer.allocUnsafe(string.length); + for (var i = 0, l = string.length; i < l; i++) { + buf.writeUInt8(string.charCodeAt(i), i); + } + return buf; + } + function arrayBufferToBuffer(data) { + var length = data.byteLength || data.length; + var offset = data.byteOffset || 0; + return Buffer.from(data.buffer || data, offset, length); + } + function encodePayloadAsBinary(packets, callback) { + if (!packets.length) { + return callback(EMPTY_BUFFER); + } + map(packets, encodeOneBinaryPacket, function(err2, results) { + return callback(Buffer.concat(results)); + }); + } + exports2.encodePayloadAsBinary = encodePayloadAsBinary; + function encodeOneBinaryPacket(p, doneCallback) { + function onBinaryPacketEncode(packet) { + var encodingLength = "" + packet.length; + var sizeBuffer; + if (typeof packet === "string") { + sizeBuffer = Buffer.allocUnsafe(encodingLength.length + 2); + sizeBuffer[0] = 0; + for (var i = 0; i < encodingLength.length; i++) { + sizeBuffer[i + 1] = parseInt(encodingLength[i], 10); + } + sizeBuffer[sizeBuffer.length - 1] = 255; + return doneCallback(null, Buffer.concat([sizeBuffer, stringToBuffer(packet)])); + } + sizeBuffer = Buffer.allocUnsafe(encodingLength.length + 2); + sizeBuffer[0] = 1; + for (var i = 0; i < encodingLength.length; i++) { + sizeBuffer[i + 1] = parseInt(encodingLength[i], 10); + } + sizeBuffer[sizeBuffer.length - 1] = 255; + doneCallback(null, Buffer.concat([sizeBuffer, packet])); + } + encodePacket(p, true, true, onBinaryPacketEncode); + } + function decodePayloadAsBinary(data, binaryType, callback) { + if (typeof binaryType === "function") { + callback = binaryType; + binaryType = null; + } + var bufferTail = data; + var buffers = []; + var i; + while (bufferTail.length > 0) { + var strLen = ""; + var isString = bufferTail[0] === 0; + for (i = 1; ; i++) { + if (bufferTail[i] === 255) + break; + if (strLen.length > 310) { + return callback(err, 0, 1); + } + strLen += "" + bufferTail[i]; + } + bufferTail = bufferTail.slice(strLen.length + 1); + var msgLength = parseInt(strLen, 10); + var msg = bufferTail.slice(1, msgLength + 1); + if (isString) + msg = bufferToString(msg); + buffers.push(msg); + bufferTail = bufferTail.slice(msgLength + 1); + } + var total = buffers.length; + for (i = 0; i < total; i++) { + var buffer = buffers[i]; + callback(decodePacket(buffer, binaryType, true), i, total); + } + } + exports2.decodePayloadAsBinary = decodePayloadAsBinary; + } +}); + +// node_modules/.pnpm/ms@2.1.2/node_modules/ms/index.js +var require_ms = __commonJS({ + "node_modules/.pnpm/ms@2.1.2/node_modules/ms/index.js"(exports2, module2) { + var s = 1e3; + var m = s * 60; + var h = m * 60; + var d = h * 24; + var w = d * 7; + var y = d * 365.25; + module2.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === "string" && val.length > 0) { + return parse(val); + } else if (type === "number" && isFinite(val)) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + "val is not a non-empty string or a valid number. val=" + JSON.stringify(val) + ); + }; + function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || "ms").toLowerCase(); + switch (type) { + case "years": + case "year": + case "yrs": + case "yr": + case "y": + return n * y; + case "weeks": + case "week": + case "w": + return n * w; + case "days": + case "day": + case "d": + return n * d; + case "hours": + case "hour": + case "hrs": + case "hr": + case "h": + return n * h; + case "minutes": + case "minute": + case "mins": + case "min": + case "m": + return n * m; + case "seconds": + case "second": + case "secs": + case "sec": + case "s": + return n * s; + case "milliseconds": + case "millisecond": + case "msecs": + case "msec": + case "ms": + return n; + default: + return void 0; + } + } + function fmtShort(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return Math.round(ms / d) + "d"; + } + if (msAbs >= h) { + return Math.round(ms / h) + "h"; + } + if (msAbs >= m) { + return Math.round(ms / m) + "m"; + } + if (msAbs >= s) { + return Math.round(ms / s) + "s"; + } + return ms + "ms"; + } + function fmtLong(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return plural(ms, msAbs, d, "day"); + } + if (msAbs >= h) { + return plural(ms, msAbs, h, "hour"); + } + if (msAbs >= m) { + return plural(ms, msAbs, m, "minute"); + } + if (msAbs >= s) { + return plural(ms, msAbs, s, "second"); + } + return ms + " ms"; + } + function plural(ms, msAbs, n, name) { + var isPlural = msAbs >= n * 1.5; + return Math.round(ms / n) + " " + name + (isPlural ? "s" : ""); + } + } +}); + +// node_modules/.pnpm/debug@4.3.4/node_modules/debug/src/common.js +var require_common = __commonJS({ + "node_modules/.pnpm/debug@4.3.4/node_modules/debug/src/common.js"(exports2, module2) { + function setup(env) { + createDebug.debug = createDebug; + createDebug.default = createDebug; + createDebug.coerce = coerce; + createDebug.disable = disable; + createDebug.enable = enable; + createDebug.enabled = enabled; + createDebug.humanize = require_ms(); + createDebug.destroy = destroy; + Object.keys(env).forEach((key) => { + createDebug[key] = env[key]; + }); + createDebug.names = []; + createDebug.skips = []; + createDebug.formatters = {}; + function selectColor(namespace) { + let hash = 0; + for (let i = 0; i < namespace.length; i++) { + hash = (hash << 5) - hash + namespace.charCodeAt(i); + hash |= 0; + } + return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; + } + createDebug.selectColor = selectColor; + function createDebug(namespace) { + let prevTime; + let enableOverride = null; + let namespacesCache; + let enabledCache; + function debug(...args) { + if (!debug.enabled) { + return; + } + const self = debug; + const curr = Number(/* @__PURE__ */ new Date()); + const ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + args[0] = createDebug.coerce(args[0]); + if (typeof args[0] !== "string") { + args.unshift("%O"); + } + let index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { + if (match === "%%") { + return "%"; + } + index++; + const formatter = createDebug.formatters[format]; + if (typeof formatter === "function") { + const val = args[index]; + match = formatter.call(self, val); + args.splice(index, 1); + index--; + } + return match; + }); + createDebug.formatArgs.call(self, args); + const logFn = self.log || createDebug.log; + logFn.apply(self, args); + } + debug.namespace = namespace; + debug.useColors = createDebug.useColors(); + debug.color = createDebug.selectColor(namespace); + debug.extend = extend; + debug.destroy = createDebug.destroy; + Object.defineProperty(debug, "enabled", { + enumerable: true, + configurable: false, + get: () => { + if (enableOverride !== null) { + return enableOverride; + } + if (namespacesCache !== createDebug.namespaces) { + namespacesCache = createDebug.namespaces; + enabledCache = createDebug.enabled(namespace); + } + return enabledCache; + }, + set: (v) => { + enableOverride = v; + } + }); + if (typeof createDebug.init === "function") { + createDebug.init(debug); + } + return debug; + } + function extend(namespace, delimiter) { + const newDebug = createDebug(this.namespace + (typeof delimiter === "undefined" ? ":" : delimiter) + namespace); + newDebug.log = this.log; + return newDebug; + } + function enable(namespaces) { + createDebug.save(namespaces); + createDebug.namespaces = namespaces; + createDebug.names = []; + createDebug.skips = []; + let i; + const split = (typeof namespaces === "string" ? namespaces : "").split(/[\s,]+/); + const len = split.length; + for (i = 0; i < len; i++) { + if (!split[i]) { + continue; + } + namespaces = split[i].replace(/\*/g, ".*?"); + if (namespaces[0] === "-") { + createDebug.skips.push(new RegExp("^" + namespaces.slice(1) + "$")); + } else { + createDebug.names.push(new RegExp("^" + namespaces + "$")); + } + } + } + function disable() { + const namespaces = [ + ...createDebug.names.map(toNamespace), + ...createDebug.skips.map(toNamespace).map((namespace) => "-" + namespace) + ].join(","); + createDebug.enable(""); + return namespaces; + } + function enabled(name) { + if (name[name.length - 1] === "*") { + return true; + } + let i; + let len; + for (i = 0, len = createDebug.skips.length; i < len; i++) { + if (createDebug.skips[i].test(name)) { + return false; + } + } + for (i = 0, len = createDebug.names.length; i < len; i++) { + if (createDebug.names[i].test(name)) { + return true; + } + } + return false; + } + function toNamespace(regexp) { + return regexp.toString().substring(2, regexp.toString().length - 2).replace(/\.\*\?$/, "*"); + } + function coerce(val) { + if (val instanceof Error) { + return val.stack || val.message; + } + return val; + } + function destroy() { + console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); + } + createDebug.enable(createDebug.load()); + return createDebug; + } + module2.exports = setup; + } +}); + +// node_modules/.pnpm/debug@4.3.4/node_modules/debug/src/browser.js +var require_browser = __commonJS({ + "node_modules/.pnpm/debug@4.3.4/node_modules/debug/src/browser.js"(exports2, module2) { + exports2.formatArgs = formatArgs; + exports2.save = save; + exports2.load = load; + exports2.useColors = useColors; + exports2.storage = localstorage(); + exports2.destroy = (() => { + let warned = false; + return () => { + if (!warned) { + warned = true; + console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); + } + }; + })(); + exports2.colors = [ + "#0000CC", + "#0000FF", + "#0033CC", + "#0033FF", + "#0066CC", + "#0066FF", + "#0099CC", + "#0099FF", + "#00CC00", + "#00CC33", + "#00CC66", + "#00CC99", + "#00CCCC", + "#00CCFF", + "#3300CC", + "#3300FF", + "#3333CC", + "#3333FF", + "#3366CC", + "#3366FF", + "#3399CC", + "#3399FF", + "#33CC00", + "#33CC33", + "#33CC66", + "#33CC99", + "#33CCCC", + "#33CCFF", + "#6600CC", + "#6600FF", + "#6633CC", + "#6633FF", + "#66CC00", + "#66CC33", + "#9900CC", + "#9900FF", + "#9933CC", + "#9933FF", + "#99CC00", + "#99CC33", + "#CC0000", + "#CC0033", + "#CC0066", + "#CC0099", + "#CC00CC", + "#CC00FF", + "#CC3300", + "#CC3333", + "#CC3366", + "#CC3399", + "#CC33CC", + "#CC33FF", + "#CC6600", + "#CC6633", + "#CC9900", + "#CC9933", + "#CCCC00", + "#CCCC33", + "#FF0000", + "#FF0033", + "#FF0066", + "#FF0099", + "#FF00CC", + "#FF00FF", + "#FF3300", + "#FF3333", + "#FF3366", + "#FF3399", + "#FF33CC", + "#FF33FF", + "#FF6600", + "#FF6633", + "#FF9900", + "#FF9933", + "#FFCC00", + "#FFCC33" + ]; + function useColors() { + if (typeof window !== "undefined" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) { + return true; + } + if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } + return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773 + typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker + typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); + } + function formatArgs(args) { + args[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args[0] + (this.useColors ? "%c " : " ") + "+" + module2.exports.humanize(this.diff); + if (!this.useColors) { + return; + } + const c = "color: " + this.color; + args.splice(1, 0, c, "color: inherit"); + let index = 0; + let lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, (match) => { + if (match === "%%") { + return; + } + index++; + if (match === "%c") { + lastC = index; + } + }); + args.splice(lastC, 0, c); + } + exports2.log = console.debug || console.log || (() => { + }); + function save(namespaces) { + try { + if (namespaces) { + exports2.storage.setItem("debug", namespaces); + } else { + exports2.storage.removeItem("debug"); + } + } catch (error) { + } + } + function load() { + let r; + try { + r = exports2.storage.getItem("debug"); + } catch (error) { + } + if (!r && typeof process !== "undefined" && "env" in process) { + r = process.env.DEBUG; + } + return r; + } + function localstorage() { + try { + return localStorage; + } catch (error) { + } + } + module2.exports = require_common()(exports2); + var { formatters } = module2.exports; + formatters.j = function(v) { + try { + return JSON.stringify(v); + } catch (error) { + return "[UnexpectedJSONParseError]: " + error.message; + } + }; + } +}); + +// node_modules/.pnpm/has-flag@3.0.0/node_modules/has-flag/index.js +var require_has_flag = __commonJS({ + "node_modules/.pnpm/has-flag@3.0.0/node_modules/has-flag/index.js"(exports2, module2) { + "use strict"; + module2.exports = (flag, argv) => { + argv = argv || process.argv; + const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--"; + const pos = argv.indexOf(prefix + flag); + const terminatorPos = argv.indexOf("--"); + return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos); + }; + } +}); + +// node_modules/.pnpm/supports-color@5.5.0/node_modules/supports-color/index.js +var require_supports_color = __commonJS({ + "node_modules/.pnpm/supports-color@5.5.0/node_modules/supports-color/index.js"(exports2, module2) { + "use strict"; + var os = require("os"); + var hasFlag = require_has_flag(); + var env = process.env; + var forceColor; + if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false")) { + forceColor = false; + } else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) { + forceColor = true; + } + if ("FORCE_COLOR" in env) { + forceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0; + } + function translateLevel(level) { + if (level === 0) { + return false; + } + return { + level, + hasBasic: true, + has256: level >= 2, + has16m: level >= 3 + }; + } + function supportsColor(stream) { + if (forceColor === false) { + return 0; + } + if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) { + return 3; + } + if (hasFlag("color=256")) { + return 2; + } + if (stream && !stream.isTTY && forceColor !== true) { + return 0; + } + const min = forceColor ? 1 : 0; + if (process.platform === "win32") { + const osRelease = os.release().split("."); + if (Number(process.versions.node.split(".")[0]) >= 8 && Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) { + return Number(osRelease[2]) >= 14931 ? 3 : 2; + } + return 1; + } + if ("CI" in env) { + if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI"].some((sign) => sign in env) || env.CI_NAME === "codeship") { + return 1; + } + return min; + } + if ("TEAMCITY_VERSION" in env) { + return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; + } + if (env.COLORTERM === "truecolor") { + return 3; + } + if ("TERM_PROGRAM" in env) { + const version = parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10); + switch (env.TERM_PROGRAM) { + case "iTerm.app": + return version >= 3 ? 3 : 2; + case "Apple_Terminal": + return 2; + } + } + if (/-256(color)?$/i.test(env.TERM)) { + return 2; + } + if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { + return 1; + } + if ("COLORTERM" in env) { + return 1; + } + if (env.TERM === "dumb") { + return min; + } + return min; + } + function getSupportLevel(stream) { + const level = supportsColor(stream); + return translateLevel(level); + } + module2.exports = { + supportsColor: getSupportLevel, + stdout: getSupportLevel(process.stdout), + stderr: getSupportLevel(process.stderr) + }; + } +}); + +// node_modules/.pnpm/debug@4.3.4/node_modules/debug/src/node.js +var require_node = __commonJS({ + "node_modules/.pnpm/debug@4.3.4/node_modules/debug/src/node.js"(exports2, module2) { + var tty = require("tty"); + var util = require("util"); + exports2.init = init; + exports2.log = log; + exports2.formatArgs = formatArgs; + exports2.save = save; + exports2.load = load; + exports2.useColors = useColors; + exports2.destroy = util.deprecate( + () => { + }, + "Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`." + ); + exports2.colors = [6, 2, 3, 4, 5, 1]; + try { + const supportsColor = require_supports_color(); + if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { + exports2.colors = [ + 20, + 21, + 26, + 27, + 32, + 33, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 56, + 57, + 62, + 63, + 68, + 69, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 92, + 93, + 98, + 99, + 112, + 113, + 128, + 129, + 134, + 135, + 148, + 149, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 178, + 179, + 184, + 185, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 214, + 215, + 220, + 221 + ]; + } + } catch (error) { + } + exports2.inspectOpts = Object.keys(process.env).filter((key) => { + return /^debug_/i.test(key); + }).reduce((obj, key) => { + const prop = key.substring(6).toLowerCase().replace(/_([a-z])/g, (_, k) => { + return k.toUpperCase(); + }); + let val = process.env[key]; + if (/^(yes|on|true|enabled)$/i.test(val)) { + val = true; + } else if (/^(no|off|false|disabled)$/i.test(val)) { + val = false; + } else if (val === "null") { + val = null; + } else { + val = Number(val); + } + obj[prop] = val; + return obj; + }, {}); + function useColors() { + return "colors" in exports2.inspectOpts ? Boolean(exports2.inspectOpts.colors) : tty.isatty(process.stderr.fd); + } + function formatArgs(args) { + const { namespace: name, useColors: useColors2 } = this; + if (useColors2) { + const c = this.color; + const colorCode = "\x1B[3" + (c < 8 ? c : "8;5;" + c); + const prefix = ` ${colorCode};1m${name} \x1B[0m`; + args[0] = prefix + args[0].split("\n").join("\n" + prefix); + args.push(colorCode + "m+" + module2.exports.humanize(this.diff) + "\x1B[0m"); + } else { + args[0] = getDate() + name + " " + args[0]; + } + } + function getDate() { + if (exports2.inspectOpts.hideDate) { + return ""; + } + return (/* @__PURE__ */ new Date()).toISOString() + " "; + } + function log(...args) { + return process.stderr.write(util.format(...args) + "\n"); + } + function save(namespaces) { + if (namespaces) { + process.env.DEBUG = namespaces; + } else { + delete process.env.DEBUG; + } + } + function load() { + return process.env.DEBUG; + } + function init(debug) { + debug.inspectOpts = {}; + const keys = Object.keys(exports2.inspectOpts); + for (let i = 0; i < keys.length; i++) { + debug.inspectOpts[keys[i]] = exports2.inspectOpts[keys[i]]; + } + } + module2.exports = require_common()(exports2); + var { formatters } = module2.exports; + formatters.o = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts).split("\n").map((str) => str.trim()).join(" "); + }; + formatters.O = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts); + }; + } +}); + +// node_modules/.pnpm/debug@4.3.4/node_modules/debug/src/index.js +var require_src = __commonJS({ + "node_modules/.pnpm/debug@4.3.4/node_modules/debug/src/index.js"(exports2, module2) { + if (typeof process === "undefined" || process.type === "renderer" || process.browser === true || process.__nwjs) { + module2.exports = require_browser(); + } else { + module2.exports = require_node(); + } + } +}); + +// node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/transport.js +var require_transport = __commonJS({ + "node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/transport.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Transport = void 0; + var events_1 = require("events"); + var parser_v4 = require_cjs(); + var parser_v3 = require_parser_v3(); + var debug_1 = require_src(); + var debug = (0, debug_1.default)("engine:transport"); + function noop() { + } + var Transport = class extends events_1.EventEmitter { + /** + * Transport constructor. + * + * @param {http.IncomingMessage} request + * @api public + */ + constructor(req) { + super(); + this.readyState = "open"; + this.discarded = false; + this.protocol = req._query.EIO === "4" ? 4 : 3; + this.parser = this.protocol === 4 ? parser_v4 : parser_v3; + } + get readyState() { + return this._readyState; + } + set readyState(state) { + debug("readyState updated from %s to %s (%s)", this._readyState, state, this.name); + this._readyState = state; + } + /** + * Flags the transport as discarded. + * + * @api private + */ + discard() { + this.discarded = true; + } + /** + * Called with an incoming HTTP request. + * + * @param {http.IncomingMessage} request + * @api protected + */ + onRequest(req) { + debug("setting request"); + this.req = req; + } + /** + * Closes the transport. + * + * @api private + */ + close(fn) { + if ("closed" === this.readyState || "closing" === this.readyState) + return; + this.readyState = "closing"; + this.doClose(fn || noop); + } + /** + * Called with a transport error. + * + * @param {String} message error + * @param {Object} error description + * @api protected + */ + onError(msg, desc) { + if (this.listeners("error").length) { + const err = new Error(msg); + err.type = "TransportError"; + err.description = desc; + this.emit("error", err); + } else { + debug("ignored transport error %s (%s)", msg, desc); + } + } + /** + * Called with parsed out a packets from the data stream. + * + * @param {Object} packet + * @api protected + */ + onPacket(packet) { + this.emit("packet", packet); + } + /** + * Called with the encoded packet data. + * + * @param {String} data + * @api protected + */ + onData(data) { + this.onPacket(this.parser.decodePacket(data)); + } + /** + * Called upon transport close. + * + * @api protected + */ + onClose() { + this.readyState = "closed"; + this.emit("close"); + } + }; + exports2.Transport = Transport; + } +}); + +// node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/transports/polling.js +var require_polling = __commonJS({ + "node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/transports/polling.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Polling = void 0; + var transport_1 = require_transport(); + var zlib_1 = require("zlib"); + var accepts = require_accepts(); + var debug_1 = require_src(); + var debug = (0, debug_1.default)("engine:polling"); + var compressionMethods = { + gzip: zlib_1.createGzip, + deflate: zlib_1.createDeflate + }; + var Polling = class extends transport_1.Transport { + /** + * HTTP polling constructor. + * + * @api public. + */ + constructor(req) { + super(req); + this.closeTimeout = 30 * 1e3; + } + /** + * Transport name + * + * @api public + */ + get name() { + return "polling"; + } + get supportsFraming() { + return false; + } + /** + * Overrides onRequest. + * + * @param {http.IncomingMessage} + * @api private + */ + onRequest(req) { + const res = req.res; + if ("GET" === req.method) { + this.onPollRequest(req, res); + } else if ("POST" === req.method) { + this.onDataRequest(req, res); + } else { + res.writeHead(500); + res.end(); + } + } + /** + * The client sends a request awaiting for us to send data. + * + * @api private + */ + onPollRequest(req, res) { + if (this.req) { + debug("request overlap"); + this.onError("overlap from client"); + res.writeHead(400); + res.end(); + return; + } + debug("setting request"); + this.req = req; + this.res = res; + const onClose = () => { + this.onError("poll connection closed prematurely"); + }; + const cleanup = () => { + req.removeListener("close", onClose); + this.req = this.res = null; + }; + req.cleanup = cleanup; + req.on("close", onClose); + this.writable = true; + this.emit("drain"); + if (this.writable && this.shouldClose) { + debug("triggering empty send to append close packet"); + this.send([{ type: "noop" }]); + } + } + /** + * The client sends a request with data. + * + * @api private + */ + onDataRequest(req, res) { + if (this.dataReq) { + this.onError("data request overlap from client"); + res.writeHead(400); + res.end(); + return; + } + const isBinary = "application/octet-stream" === req.headers["content-type"]; + if (isBinary && this.protocol === 4) { + return this.onError("invalid content"); + } + this.dataReq = req; + this.dataRes = res; + let chunks = isBinary ? Buffer.concat([]) : ""; + const cleanup = () => { + req.removeListener("data", onData); + req.removeListener("end", onEnd); + req.removeListener("close", onClose); + this.dataReq = this.dataRes = chunks = null; + }; + const onClose = () => { + cleanup(); + this.onError("data request connection closed prematurely"); + }; + const onData = (data) => { + let contentLength; + if (isBinary) { + chunks = Buffer.concat([chunks, data]); + contentLength = chunks.length; + } else { + chunks += data; + contentLength = Buffer.byteLength(chunks); + } + if (contentLength > this.maxHttpBufferSize) { + res.writeHead(413).end(); + cleanup(); + } + }; + const onEnd = () => { + this.onData(chunks); + const headers = { + // text/html is required instead of text/plain to avoid an + // unwanted download dialog on certain user-agents (GH-43) + "Content-Type": "text/html", + "Content-Length": 2 + }; + res.writeHead(200, this.headers(req, headers)); + res.end("ok"); + cleanup(); + }; + req.on("close", onClose); + if (!isBinary) + req.setEncoding("utf8"); + req.on("data", onData); + req.on("end", onEnd); + } + /** + * Processes the incoming data payload. + * + * @param {String} encoded payload + * @api private + */ + onData(data) { + debug('received "%s"', data); + const callback = (packet) => { + if ("close" === packet.type) { + debug("got xhr close packet"); + this.onClose(); + return false; + } + this.onPacket(packet); + }; + if (this.protocol === 3) { + this.parser.decodePayload(data, callback); + } else { + this.parser.decodePayload(data).forEach(callback); + } + } + /** + * Overrides onClose. + * + * @api private + */ + onClose() { + if (this.writable) { + this.send([{ type: "noop" }]); + } + super.onClose(); + } + /** + * Writes a packet payload. + * + * @param {Object} packet + * @api private + */ + send(packets) { + this.writable = false; + if (this.shouldClose) { + debug("appending close packet to payload"); + packets.push({ type: "close" }); + this.shouldClose(); + this.shouldClose = null; + } + const doWrite = (data) => { + const compress = packets.some((packet) => { + return packet.options && packet.options.compress; + }); + this.write(data, { compress }); + }; + if (this.protocol === 3) { + this.parser.encodePayload(packets, this.supportsBinary, doWrite); + } else { + this.parser.encodePayload(packets, doWrite); + } + } + /** + * Writes data as response to poll request. + * + * @param {String} data + * @param {Object} options + * @api private + */ + write(data, options) { + debug('writing "%s"', data); + this.doWrite(data, options, () => { + this.req.cleanup(); + }); + } + /** + * Performs the write. + * + * @api private + */ + doWrite(data, options, callback) { + const isString = typeof data === "string"; + const contentType = isString ? "text/plain; charset=UTF-8" : "application/octet-stream"; + const headers = { + "Content-Type": contentType + }; + const respond = (data2) => { + headers["Content-Length"] = "string" === typeof data2 ? Buffer.byteLength(data2) : data2.length; + this.res.writeHead(200, this.headers(this.req, headers)); + this.res.end(data2); + callback(); + }; + if (!this.httpCompression || !options.compress) { + respond(data); + return; + } + const len = isString ? Buffer.byteLength(data) : data.length; + if (len < this.httpCompression.threshold) { + respond(data); + return; + } + const encoding = accepts(this.req).encodings(["gzip", "deflate"]); + if (!encoding) { + respond(data); + return; + } + this.compress(data, encoding, (err, data2) => { + if (err) { + this.res.writeHead(500); + this.res.end(); + callback(err); + return; + } + headers["Content-Encoding"] = encoding; + respond(data2); + }); + } + /** + * Compresses data. + * + * @api private + */ + compress(data, encoding, callback) { + debug("compressing"); + const buffers = []; + let nread = 0; + compressionMethods[encoding](this.httpCompression).on("error", callback).on("data", function(chunk) { + buffers.push(chunk); + nread += chunk.length; + }).on("end", function() { + callback(null, Buffer.concat(buffers, nread)); + }).end(data); + } + /** + * Closes the transport. + * + * @api private + */ + doClose(fn) { + debug("closing"); + let closeTimeoutTimer; + if (this.dataReq) { + debug("aborting ongoing data request"); + this.dataReq.destroy(); + } + const onClose = () => { + clearTimeout(closeTimeoutTimer); + fn(); + this.onClose(); + }; + if (this.writable) { + debug("transport writable - closing right away"); + this.send([{ type: "close" }]); + onClose(); + } else if (this.discarded) { + debug("transport discarded - closing right away"); + onClose(); + } else { + debug("transport not writable - buffering orderly close"); + this.shouldClose = onClose; + closeTimeoutTimer = setTimeout(onClose, this.closeTimeout); + } + } + /** + * Returns headers for a response. + * + * @param {http.IncomingMessage} request + * @param {Object} extra headers + * @api private + */ + headers(req, headers) { + headers = headers || {}; + const ua = req.headers["user-agent"]; + if (ua && (~ua.indexOf(";MSIE") || ~ua.indexOf("Trident/"))) { + headers["X-XSS-Protection"] = "0"; + } + this.emit("headers", headers, req); + return headers; + } + }; + exports2.Polling = Polling; + } +}); + +// node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/transports/polling-jsonp.js +var require_polling_jsonp = __commonJS({ + "node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/transports/polling-jsonp.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.JSONP = void 0; + var polling_1 = require_polling(); + var qs = require("querystring"); + var rDoubleSlashes = /\\\\n/g; + var rSlashes = /(\\)?\\n/g; + var JSONP = class extends polling_1.Polling { + /** + * JSON-P polling transport. + * + * @api public + */ + constructor(req) { + super(req); + this.head = "___eio[" + (req._query.j || "").replace(/[^0-9]/g, "") + "]("; + this.foot = ");"; + } + /** + * Handles incoming data. + * Due to a bug in \n handling by browsers, we expect a escaped string. + * + * @api private + */ + onData(data) { + data = qs.parse(data).d; + if ("string" === typeof data) { + data = data.replace(rSlashes, function(match, slashes) { + return slashes ? match : "\n"; + }); + super.onData(data.replace(rDoubleSlashes, "\\n")); + } + } + /** + * Performs the write. + * + * @api private + */ + doWrite(data, options, callback) { + const js = JSON.stringify(data).replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029"); + data = this.head + js + this.foot; + super.doWrite(data, options, callback); + } + }; + exports2.JSONP = JSONP; + } +}); + +// node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/transports/websocket.js +var require_websocket = __commonJS({ + "node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/transports/websocket.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.WebSocket = void 0; + var transport_1 = require_transport(); + var debug_1 = require_src(); + var debug = (0, debug_1.default)("engine:ws"); + var WebSocket = class extends transport_1.Transport { + /** + * WebSocket transport + * + * @param {http.IncomingMessage} + * @api public + */ + constructor(req) { + super(req); + this.socket = req.websocket; + this.socket.on("message", (data, isBinary) => { + const message = isBinary ? data : data.toString(); + debug('received "%s"', message); + super.onData(message); + }); + this.socket.once("close", this.onClose.bind(this)); + this.socket.on("error", this.onError.bind(this)); + this.writable = true; + this.perMessageDeflate = null; + } + /** + * Transport name + * + * @api public + */ + get name() { + return "websocket"; + } + /** + * Advertise upgrade support. + * + * @api public + */ + get handlesUpgrades() { + return true; + } + /** + * Advertise framing support. + * + * @api public + */ + get supportsFraming() { + return true; + } + /** + * Writes a packet payload. + * + * @param {Array} packets + * @api private + */ + send(packets) { + this.writable = false; + for (let i = 0; i < packets.length; i++) { + const packet = packets[i]; + const isLast = i + 1 === packets.length; + const opts = {}; + if (packet.options) { + opts.compress = packet.options.compress; + } + const onSent = (err) => { + if (err) { + return this.onError("write error", err.stack); + } else if (isLast) { + this.writable = true; + this.emit("drain"); + } + }; + const send = (data) => { + if (this.perMessageDeflate) { + const len = "string" === typeof data ? Buffer.byteLength(data) : data.length; + if (len < this.perMessageDeflate.threshold) { + opts.compress = false; + } + } + debug('writing "%s"', data); + this.socket.send(data, opts, onSent); + }; + if (packet.options && typeof packet.options.wsPreEncoded === "string") { + send(packet.options.wsPreEncoded); + } else if (this._canSendPreEncodedFrame(packet)) { + this.socket._sender.sendFrame(packet.options.wsPreEncodedFrame, onSent); + } else { + this.parser.encodePacket(packet, this.supportsBinary, send); + } + } + } + /** + * Whether the encoding of the WebSocket frame can be skipped. + * @param packet + * @private + */ + _canSendPreEncodedFrame(packet) { + var _a, _b, _c; + return !this.perMessageDeflate && typeof ((_b = (_a = this.socket) === null || _a === void 0 ? void 0 : _a._sender) === null || _b === void 0 ? void 0 : _b.sendFrame) === "function" && ((_c = packet.options) === null || _c === void 0 ? void 0 : _c.wsPreEncodedFrame) !== void 0; + } + /** + * Closes the transport. + * + * @api private + */ + doClose(fn) { + debug("closing"); + this.socket.close(); + fn && fn(); + } + }; + exports2.WebSocket = WebSocket; + } +}); + +// node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/transports/webtransport.js +var require_webtransport = __commonJS({ + "node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/transports/webtransport.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.WebTransport = void 0; + var transport_1 = require_transport(); + var debug_1 = require_src(); + var engine_io_parser_1 = require_cjs(); + var debug = (0, debug_1.default)("engine:webtransport"); + var WebTransport = class extends transport_1.Transport { + constructor(session, stream, reader) { + super({ _query: { EIO: "4" } }); + this.session = session; + const transformStream = (0, engine_io_parser_1.createPacketEncoderStream)(); + transformStream.readable.pipeTo(stream.writable); + this.writer = transformStream.writable.getWriter(); + (async () => { + try { + while (true) { + const { value, done } = await reader.read(); + if (done) { + debug("session is closed"); + break; + } + debug("received chunk: %o", value); + this.onPacket(value); + } + } catch (e) { + debug("error while reading: %s", e.message); + } + })(); + session.closed.then(() => this.onClose()); + this.writable = true; + } + get name() { + return "webtransport"; + } + get supportsFraming() { + return true; + } + async send(packets) { + this.writable = false; + try { + for (let i = 0; i < packets.length; i++) { + const packet = packets[i]; + await this.writer.write(packet); + } + } catch (e) { + debug("error while writing: %s", e.message); + } + this.writable = true; + this.emit("drain"); + } + doClose(fn) { + debug("closing WebTransport session"); + this.session.close(); + fn && fn(); + } + }; + exports2.WebTransport = WebTransport; + } +}); + +// node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/transports/index.js +var require_transports = __commonJS({ + "node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/transports/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var polling_1 = require_polling(); + var polling_jsonp_1 = require_polling_jsonp(); + var websocket_1 = require_websocket(); + var webtransport_1 = require_webtransport(); + exports2.default = { + polling, + websocket: websocket_1.WebSocket, + webtransport: webtransport_1.WebTransport + }; + function polling(req) { + if ("string" === typeof req._query.j) { + return new polling_jsonp_1.JSONP(req); + } else { + return new polling_1.Polling(req); + } + } + polling.upgradesTo = ["websocket", "webtransport"]; + } +}); + +// node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/socket.js +var require_socket = __commonJS({ + "node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/socket.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Socket = void 0; + var events_1 = require("events"); + var debug_1 = require_src(); + var timers_1 = require("timers"); + var debug = (0, debug_1.default)("engine:socket"); + var Socket2 = class extends events_1.EventEmitter { + /** + * Client class (abstract). + * + * @api private + */ + constructor(id, server2, transport, req, protocol) { + super(); + this.id = id; + this.server = server2; + this.upgrading = false; + this.upgraded = false; + this.readyState = "opening"; + this.writeBuffer = []; + this.packetsFn = []; + this.sentCallbackFn = []; + this.cleanupFn = []; + this.request = req; + this.protocol = protocol; + if (req) { + if (req.websocket && req.websocket._socket) { + this.remoteAddress = req.websocket._socket.remoteAddress; + } else { + this.remoteAddress = req.connection.remoteAddress; + } + } else { + } + this.checkIntervalTimer = null; + this.upgradeTimeoutTimer = null; + this.pingTimeoutTimer = null; + this.pingIntervalTimer = null; + this.setTransport(transport); + this.onOpen(); + } + get readyState() { + return this._readyState; + } + set readyState(state) { + debug("readyState updated from %s to %s", this._readyState, state); + this._readyState = state; + } + /** + * Called upon transport considered open. + * + * @api private + */ + onOpen() { + this.readyState = "open"; + this.transport.sid = this.id; + this.sendPacket("open", JSON.stringify({ + sid: this.id, + upgrades: this.getAvailableUpgrades(), + pingInterval: this.server.opts.pingInterval, + pingTimeout: this.server.opts.pingTimeout, + maxPayload: this.server.opts.maxHttpBufferSize + })); + if (this.server.opts.initialPacket) { + this.sendPacket("message", this.server.opts.initialPacket); + } + this.emit("open"); + if (this.protocol === 3) { + this.resetPingTimeout(this.server.opts.pingInterval + this.server.opts.pingTimeout); + } else { + this.schedulePing(); + } + } + /** + * Called upon transport packet. + * + * @param {Object} packet + * @api private + */ + onPacket(packet) { + if ("open" !== this.readyState) { + return debug("packet received with closed socket"); + } + debug(`received packet ${packet.type}`); + this.emit("packet", packet); + this.resetPingTimeout(this.server.opts.pingInterval + this.server.opts.pingTimeout); + switch (packet.type) { + case "ping": + if (this.transport.protocol !== 3) { + this.onError("invalid heartbeat direction"); + return; + } + debug("got ping"); + this.sendPacket("pong"); + this.emit("heartbeat"); + break; + case "pong": + if (this.transport.protocol === 3) { + this.onError("invalid heartbeat direction"); + return; + } + debug("got pong"); + this.pingIntervalTimer.refresh(); + this.emit("heartbeat"); + break; + case "error": + this.onClose("parse error"); + break; + case "message": + this.emit("data", packet.data); + this.emit("message", packet.data); + break; + } + } + /** + * Called upon transport error. + * + * @param {Error} error object + * @api private + */ + onError(err) { + debug("transport error"); + this.onClose("transport error", err); + } + /** + * Pings client every `this.pingInterval` and expects response + * within `this.pingTimeout` or closes connection. + * + * @api private + */ + schedulePing() { + this.pingIntervalTimer = (0, timers_1.setTimeout)(() => { + debug("writing ping packet - expecting pong within %sms", this.server.opts.pingTimeout); + this.sendPacket("ping"); + this.resetPingTimeout(this.server.opts.pingTimeout); + }, this.server.opts.pingInterval); + } + /** + * Resets ping timeout. + * + * @api private + */ + resetPingTimeout(timeout) { + (0, timers_1.clearTimeout)(this.pingTimeoutTimer); + this.pingTimeoutTimer = (0, timers_1.setTimeout)(() => { + if (this.readyState === "closed") + return; + this.onClose("ping timeout"); + }, timeout); + } + /** + * Attaches handlers for the given transport. + * + * @param {Transport} transport + * @api private + */ + setTransport(transport) { + const onError = this.onError.bind(this); + const onPacket = this.onPacket.bind(this); + const flush = this.flush.bind(this); + const onClose = this.onClose.bind(this, "transport close"); + this.transport = transport; + this.transport.once("error", onError); + this.transport.on("packet", onPacket); + this.transport.on("drain", flush); + this.transport.once("close", onClose); + this.setupSendCallback(); + this.cleanupFn.push(function() { + transport.removeListener("error", onError); + transport.removeListener("packet", onPacket); + transport.removeListener("drain", flush); + transport.removeListener("close", onClose); + }); + } + /** + * Upgrades socket to the given transport + * + * @param {Transport} transport + * @api private + */ + maybeUpgrade(transport) { + debug('might upgrade socket transport from "%s" to "%s"', this.transport.name, transport.name); + this.upgrading = true; + this.upgradeTimeoutTimer = (0, timers_1.setTimeout)(() => { + debug("client did not complete upgrade - closing transport"); + cleanup(); + if ("open" === transport.readyState) { + transport.close(); + } + }, this.server.opts.upgradeTimeout); + const onPacket = (packet) => { + if ("ping" === packet.type && "probe" === packet.data) { + debug("got probe ping packet, sending pong"); + transport.send([{ type: "pong", data: "probe" }]); + this.emit("upgrading", transport); + clearInterval(this.checkIntervalTimer); + this.checkIntervalTimer = setInterval(check, 100); + } else if ("upgrade" === packet.type && this.readyState !== "closed") { + debug("got upgrade packet - upgrading"); + cleanup(); + this.transport.discard(); + this.upgraded = true; + this.clearTransport(); + this.setTransport(transport); + this.emit("upgrade", transport); + this.flush(); + if (this.readyState === "closing") { + transport.close(() => { + this.onClose("forced close"); + }); + } + } else { + cleanup(); + transport.close(); + } + }; + const check = () => { + if ("polling" === this.transport.name && this.transport.writable) { + debug("writing a noop packet to polling for fast upgrade"); + this.transport.send([{ type: "noop" }]); + } + }; + const cleanup = () => { + this.upgrading = false; + clearInterval(this.checkIntervalTimer); + this.checkIntervalTimer = null; + (0, timers_1.clearTimeout)(this.upgradeTimeoutTimer); + this.upgradeTimeoutTimer = null; + transport.removeListener("packet", onPacket); + transport.removeListener("close", onTransportClose); + transport.removeListener("error", onError); + this.removeListener("close", onClose); + }; + const onError = (err) => { + debug("client did not complete upgrade - %s", err); + cleanup(); + transport.close(); + transport = null; + }; + const onTransportClose = () => { + onError("transport closed"); + }; + const onClose = () => { + onError("socket closed"); + }; + transport.on("packet", onPacket); + transport.once("close", onTransportClose); + transport.once("error", onError); + this.once("close", onClose); + } + /** + * Clears listeners and timers associated with current transport. + * + * @api private + */ + clearTransport() { + let cleanup; + const toCleanUp = this.cleanupFn.length; + for (let i = 0; i < toCleanUp; i++) { + cleanup = this.cleanupFn.shift(); + cleanup(); + } + this.transport.on("error", function() { + debug("error triggered by discarded transport"); + }); + this.transport.close(); + (0, timers_1.clearTimeout)(this.pingTimeoutTimer); + } + /** + * Called upon transport considered closed. + * Possible reasons: `ping timeout`, `client error`, `parse error`, + * `transport error`, `server close`, `transport close` + */ + onClose(reason, description) { + if ("closed" !== this.readyState) { + this.readyState = "closed"; + (0, timers_1.clearTimeout)(this.pingIntervalTimer); + (0, timers_1.clearTimeout)(this.pingTimeoutTimer); + clearInterval(this.checkIntervalTimer); + this.checkIntervalTimer = null; + (0, timers_1.clearTimeout)(this.upgradeTimeoutTimer); + process.nextTick(() => { + this.writeBuffer = []; + }); + this.packetsFn = []; + this.sentCallbackFn = []; + this.clearTransport(); + this.emit("close", reason, description); + } + } + /** + * Setup and manage send callback + * + * @api private + */ + setupSendCallback() { + const onDrain = () => { + if (this.sentCallbackFn.length > 0) { + const seqFn = this.sentCallbackFn.splice(0, 1)[0]; + if ("function" === typeof seqFn) { + debug("executing send callback"); + seqFn(this.transport); + } else if (Array.isArray(seqFn)) { + debug("executing batch send callback"); + const l = seqFn.length; + let i = 0; + for (; i < l; i++) { + if ("function" === typeof seqFn[i]) { + seqFn[i](this.transport); + } + } + } + } + }; + this.transport.on("drain", onDrain); + this.cleanupFn.push(() => { + this.transport.removeListener("drain", onDrain); + }); + } + /** + * Sends a message packet. + * + * @param {Object} data + * @param {Object} options + * @param {Function} callback + * @return {Socket} for chaining + * @api public + */ + send(data, options, callback) { + this.sendPacket("message", data, options, callback); + return this; + } + /** + * Alias of {@link send}. + * + * @param data + * @param options + * @param callback + */ + write(data, options, callback) { + this.sendPacket("message", data, options, callback); + return this; + } + /** + * Sends a packet. + * + * @param {String} type - packet type + * @param {String} data + * @param {Object} options + * @param {Function} callback + * + * @api private + */ + sendPacket(type, data, options = {}, callback) { + if ("function" === typeof options) { + callback = options; + options = {}; + } + if ("closing" !== this.readyState && "closed" !== this.readyState) { + debug('sending packet "%s" (%s)', type, data); + options.compress = options.compress !== false; + const packet = { + type, + options + }; + if (data) + packet.data = data; + this.emit("packetCreate", packet); + this.writeBuffer.push(packet); + if (callback) + this.packetsFn.push(callback); + this.flush(); + } + } + /** + * Attempts to flush the packets buffer. + * + * @api private + */ + flush() { + if ("closed" !== this.readyState && this.transport.writable && this.writeBuffer.length) { + debug("flushing buffer to transport"); + this.emit("flush", this.writeBuffer); + this.server.emit("flush", this, this.writeBuffer); + const wbuf = this.writeBuffer; + this.writeBuffer = []; + if (!this.transport.supportsFraming) { + this.sentCallbackFn.push(this.packetsFn); + } else { + this.sentCallbackFn.push.apply(this.sentCallbackFn, this.packetsFn); + } + this.packetsFn = []; + this.transport.send(wbuf); + this.emit("drain"); + this.server.emit("drain", this); + } + } + /** + * Get available upgrades for this socket. + * + * @api private + */ + getAvailableUpgrades() { + const availableUpgrades = []; + const allUpgrades = this.server.upgrades(this.transport.name); + let i = 0; + const l = allUpgrades.length; + for (; i < l; ++i) { + const upg = allUpgrades[i]; + if (this.server.opts.transports.indexOf(upg) !== -1) { + availableUpgrades.push(upg); + } + } + return availableUpgrades; + } + /** + * Closes the socket and underlying transport. + * + * @param {Boolean} discard - optional, discard the transport + * @return {Socket} for chaining + * @api public + */ + close(discard) { + if ("open" !== this.readyState) + return; + this.readyState = "closing"; + if (this.writeBuffer.length) { + debug("there are %d remaining packets in the buffer, waiting for the 'drain' event", this.writeBuffer.length); + this.once("drain", () => { + debug("all packets have been sent, closing the transport"); + this.closeTransport(discard); + }); + return; + } + debug("the buffer is empty, closing the transport right away", discard); + this.closeTransport(discard); + } + /** + * Closes the underlying transport. + * + * @param {Boolean} discard + * @api private + */ + closeTransport(discard) { + debug("closing the transport (discard? %s)", discard); + if (discard) + this.transport.discard(); + this.transport.close(this.onClose.bind(this, "forced close")); + } + }; + exports2.Socket = Socket2; + } +}); + +// node_modules/.pnpm/cookie@0.4.2/node_modules/cookie/index.js +var require_cookie = __commonJS({ + "node_modules/.pnpm/cookie@0.4.2/node_modules/cookie/index.js"(exports2) { + "use strict"; + exports2.parse = parse; + exports2.serialize = serialize; + var decode = decodeURIComponent; + var encode = encodeURIComponent; + var fieldContentRegExp = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/; + function parse(str, options) { + if (typeof str !== "string") { + throw new TypeError("argument str must be a string"); + } + var obj = {}; + var opt = options || {}; + var pairs = str.split(";"); + var dec = opt.decode || decode; + for (var i = 0; i < pairs.length; i++) { + var pair = pairs[i]; + var index = pair.indexOf("="); + if (index < 0) { + continue; + } + var key = pair.substring(0, index).trim(); + if (void 0 == obj[key]) { + var val = pair.substring(index + 1, pair.length).trim(); + if (val[0] === '"') { + val = val.slice(1, -1); + } + obj[key] = tryDecode(val, dec); + } + } + return obj; + } + function serialize(name, val, options) { + var opt = options || {}; + var enc = opt.encode || encode; + if (typeof enc !== "function") { + throw new TypeError("option encode is invalid"); + } + if (!fieldContentRegExp.test(name)) { + throw new TypeError("argument name is invalid"); + } + var value = enc(val); + if (value && !fieldContentRegExp.test(value)) { + throw new TypeError("argument val is invalid"); + } + var str = name + "=" + value; + if (null != opt.maxAge) { + var maxAge = opt.maxAge - 0; + if (isNaN(maxAge) || !isFinite(maxAge)) { + throw new TypeError("option maxAge is invalid"); + } + str += "; Max-Age=" + Math.floor(maxAge); + } + if (opt.domain) { + if (!fieldContentRegExp.test(opt.domain)) { + throw new TypeError("option domain is invalid"); + } + str += "; Domain=" + opt.domain; + } + if (opt.path) { + if (!fieldContentRegExp.test(opt.path)) { + throw new TypeError("option path is invalid"); + } + str += "; Path=" + opt.path; + } + if (opt.expires) { + if (typeof opt.expires.toUTCString !== "function") { + throw new TypeError("option expires is invalid"); + } + str += "; Expires=" + opt.expires.toUTCString(); + } + if (opt.httpOnly) { + str += "; HttpOnly"; + } + if (opt.secure) { + str += "; Secure"; + } + if (opt.sameSite) { + var sameSite = typeof opt.sameSite === "string" ? opt.sameSite.toLowerCase() : opt.sameSite; + switch (sameSite) { + case true: + str += "; SameSite=Strict"; + break; + case "lax": + str += "; SameSite=Lax"; + break; + case "strict": + str += "; SameSite=Strict"; + break; + case "none": + str += "; SameSite=None"; + break; + default: + throw new TypeError("option sameSite is invalid"); + } + } + return str; + } + function tryDecode(str, decode2) { + try { + return decode2(str); + } catch (e) { + return str; + } + } + } +}); + +// node_modules/.pnpm/ws@8.11.0/node_modules/ws/lib/constants.js +var require_constants = __commonJS({ + "node_modules/.pnpm/ws@8.11.0/node_modules/ws/lib/constants.js"(exports2, module2) { + "use strict"; + module2.exports = { + BINARY_TYPES: ["nodebuffer", "arraybuffer", "fragments"], + EMPTY_BUFFER: Buffer.alloc(0), + GUID: "258EAFA5-E914-47DA-95CA-C5AB0DC85B11", + kForOnEventAttribute: Symbol("kIsForOnEventAttribute"), + kListener: Symbol("kListener"), + kStatusCode: Symbol("status-code"), + kWebSocket: Symbol("websocket"), + NOOP: () => { + } + }; + } +}); + +// node_modules/.pnpm/ws@8.11.0/node_modules/ws/lib/buffer-util.js +var require_buffer_util = __commonJS({ + "node_modules/.pnpm/ws@8.11.0/node_modules/ws/lib/buffer-util.js"(exports2, module2) { + "use strict"; + var { EMPTY_BUFFER } = require_constants(); + function concat(list, totalLength) { + if (list.length === 0) + return EMPTY_BUFFER; + if (list.length === 1) + return list[0]; + const target = Buffer.allocUnsafe(totalLength); + let offset = 0; + for (let i = 0; i < list.length; i++) { + const buf = list[i]; + target.set(buf, offset); + offset += buf.length; + } + if (offset < totalLength) + return target.slice(0, offset); + return target; + } + function _mask(source2, mask, output, offset, length) { + for (let i = 0; i < length; i++) { + output[offset + i] = source2[i] ^ mask[i & 3]; + } + } + function _unmask(buffer, mask) { + for (let i = 0; i < buffer.length; i++) { + buffer[i] ^= mask[i & 3]; + } + } + function toArrayBuffer(buf) { + if (buf.byteLength === buf.buffer.byteLength) { + return buf.buffer; + } + return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + } + function toBuffer(data) { + toBuffer.readOnly = true; + if (Buffer.isBuffer(data)) + return data; + let buf; + if (data instanceof ArrayBuffer) { + buf = Buffer.from(data); + } else if (ArrayBuffer.isView(data)) { + buf = Buffer.from(data.buffer, data.byteOffset, data.byteLength); + } else { + buf = Buffer.from(data); + toBuffer.readOnly = false; + } + return buf; + } + module2.exports = { + concat, + mask: _mask, + toArrayBuffer, + toBuffer, + unmask: _unmask + }; + if (!process.env.WS_NO_BUFFER_UTIL) { + try { + const bufferUtil = require("bufferutil"); + module2.exports.mask = function(source2, mask, output, offset, length) { + if (length < 48) + _mask(source2, mask, output, offset, length); + else + bufferUtil.mask(source2, mask, output, offset, length); + }; + module2.exports.unmask = function(buffer, mask) { + if (buffer.length < 32) + _unmask(buffer, mask); + else + bufferUtil.unmask(buffer, mask); + }; + } catch (e) { + } + } + } +}); + +// node_modules/.pnpm/ws@8.11.0/node_modules/ws/lib/limiter.js +var require_limiter = __commonJS({ + "node_modules/.pnpm/ws@8.11.0/node_modules/ws/lib/limiter.js"(exports2, module2) { + "use strict"; + var kDone = Symbol("kDone"); + var kRun = Symbol("kRun"); + var Limiter = class { + /** + * Creates a new `Limiter`. + * + * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed + * to run concurrently + */ + constructor(concurrency) { + this[kDone] = () => { + this.pending--; + this[kRun](); + }; + this.concurrency = concurrency || Infinity; + this.jobs = []; + this.pending = 0; + } + /** + * Adds a job to the queue. + * + * @param {Function} job The job to run + * @public + */ + add(job) { + this.jobs.push(job); + this[kRun](); + } + /** + * Removes a job from the queue and runs it if possible. + * + * @private + */ + [kRun]() { + if (this.pending === this.concurrency) + return; + if (this.jobs.length) { + const job = this.jobs.shift(); + this.pending++; + job(this[kDone]); + } + } + }; + module2.exports = Limiter; + } +}); + +// node_modules/.pnpm/ws@8.11.0/node_modules/ws/lib/permessage-deflate.js +var require_permessage_deflate = __commonJS({ + "node_modules/.pnpm/ws@8.11.0/node_modules/ws/lib/permessage-deflate.js"(exports2, module2) { + "use strict"; + var zlib = require("zlib"); + var bufferUtil = require_buffer_util(); + var Limiter = require_limiter(); + var { kStatusCode } = require_constants(); + var TRAILER = Buffer.from([0, 0, 255, 255]); + var kPerMessageDeflate = Symbol("permessage-deflate"); + var kTotalLength = Symbol("total-length"); + var kCallback = Symbol("callback"); + var kBuffers = Symbol("buffers"); + var kError = Symbol("error"); + var zlibLimiter; + var PerMessageDeflate = class { + /** + * Creates a PerMessageDeflate instance. + * + * @param {Object} [options] Configuration options + * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support + * for, or request, a custom client window size + * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/ + * acknowledge disabling of client context takeover + * @param {Number} [options.concurrencyLimit=10] The number of concurrent + * calls to zlib + * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the + * use of a custom server window size + * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept + * disabling of server context takeover + * @param {Number} [options.threshold=1024] Size (in bytes) below which + * messages should not be compressed if context takeover is disabled + * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on + * deflate + * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on + * inflate + * @param {Boolean} [isServer=false] Create the instance in either server or + * client mode + * @param {Number} [maxPayload=0] The maximum allowed message length + */ + constructor(options, isServer, maxPayload) { + this._maxPayload = maxPayload | 0; + this._options = options || {}; + this._threshold = this._options.threshold !== void 0 ? this._options.threshold : 1024; + this._isServer = !!isServer; + this._deflate = null; + this._inflate = null; + this.params = null; + if (!zlibLimiter) { + const concurrency = this._options.concurrencyLimit !== void 0 ? this._options.concurrencyLimit : 10; + zlibLimiter = new Limiter(concurrency); + } + } + /** + * @type {String} + */ + static get extensionName() { + return "permessage-deflate"; + } + /** + * Create an extension negotiation offer. + * + * @return {Object} Extension parameters + * @public + */ + offer() { + const params = {}; + if (this._options.serverNoContextTakeover) { + params.server_no_context_takeover = true; + } + if (this._options.clientNoContextTakeover) { + params.client_no_context_takeover = true; + } + if (this._options.serverMaxWindowBits) { + params.server_max_window_bits = this._options.serverMaxWindowBits; + } + if (this._options.clientMaxWindowBits) { + params.client_max_window_bits = this._options.clientMaxWindowBits; + } else if (this._options.clientMaxWindowBits == null) { + params.client_max_window_bits = true; + } + return params; + } + /** + * Accept an extension negotiation offer/response. + * + * @param {Array} configurations The extension negotiation offers/reponse + * @return {Object} Accepted configuration + * @public + */ + accept(configurations) { + configurations = this.normalizeParams(configurations); + this.params = this._isServer ? this.acceptAsServer(configurations) : this.acceptAsClient(configurations); + return this.params; + } + /** + * Releases all resources used by the extension. + * + * @public + */ + cleanup() { + if (this._inflate) { + this._inflate.close(); + this._inflate = null; + } + if (this._deflate) { + const callback = this._deflate[kCallback]; + this._deflate.close(); + this._deflate = null; + if (callback) { + callback( + new Error( + "The deflate stream was closed while data was being processed" + ) + ); + } + } + } + /** + * Accept an extension negotiation offer. + * + * @param {Array} offers The extension negotiation offers + * @return {Object} Accepted configuration + * @private + */ + acceptAsServer(offers) { + const opts = this._options; + const accepted = offers.find((params) => { + if (opts.serverNoContextTakeover === false && params.server_no_context_takeover || params.server_max_window_bits && (opts.serverMaxWindowBits === false || typeof opts.serverMaxWindowBits === "number" && opts.serverMaxWindowBits > params.server_max_window_bits) || typeof opts.clientMaxWindowBits === "number" && !params.client_max_window_bits) { + return false; + } + return true; + }); + if (!accepted) { + throw new Error("None of the extension offers can be accepted"); + } + if (opts.serverNoContextTakeover) { + accepted.server_no_context_takeover = true; + } + if (opts.clientNoContextTakeover) { + accepted.client_no_context_takeover = true; + } + if (typeof opts.serverMaxWindowBits === "number") { + accepted.server_max_window_bits = opts.serverMaxWindowBits; + } + if (typeof opts.clientMaxWindowBits === "number") { + accepted.client_max_window_bits = opts.clientMaxWindowBits; + } else if (accepted.client_max_window_bits === true || opts.clientMaxWindowBits === false) { + delete accepted.client_max_window_bits; + } + return accepted; + } + /** + * Accept the extension negotiation response. + * + * @param {Array} response The extension negotiation response + * @return {Object} Accepted configuration + * @private + */ + acceptAsClient(response) { + const params = response[0]; + if (this._options.clientNoContextTakeover === false && params.client_no_context_takeover) { + throw new Error('Unexpected parameter "client_no_context_takeover"'); + } + if (!params.client_max_window_bits) { + if (typeof this._options.clientMaxWindowBits === "number") { + params.client_max_window_bits = this._options.clientMaxWindowBits; + } + } else if (this._options.clientMaxWindowBits === false || typeof this._options.clientMaxWindowBits === "number" && params.client_max_window_bits > this._options.clientMaxWindowBits) { + throw new Error( + 'Unexpected or invalid parameter "client_max_window_bits"' + ); + } + return params; + } + /** + * Normalize parameters. + * + * @param {Array} configurations The extension negotiation offers/reponse + * @return {Array} The offers/response with normalized parameters + * @private + */ + normalizeParams(configurations) { + configurations.forEach((params) => { + Object.keys(params).forEach((key) => { + let value = params[key]; + if (value.length > 1) { + throw new Error(`Parameter "${key}" must have only a single value`); + } + value = value[0]; + if (key === "client_max_window_bits") { + if (value !== true) { + const num = +value; + if (!Number.isInteger(num) || num < 8 || num > 15) { + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); + } + value = num; + } else if (!this._isServer) { + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); + } + } else if (key === "server_max_window_bits") { + const num = +value; + if (!Number.isInteger(num) || num < 8 || num > 15) { + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); + } + value = num; + } else if (key === "client_no_context_takeover" || key === "server_no_context_takeover") { + if (value !== true) { + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); + } + } else { + throw new Error(`Unknown parameter "${key}"`); + } + params[key] = value; + }); + }); + return configurations; + } + /** + * Decompress data. Concurrency limited. + * + * @param {Buffer} data Compressed data + * @param {Boolean} fin Specifies whether or not this is the last fragment + * @param {Function} callback Callback + * @public + */ + decompress(data, fin, callback) { + zlibLimiter.add((done) => { + this._decompress(data, fin, (err, result) => { + done(); + callback(err, result); + }); + }); + } + /** + * Compress data. Concurrency limited. + * + * @param {(Buffer|String)} data Data to compress + * @param {Boolean} fin Specifies whether or not this is the last fragment + * @param {Function} callback Callback + * @public + */ + compress(data, fin, callback) { + zlibLimiter.add((done) => { + this._compress(data, fin, (err, result) => { + done(); + callback(err, result); + }); + }); + } + /** + * Decompress data. + * + * @param {Buffer} data Compressed data + * @param {Boolean} fin Specifies whether or not this is the last fragment + * @param {Function} callback Callback + * @private + */ + _decompress(data, fin, callback) { + const endpoint = this._isServer ? "client" : "server"; + if (!this._inflate) { + const key = `${endpoint}_max_window_bits`; + const windowBits = typeof this.params[key] !== "number" ? zlib.Z_DEFAULT_WINDOWBITS : this.params[key]; + this._inflate = zlib.createInflateRaw({ + ...this._options.zlibInflateOptions, + windowBits + }); + this._inflate[kPerMessageDeflate] = this; + this._inflate[kTotalLength] = 0; + this._inflate[kBuffers] = []; + this._inflate.on("error", inflateOnError); + this._inflate.on("data", inflateOnData); + } + this._inflate[kCallback] = callback; + this._inflate.write(data); + if (fin) + this._inflate.write(TRAILER); + this._inflate.flush(() => { + const err = this._inflate[kError]; + if (err) { + this._inflate.close(); + this._inflate = null; + callback(err); + return; + } + const data2 = bufferUtil.concat( + this._inflate[kBuffers], + this._inflate[kTotalLength] + ); + if (this._inflate._readableState.endEmitted) { + this._inflate.close(); + this._inflate = null; + } else { + this._inflate[kTotalLength] = 0; + this._inflate[kBuffers] = []; + if (fin && this.params[`${endpoint}_no_context_takeover`]) { + this._inflate.reset(); + } + } + callback(null, data2); + }); + } + /** + * Compress data. + * + * @param {(Buffer|String)} data Data to compress + * @param {Boolean} fin Specifies whether or not this is the last fragment + * @param {Function} callback Callback + * @private + */ + _compress(data, fin, callback) { + const endpoint = this._isServer ? "server" : "client"; + if (!this._deflate) { + const key = `${endpoint}_max_window_bits`; + const windowBits = typeof this.params[key] !== "number" ? zlib.Z_DEFAULT_WINDOWBITS : this.params[key]; + this._deflate = zlib.createDeflateRaw({ + ...this._options.zlibDeflateOptions, + windowBits + }); + this._deflate[kTotalLength] = 0; + this._deflate[kBuffers] = []; + this._deflate.on("data", deflateOnData); + } + this._deflate[kCallback] = callback; + this._deflate.write(data); + this._deflate.flush(zlib.Z_SYNC_FLUSH, () => { + if (!this._deflate) { + return; + } + let data2 = bufferUtil.concat( + this._deflate[kBuffers], + this._deflate[kTotalLength] + ); + if (fin) + data2 = data2.slice(0, data2.length - 4); + this._deflate[kCallback] = null; + this._deflate[kTotalLength] = 0; + this._deflate[kBuffers] = []; + if (fin && this.params[`${endpoint}_no_context_takeover`]) { + this._deflate.reset(); + } + callback(null, data2); + }); + } + }; + module2.exports = PerMessageDeflate; + function deflateOnData(chunk) { + this[kBuffers].push(chunk); + this[kTotalLength] += chunk.length; + } + function inflateOnData(chunk) { + this[kTotalLength] += chunk.length; + if (this[kPerMessageDeflate]._maxPayload < 1 || this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload) { + this[kBuffers].push(chunk); + return; + } + this[kError] = new RangeError("Max payload size exceeded"); + this[kError].code = "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"; + this[kError][kStatusCode] = 1009; + this.removeListener("data", inflateOnData); + this.reset(); + } + function inflateOnError(err) { + this[kPerMessageDeflate]._inflate = null; + err[kStatusCode] = 1007; + this[kCallback](err); + } + } +}); + +// node_modules/.pnpm/ws@8.11.0/node_modules/ws/lib/validation.js +var require_validation = __commonJS({ + "node_modules/.pnpm/ws@8.11.0/node_modules/ws/lib/validation.js"(exports2, module2) { + "use strict"; + var tokenChars = [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // 0 - 15 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // 16 - 31 + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + 0, + // 32 - 47 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + // 48 - 63 + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // 64 - 79 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 1, + 1, + // 80 - 95 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // 96 - 111 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 0 + // 112 - 127 + ]; + function isValidStatusCode(code) { + return code >= 1e3 && code <= 1014 && code !== 1004 && code !== 1005 && code !== 1006 || code >= 3e3 && code <= 4999; + } + function _isValidUTF8(buf) { + const len = buf.length; + let i = 0; + while (i < len) { + if ((buf[i] & 128) === 0) { + i++; + } else if ((buf[i] & 224) === 192) { + if (i + 1 === len || (buf[i + 1] & 192) !== 128 || (buf[i] & 254) === 192) { + return false; + } + i += 2; + } else if ((buf[i] & 240) === 224) { + if (i + 2 >= len || (buf[i + 1] & 192) !== 128 || (buf[i + 2] & 192) !== 128 || buf[i] === 224 && (buf[i + 1] & 224) === 128 || // Overlong + buf[i] === 237 && (buf[i + 1] & 224) === 160) { + return false; + } + i += 3; + } else if ((buf[i] & 248) === 240) { + if (i + 3 >= len || (buf[i + 1] & 192) !== 128 || (buf[i + 2] & 192) !== 128 || (buf[i + 3] & 192) !== 128 || buf[i] === 240 && (buf[i + 1] & 240) === 128 || // Overlong + buf[i] === 244 && buf[i + 1] > 143 || buf[i] > 244) { + return false; + } + i += 4; + } else { + return false; + } + } + return true; + } + module2.exports = { + isValidStatusCode, + isValidUTF8: _isValidUTF8, + tokenChars + }; + if (!process.env.WS_NO_UTF_8_VALIDATE) { + try { + const isValidUTF8 = require("utf-8-validate"); + module2.exports.isValidUTF8 = function(buf) { + return buf.length < 150 ? _isValidUTF8(buf) : isValidUTF8(buf); + }; + } catch (e) { + } + } + } +}); + +// node_modules/.pnpm/ws@8.11.0/node_modules/ws/lib/receiver.js +var require_receiver = __commonJS({ + "node_modules/.pnpm/ws@8.11.0/node_modules/ws/lib/receiver.js"(exports2, module2) { + "use strict"; + var { Writable } = require("stream"); + var PerMessageDeflate = require_permessage_deflate(); + var { + BINARY_TYPES, + EMPTY_BUFFER, + kStatusCode, + kWebSocket + } = require_constants(); + var { concat, toArrayBuffer, unmask } = require_buffer_util(); + var { isValidStatusCode, isValidUTF8 } = require_validation(); + var GET_INFO = 0; + var GET_PAYLOAD_LENGTH_16 = 1; + var GET_PAYLOAD_LENGTH_64 = 2; + var GET_MASK = 3; + var GET_DATA = 4; + var INFLATING = 5; + var Receiver = class extends Writable { + /** + * Creates a Receiver instance. + * + * @param {Object} [options] Options object + * @param {String} [options.binaryType=nodebuffer] The type for binary data + * @param {Object} [options.extensions] An object containing the negotiated + * extensions + * @param {Boolean} [options.isServer=false] Specifies whether to operate in + * client or server mode + * @param {Number} [options.maxPayload=0] The maximum allowed message length + * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or + * not to skip UTF-8 validation for text and close messages + */ + constructor(options = {}) { + super(); + this._binaryType = options.binaryType || BINARY_TYPES[0]; + this._extensions = options.extensions || {}; + this._isServer = !!options.isServer; + this._maxPayload = options.maxPayload | 0; + this._skipUTF8Validation = !!options.skipUTF8Validation; + this[kWebSocket] = void 0; + this._bufferedBytes = 0; + this._buffers = []; + this._compressed = false; + this._payloadLength = 0; + this._mask = void 0; + this._fragmented = 0; + this._masked = false; + this._fin = false; + this._opcode = 0; + this._totalPayloadLength = 0; + this._messageLength = 0; + this._fragments = []; + this._state = GET_INFO; + this._loop = false; + } + /** + * Implements `Writable.prototype._write()`. + * + * @param {Buffer} chunk The chunk of data to write + * @param {String} encoding The character encoding of `chunk` + * @param {Function} cb Callback + * @private + */ + _write(chunk, encoding, cb) { + if (this._opcode === 8 && this._state == GET_INFO) + return cb(); + this._bufferedBytes += chunk.length; + this._buffers.push(chunk); + this.startLoop(cb); + } + /** + * Consumes `n` bytes from the buffered data. + * + * @param {Number} n The number of bytes to consume + * @return {Buffer} The consumed bytes + * @private + */ + consume(n) { + this._bufferedBytes -= n; + if (n === this._buffers[0].length) + return this._buffers.shift(); + if (n < this._buffers[0].length) { + const buf = this._buffers[0]; + this._buffers[0] = buf.slice(n); + return buf.slice(0, n); + } + const dst = Buffer.allocUnsafe(n); + do { + const buf = this._buffers[0]; + const offset = dst.length - n; + if (n >= buf.length) { + dst.set(this._buffers.shift(), offset); + } else { + dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset); + this._buffers[0] = buf.slice(n); + } + n -= buf.length; + } while (n > 0); + return dst; + } + /** + * Starts the parsing loop. + * + * @param {Function} cb Callback + * @private + */ + startLoop(cb) { + let err; + this._loop = true; + do { + switch (this._state) { + case GET_INFO: + err = this.getInfo(); + break; + case GET_PAYLOAD_LENGTH_16: + err = this.getPayloadLength16(); + break; + case GET_PAYLOAD_LENGTH_64: + err = this.getPayloadLength64(); + break; + case GET_MASK: + this.getMask(); + break; + case GET_DATA: + err = this.getData(cb); + break; + default: + this._loop = false; + return; + } + } while (this._loop); + cb(err); + } + /** + * Reads the first two bytes of a frame. + * + * @return {(RangeError|undefined)} A possible error + * @private + */ + getInfo() { + if (this._bufferedBytes < 2) { + this._loop = false; + return; + } + const buf = this.consume(2); + if ((buf[0] & 48) !== 0) { + this._loop = false; + return error( + RangeError, + "RSV2 and RSV3 must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_RSV_2_3" + ); + } + const compressed = (buf[0] & 64) === 64; + if (compressed && !this._extensions[PerMessageDeflate.extensionName]) { + this._loop = false; + return error( + RangeError, + "RSV1 must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_RSV_1" + ); + } + this._fin = (buf[0] & 128) === 128; + this._opcode = buf[0] & 15; + this._payloadLength = buf[1] & 127; + if (this._opcode === 0) { + if (compressed) { + this._loop = false; + return error( + RangeError, + "RSV1 must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_RSV_1" + ); + } + if (!this._fragmented) { + this._loop = false; + return error( + RangeError, + "invalid opcode 0", + true, + 1002, + "WS_ERR_INVALID_OPCODE" + ); + } + this._opcode = this._fragmented; + } else if (this._opcode === 1 || this._opcode === 2) { + if (this._fragmented) { + this._loop = false; + return error( + RangeError, + `invalid opcode ${this._opcode}`, + true, + 1002, + "WS_ERR_INVALID_OPCODE" + ); + } + this._compressed = compressed; + } else if (this._opcode > 7 && this._opcode < 11) { + if (!this._fin) { + this._loop = false; + return error( + RangeError, + "FIN must be set", + true, + 1002, + "WS_ERR_EXPECTED_FIN" + ); + } + if (compressed) { + this._loop = false; + return error( + RangeError, + "RSV1 must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_RSV_1" + ); + } + if (this._payloadLength > 125) { + this._loop = false; + return error( + RangeError, + `invalid payload length ${this._payloadLength}`, + true, + 1002, + "WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH" + ); + } + } else { + this._loop = false; + return error( + RangeError, + `invalid opcode ${this._opcode}`, + true, + 1002, + "WS_ERR_INVALID_OPCODE" + ); + } + if (!this._fin && !this._fragmented) + this._fragmented = this._opcode; + this._masked = (buf[1] & 128) === 128; + if (this._isServer) { + if (!this._masked) { + this._loop = false; + return error( + RangeError, + "MASK must be set", + true, + 1002, + "WS_ERR_EXPECTED_MASK" + ); + } + } else if (this._masked) { + this._loop = false; + return error( + RangeError, + "MASK must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_MASK" + ); + } + if (this._payloadLength === 126) + this._state = GET_PAYLOAD_LENGTH_16; + else if (this._payloadLength === 127) + this._state = GET_PAYLOAD_LENGTH_64; + else + return this.haveLength(); + } + /** + * Gets extended payload length (7+16). + * + * @return {(RangeError|undefined)} A possible error + * @private + */ + getPayloadLength16() { + if (this._bufferedBytes < 2) { + this._loop = false; + return; + } + this._payloadLength = this.consume(2).readUInt16BE(0); + return this.haveLength(); + } + /** + * Gets extended payload length (7+64). + * + * @return {(RangeError|undefined)} A possible error + * @private + */ + getPayloadLength64() { + if (this._bufferedBytes < 8) { + this._loop = false; + return; + } + const buf = this.consume(8); + const num = buf.readUInt32BE(0); + if (num > Math.pow(2, 53 - 32) - 1) { + this._loop = false; + return error( + RangeError, + "Unsupported WebSocket frame: payload length > 2^53 - 1", + false, + 1009, + "WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH" + ); + } + this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4); + return this.haveLength(); + } + /** + * Payload length has been read. + * + * @return {(RangeError|undefined)} A possible error + * @private + */ + haveLength() { + if (this._payloadLength && this._opcode < 8) { + this._totalPayloadLength += this._payloadLength; + if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) { + this._loop = false; + return error( + RangeError, + "Max payload size exceeded", + false, + 1009, + "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH" + ); + } + } + if (this._masked) + this._state = GET_MASK; + else + this._state = GET_DATA; + } + /** + * Reads mask bytes. + * + * @private + */ + getMask() { + if (this._bufferedBytes < 4) { + this._loop = false; + return; + } + this._mask = this.consume(4); + this._state = GET_DATA; + } + /** + * Reads data bytes. + * + * @param {Function} cb Callback + * @return {(Error|RangeError|undefined)} A possible error + * @private + */ + getData(cb) { + let data = EMPTY_BUFFER; + if (this._payloadLength) { + if (this._bufferedBytes < this._payloadLength) { + this._loop = false; + return; + } + data = this.consume(this._payloadLength); + if (this._masked && (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0) { + unmask(data, this._mask); + } + } + if (this._opcode > 7) + return this.controlMessage(data); + if (this._compressed) { + this._state = INFLATING; + this.decompress(data, cb); + return; + } + if (data.length) { + this._messageLength = this._totalPayloadLength; + this._fragments.push(data); + } + return this.dataMessage(); + } + /** + * Decompresses data. + * + * @param {Buffer} data Compressed data + * @param {Function} cb Callback + * @private + */ + decompress(data, cb) { + const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName]; + perMessageDeflate.decompress(data, this._fin, (err, buf) => { + if (err) + return cb(err); + if (buf.length) { + this._messageLength += buf.length; + if (this._messageLength > this._maxPayload && this._maxPayload > 0) { + return cb( + error( + RangeError, + "Max payload size exceeded", + false, + 1009, + "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH" + ) + ); + } + this._fragments.push(buf); + } + const er = this.dataMessage(); + if (er) + return cb(er); + this.startLoop(cb); + }); + } + /** + * Handles a data message. + * + * @return {(Error|undefined)} A possible error + * @private + */ + dataMessage() { + if (this._fin) { + const messageLength = this._messageLength; + const fragments = this._fragments; + this._totalPayloadLength = 0; + this._messageLength = 0; + this._fragmented = 0; + this._fragments = []; + if (this._opcode === 2) { + let data; + if (this._binaryType === "nodebuffer") { + data = concat(fragments, messageLength); + } else if (this._binaryType === "arraybuffer") { + data = toArrayBuffer(concat(fragments, messageLength)); + } else { + data = fragments; + } + this.emit("message", data, true); + } else { + const buf = concat(fragments, messageLength); + if (!this._skipUTF8Validation && !isValidUTF8(buf)) { + this._loop = false; + return error( + Error, + "invalid UTF-8 sequence", + true, + 1007, + "WS_ERR_INVALID_UTF8" + ); + } + this.emit("message", buf, false); + } + } + this._state = GET_INFO; + } + /** + * Handles a control message. + * + * @param {Buffer} data Data to handle + * @return {(Error|RangeError|undefined)} A possible error + * @private + */ + controlMessage(data) { + if (this._opcode === 8) { + this._loop = false; + if (data.length === 0) { + this.emit("conclude", 1005, EMPTY_BUFFER); + this.end(); + } else if (data.length === 1) { + return error( + RangeError, + "invalid payload length 1", + true, + 1002, + "WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH" + ); + } else { + const code = data.readUInt16BE(0); + if (!isValidStatusCode(code)) { + return error( + RangeError, + `invalid status code ${code}`, + true, + 1002, + "WS_ERR_INVALID_CLOSE_CODE" + ); + } + const buf = data.slice(2); + if (!this._skipUTF8Validation && !isValidUTF8(buf)) { + return error( + Error, + "invalid UTF-8 sequence", + true, + 1007, + "WS_ERR_INVALID_UTF8" + ); + } + this.emit("conclude", code, buf); + this.end(); + } + } else if (this._opcode === 9) { + this.emit("ping", data); + } else { + this.emit("pong", data); + } + this._state = GET_INFO; + } + }; + module2.exports = Receiver; + function error(ErrorCtor, message, prefix, statusCode, errorCode) { + const err = new ErrorCtor( + prefix ? `Invalid WebSocket frame: ${message}` : message + ); + Error.captureStackTrace(err, error); + err.code = errorCode; + err[kStatusCode] = statusCode; + return err; + } + } +}); + +// node_modules/.pnpm/ws@8.11.0/node_modules/ws/lib/sender.js +var require_sender = __commonJS({ + "node_modules/.pnpm/ws@8.11.0/node_modules/ws/lib/sender.js"(exports2, module2) { + "use strict"; + var net = require("net"); + var tls = require("tls"); + var { randomFillSync } = require("crypto"); + var PerMessageDeflate = require_permessage_deflate(); + var { EMPTY_BUFFER } = require_constants(); + var { isValidStatusCode } = require_validation(); + var { mask: applyMask, toBuffer } = require_buffer_util(); + var kByteLength = Symbol("kByteLength"); + var maskBuffer = Buffer.alloc(4); + var Sender = class _Sender { + /** + * Creates a Sender instance. + * + * @param {(net.Socket|tls.Socket)} socket The connection socket + * @param {Object} [extensions] An object containing the negotiated extensions + * @param {Function} [generateMask] The function used to generate the masking + * key + */ + constructor(socket, extensions, generateMask) { + this._extensions = extensions || {}; + if (generateMask) { + this._generateMask = generateMask; + this._maskBuffer = Buffer.alloc(4); + } + this._socket = socket; + this._firstFragment = true; + this._compress = false; + this._bufferedBytes = 0; + this._deflating = false; + this._queue = []; + } + /** + * Frames a piece of data according to the HyBi WebSocket protocol. + * + * @param {(Buffer|String)} data The data to frame + * @param {Object} options Options object + * @param {Boolean} [options.fin=false] Specifies whether or not to set the + * FIN bit + * @param {Function} [options.generateMask] The function used to generate the + * masking key + * @param {Boolean} [options.mask=false] Specifies whether or not to mask + * `data` + * @param {Buffer} [options.maskBuffer] The buffer used to store the masking + * key + * @param {Number} options.opcode The opcode + * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be + * modified + * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the + * RSV1 bit + * @return {(Buffer|String)[]} The framed data + * @public + */ + static frame(data, options) { + let mask; + let merge = false; + let offset = 2; + let skipMasking = false; + if (options.mask) { + mask = options.maskBuffer || maskBuffer; + if (options.generateMask) { + options.generateMask(mask); + } else { + randomFillSync(mask, 0, 4); + } + skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0; + offset = 6; + } + let dataLength; + if (typeof data === "string") { + if ((!options.mask || skipMasking) && options[kByteLength] !== void 0) { + dataLength = options[kByteLength]; + } else { + data = Buffer.from(data); + dataLength = data.length; + } + } else { + dataLength = data.length; + merge = options.mask && options.readOnly && !skipMasking; + } + let payloadLength = dataLength; + if (dataLength >= 65536) { + offset += 8; + payloadLength = 127; + } else if (dataLength > 125) { + offset += 2; + payloadLength = 126; + } + const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset); + target[0] = options.fin ? options.opcode | 128 : options.opcode; + if (options.rsv1) + target[0] |= 64; + target[1] = payloadLength; + if (payloadLength === 126) { + target.writeUInt16BE(dataLength, 2); + } else if (payloadLength === 127) { + target[2] = target[3] = 0; + target.writeUIntBE(dataLength, 4, 6); + } + if (!options.mask) + return [target, data]; + target[1] |= 128; + target[offset - 4] = mask[0]; + target[offset - 3] = mask[1]; + target[offset - 2] = mask[2]; + target[offset - 1] = mask[3]; + if (skipMasking) + return [target, data]; + if (merge) { + applyMask(data, mask, target, offset, dataLength); + return [target]; + } + applyMask(data, mask, data, 0, dataLength); + return [target, data]; + } + /** + * Sends a close message to the other peer. + * + * @param {Number} [code] The status code component of the body + * @param {(String|Buffer)} [data] The message component of the body + * @param {Boolean} [mask=false] Specifies whether or not to mask the message + * @param {Function} [cb] Callback + * @public + */ + close(code, data, mask, cb) { + let buf; + if (code === void 0) { + buf = EMPTY_BUFFER; + } else if (typeof code !== "number" || !isValidStatusCode(code)) { + throw new TypeError("First argument must be a valid error code number"); + } else if (data === void 0 || !data.length) { + buf = Buffer.allocUnsafe(2); + buf.writeUInt16BE(code, 0); + } else { + const length = Buffer.byteLength(data); + if (length > 123) { + throw new RangeError("The message must not be greater than 123 bytes"); + } + buf = Buffer.allocUnsafe(2 + length); + buf.writeUInt16BE(code, 0); + if (typeof data === "string") { + buf.write(data, 2); + } else { + buf.set(data, 2); + } + } + const options = { + [kByteLength]: buf.length, + fin: true, + generateMask: this._generateMask, + mask, + maskBuffer: this._maskBuffer, + opcode: 8, + readOnly: false, + rsv1: false + }; + if (this._deflating) { + this.enqueue([this.dispatch, buf, false, options, cb]); + } else { + this.sendFrame(_Sender.frame(buf, options), cb); + } + } + /** + * Sends a ping message to the other peer. + * + * @param {*} data The message to send + * @param {Boolean} [mask=false] Specifies whether or not to mask `data` + * @param {Function} [cb] Callback + * @public + */ + ping(data, mask, cb) { + let byteLength; + let readOnly; + if (typeof data === "string") { + byteLength = Buffer.byteLength(data); + readOnly = false; + } else { + data = toBuffer(data); + byteLength = data.length; + readOnly = toBuffer.readOnly; + } + if (byteLength > 125) { + throw new RangeError("The data size must not be greater than 125 bytes"); + } + const options = { + [kByteLength]: byteLength, + fin: true, + generateMask: this._generateMask, + mask, + maskBuffer: this._maskBuffer, + opcode: 9, + readOnly, + rsv1: false + }; + if (this._deflating) { + this.enqueue([this.dispatch, data, false, options, cb]); + } else { + this.sendFrame(_Sender.frame(data, options), cb); + } + } + /** + * Sends a pong message to the other peer. + * + * @param {*} data The message to send + * @param {Boolean} [mask=false] Specifies whether or not to mask `data` + * @param {Function} [cb] Callback + * @public + */ + pong(data, mask, cb) { + let byteLength; + let readOnly; + if (typeof data === "string") { + byteLength = Buffer.byteLength(data); + readOnly = false; + } else { + data = toBuffer(data); + byteLength = data.length; + readOnly = toBuffer.readOnly; + } + if (byteLength > 125) { + throw new RangeError("The data size must not be greater than 125 bytes"); + } + const options = { + [kByteLength]: byteLength, + fin: true, + generateMask: this._generateMask, + mask, + maskBuffer: this._maskBuffer, + opcode: 10, + readOnly, + rsv1: false + }; + if (this._deflating) { + this.enqueue([this.dispatch, data, false, options, cb]); + } else { + this.sendFrame(_Sender.frame(data, options), cb); + } + } + /** + * Sends a data message to the other peer. + * + * @param {*} data The message to send + * @param {Object} options Options object + * @param {Boolean} [options.binary=false] Specifies whether `data` is binary + * or text + * @param {Boolean} [options.compress=false] Specifies whether or not to + * compress `data` + * @param {Boolean} [options.fin=false] Specifies whether the fragment is the + * last one + * @param {Boolean} [options.mask=false] Specifies whether or not to mask + * `data` + * @param {Function} [cb] Callback + * @public + */ + send(data, options, cb) { + const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName]; + let opcode = options.binary ? 2 : 1; + let rsv1 = options.compress; + let byteLength; + let readOnly; + if (typeof data === "string") { + byteLength = Buffer.byteLength(data); + readOnly = false; + } else { + data = toBuffer(data); + byteLength = data.length; + readOnly = toBuffer.readOnly; + } + if (this._firstFragment) { + this._firstFragment = false; + if (rsv1 && perMessageDeflate && perMessageDeflate.params[perMessageDeflate._isServer ? "server_no_context_takeover" : "client_no_context_takeover"]) { + rsv1 = byteLength >= perMessageDeflate._threshold; + } + this._compress = rsv1; + } else { + rsv1 = false; + opcode = 0; + } + if (options.fin) + this._firstFragment = true; + if (perMessageDeflate) { + const opts = { + [kByteLength]: byteLength, + fin: options.fin, + generateMask: this._generateMask, + mask: options.mask, + maskBuffer: this._maskBuffer, + opcode, + readOnly, + rsv1 + }; + if (this._deflating) { + this.enqueue([this.dispatch, data, this._compress, opts, cb]); + } else { + this.dispatch(data, this._compress, opts, cb); + } + } else { + this.sendFrame( + _Sender.frame(data, { + [kByteLength]: byteLength, + fin: options.fin, + generateMask: this._generateMask, + mask: options.mask, + maskBuffer: this._maskBuffer, + opcode, + readOnly, + rsv1: false + }), + cb + ); + } + } + /** + * Dispatches a message. + * + * @param {(Buffer|String)} data The message to send + * @param {Boolean} [compress=false] Specifies whether or not to compress + * `data` + * @param {Object} options Options object + * @param {Boolean} [options.fin=false] Specifies whether or not to set the + * FIN bit + * @param {Function} [options.generateMask] The function used to generate the + * masking key + * @param {Boolean} [options.mask=false] Specifies whether or not to mask + * `data` + * @param {Buffer} [options.maskBuffer] The buffer used to store the masking + * key + * @param {Number} options.opcode The opcode + * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be + * modified + * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the + * RSV1 bit + * @param {Function} [cb] Callback + * @private + */ + dispatch(data, compress, options, cb) { + if (!compress) { + this.sendFrame(_Sender.frame(data, options), cb); + return; + } + const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName]; + this._bufferedBytes += options[kByteLength]; + this._deflating = true; + perMessageDeflate.compress(data, options.fin, (_, buf) => { + if (this._socket.destroyed) { + const err = new Error( + "The socket was closed while data was being compressed" + ); + if (typeof cb === "function") + cb(err); + for (let i = 0; i < this._queue.length; i++) { + const params = this._queue[i]; + const callback = params[params.length - 1]; + if (typeof callback === "function") + callback(err); + } + return; + } + this._bufferedBytes -= options[kByteLength]; + this._deflating = false; + options.readOnly = false; + this.sendFrame(_Sender.frame(buf, options), cb); + this.dequeue(); + }); + } + /** + * Executes queued send operations. + * + * @private + */ + dequeue() { + while (!this._deflating && this._queue.length) { + const params = this._queue.shift(); + this._bufferedBytes -= params[3][kByteLength]; + Reflect.apply(params[0], this, params.slice(1)); + } + } + /** + * Enqueues a send operation. + * + * @param {Array} params Send operation parameters. + * @private + */ + enqueue(params) { + this._bufferedBytes += params[3][kByteLength]; + this._queue.push(params); + } + /** + * Sends a frame. + * + * @param {Buffer[]} list The frame to send + * @param {Function} [cb] Callback + * @private + */ + sendFrame(list, cb) { + if (list.length === 2) { + this._socket.cork(); + this._socket.write(list[0]); + this._socket.write(list[1], cb); + this._socket.uncork(); + } else { + this._socket.write(list[0], cb); + } + } + }; + module2.exports = Sender; + } +}); + +// node_modules/.pnpm/ws@8.11.0/node_modules/ws/lib/event-target.js +var require_event_target = __commonJS({ + "node_modules/.pnpm/ws@8.11.0/node_modules/ws/lib/event-target.js"(exports2, module2) { + "use strict"; + var { kForOnEventAttribute, kListener } = require_constants(); + var kCode = Symbol("kCode"); + var kData = Symbol("kData"); + var kError = Symbol("kError"); + var kMessage = Symbol("kMessage"); + var kReason = Symbol("kReason"); + var kTarget = Symbol("kTarget"); + var kType = Symbol("kType"); + var kWasClean = Symbol("kWasClean"); + var Event = class { + /** + * Create a new `Event`. + * + * @param {String} type The name of the event + * @throws {TypeError} If the `type` argument is not specified + */ + constructor(type) { + this[kTarget] = null; + this[kType] = type; + } + /** + * @type {*} + */ + get target() { + return this[kTarget]; + } + /** + * @type {String} + */ + get type() { + return this[kType]; + } + }; + Object.defineProperty(Event.prototype, "target", { enumerable: true }); + Object.defineProperty(Event.prototype, "type", { enumerable: true }); + var CloseEvent = class extends Event { + /** + * Create a new `CloseEvent`. + * + * @param {String} type The name of the event + * @param {Object} [options] A dictionary object that allows for setting + * attributes via object members of the same name + * @param {Number} [options.code=0] The status code explaining why the + * connection was closed + * @param {String} [options.reason=''] A human-readable string explaining why + * the connection was closed + * @param {Boolean} [options.wasClean=false] Indicates whether or not the + * connection was cleanly closed + */ + constructor(type, options = {}) { + super(type); + this[kCode] = options.code === void 0 ? 0 : options.code; + this[kReason] = options.reason === void 0 ? "" : options.reason; + this[kWasClean] = options.wasClean === void 0 ? false : options.wasClean; + } + /** + * @type {Number} + */ + get code() { + return this[kCode]; + } + /** + * @type {String} + */ + get reason() { + return this[kReason]; + } + /** + * @type {Boolean} + */ + get wasClean() { + return this[kWasClean]; + } + }; + Object.defineProperty(CloseEvent.prototype, "code", { enumerable: true }); + Object.defineProperty(CloseEvent.prototype, "reason", { enumerable: true }); + Object.defineProperty(CloseEvent.prototype, "wasClean", { enumerable: true }); + var ErrorEvent = class extends Event { + /** + * Create a new `ErrorEvent`. + * + * @param {String} type The name of the event + * @param {Object} [options] A dictionary object that allows for setting + * attributes via object members of the same name + * @param {*} [options.error=null] The error that generated this event + * @param {String} [options.message=''] The error message + */ + constructor(type, options = {}) { + super(type); + this[kError] = options.error === void 0 ? null : options.error; + this[kMessage] = options.message === void 0 ? "" : options.message; + } + /** + * @type {*} + */ + get error() { + return this[kError]; + } + /** + * @type {String} + */ + get message() { + return this[kMessage]; + } + }; + Object.defineProperty(ErrorEvent.prototype, "error", { enumerable: true }); + Object.defineProperty(ErrorEvent.prototype, "message", { enumerable: true }); + var MessageEvent = class extends Event { + /** + * Create a new `MessageEvent`. + * + * @param {String} type The name of the event + * @param {Object} [options] A dictionary object that allows for setting + * attributes via object members of the same name + * @param {*} [options.data=null] The message content + */ + constructor(type, options = {}) { + super(type); + this[kData] = options.data === void 0 ? null : options.data; + } + /** + * @type {*} + */ + get data() { + return this[kData]; + } + }; + Object.defineProperty(MessageEvent.prototype, "data", { enumerable: true }); + var EventTarget = { + /** + * Register an event listener. + * + * @param {String} type A string representing the event type to listen for + * @param {(Function|Object)} handler The listener to add + * @param {Object} [options] An options object specifies characteristics about + * the event listener + * @param {Boolean} [options.once=false] A `Boolean` indicating that the + * listener should be invoked at most once after being added. If `true`, + * the listener would be automatically removed when invoked. + * @public + */ + addEventListener(type, handler, options = {}) { + for (const listener of this.listeners(type)) { + if (!options[kForOnEventAttribute] && listener[kListener] === handler && !listener[kForOnEventAttribute]) { + return; + } + } + let wrapper; + if (type === "message") { + wrapper = function onMessage(data, isBinary) { + const event = new MessageEvent("message", { + data: isBinary ? data : data.toString() + }); + event[kTarget] = this; + callListener(handler, this, event); + }; + } else if (type === "close") { + wrapper = function onClose(code, message) { + const event = new CloseEvent("close", { + code, + reason: message.toString(), + wasClean: this._closeFrameReceived && this._closeFrameSent + }); + event[kTarget] = this; + callListener(handler, this, event); + }; + } else if (type === "error") { + wrapper = function onError(error) { + const event = new ErrorEvent("error", { + error, + message: error.message + }); + event[kTarget] = this; + callListener(handler, this, event); + }; + } else if (type === "open") { + wrapper = function onOpen() { + const event = new Event("open"); + event[kTarget] = this; + callListener(handler, this, event); + }; + } else { + return; + } + wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute]; + wrapper[kListener] = handler; + if (options.once) { + this.once(type, wrapper); + } else { + this.on(type, wrapper); + } + }, + /** + * Remove an event listener. + * + * @param {String} type A string representing the event type to remove + * @param {(Function|Object)} handler The listener to remove + * @public + */ + removeEventListener(type, handler) { + for (const listener of this.listeners(type)) { + if (listener[kListener] === handler && !listener[kForOnEventAttribute]) { + this.removeListener(type, listener); + break; + } + } + } + }; + module2.exports = { + CloseEvent, + ErrorEvent, + Event, + EventTarget, + MessageEvent + }; + function callListener(listener, thisArg, event) { + if (typeof listener === "object" && listener.handleEvent) { + listener.handleEvent.call(listener, event); + } else { + listener.call(thisArg, event); + } + } + } +}); + +// node_modules/.pnpm/ws@8.11.0/node_modules/ws/lib/extension.js +var require_extension = __commonJS({ + "node_modules/.pnpm/ws@8.11.0/node_modules/ws/lib/extension.js"(exports2, module2) { + "use strict"; + var { tokenChars } = require_validation(); + function push(dest, name, elem) { + if (dest[name] === void 0) + dest[name] = [elem]; + else + dest[name].push(elem); + } + function parse(header) { + const offers = /* @__PURE__ */ Object.create(null); + let params = /* @__PURE__ */ Object.create(null); + let mustUnescape = false; + let isEscaping = false; + let inQuotes = false; + let extensionName; + let paramName; + let start = -1; + let code = -1; + let end = -1; + let i = 0; + for (; i < header.length; i++) { + code = header.charCodeAt(i); + if (extensionName === void 0) { + if (end === -1 && tokenChars[code] === 1) { + if (start === -1) + start = i; + } else if (i !== 0 && (code === 32 || code === 9)) { + if (end === -1 && start !== -1) + end = i; + } else if (code === 59 || code === 44) { + if (start === -1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + if (end === -1) + end = i; + const name = header.slice(start, end); + if (code === 44) { + push(offers, name, params); + params = /* @__PURE__ */ Object.create(null); + } else { + extensionName = name; + } + start = end = -1; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } else if (paramName === void 0) { + if (end === -1 && tokenChars[code] === 1) { + if (start === -1) + start = i; + } else if (code === 32 || code === 9) { + if (end === -1 && start !== -1) + end = i; + } else if (code === 59 || code === 44) { + if (start === -1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + if (end === -1) + end = i; + push(params, header.slice(start, end), true); + if (code === 44) { + push(offers, extensionName, params); + params = /* @__PURE__ */ Object.create(null); + extensionName = void 0; + } + start = end = -1; + } else if (code === 61 && start !== -1 && end === -1) { + paramName = header.slice(start, i); + start = end = -1; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } else { + if (isEscaping) { + if (tokenChars[code] !== 1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + if (start === -1) + start = i; + else if (!mustUnescape) + mustUnescape = true; + isEscaping = false; + } else if (inQuotes) { + if (tokenChars[code] === 1) { + if (start === -1) + start = i; + } else if (code === 34 && start !== -1) { + inQuotes = false; + end = i; + } else if (code === 92) { + isEscaping = true; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } else if (code === 34 && header.charCodeAt(i - 1) === 61) { + inQuotes = true; + } else if (end === -1 && tokenChars[code] === 1) { + if (start === -1) + start = i; + } else if (start !== -1 && (code === 32 || code === 9)) { + if (end === -1) + end = i; + } else if (code === 59 || code === 44) { + if (start === -1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + if (end === -1) + end = i; + let value = header.slice(start, end); + if (mustUnescape) { + value = value.replace(/\\/g, ""); + mustUnescape = false; + } + push(params, paramName, value); + if (code === 44) { + push(offers, extensionName, params); + params = /* @__PURE__ */ Object.create(null); + extensionName = void 0; + } + paramName = void 0; + start = end = -1; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } + } + if (start === -1 || inQuotes || code === 32 || code === 9) { + throw new SyntaxError("Unexpected end of input"); + } + if (end === -1) + end = i; + const token = header.slice(start, end); + if (extensionName === void 0) { + push(offers, token, params); + } else { + if (paramName === void 0) { + push(params, token, true); + } else if (mustUnescape) { + push(params, paramName, token.replace(/\\/g, "")); + } else { + push(params, paramName, token); + } + push(offers, extensionName, params); + } + return offers; + } + function format(extensions) { + return Object.keys(extensions).map((extension) => { + let configurations = extensions[extension]; + if (!Array.isArray(configurations)) + configurations = [configurations]; + return configurations.map((params) => { + return [extension].concat( + Object.keys(params).map((k) => { + let values = params[k]; + if (!Array.isArray(values)) + values = [values]; + return values.map((v) => v === true ? k : `${k}=${v}`).join("; "); + }) + ).join("; "); + }).join(", "); + }).join(", "); + } + module2.exports = { format, parse }; + } +}); + +// node_modules/.pnpm/ws@8.11.0/node_modules/ws/lib/websocket.js +var require_websocket2 = __commonJS({ + "node_modules/.pnpm/ws@8.11.0/node_modules/ws/lib/websocket.js"(exports2, module2) { + "use strict"; + var EventEmitter = require("events"); + var https = require("https"); + var http = require("http"); + var net = require("net"); + var tls = require("tls"); + var { randomBytes, createHash } = require("crypto"); + var { Readable } = require("stream"); + var { URL } = require("url"); + var PerMessageDeflate = require_permessage_deflate(); + var Receiver = require_receiver(); + var Sender = require_sender(); + var { + BINARY_TYPES, + EMPTY_BUFFER, + GUID, + kForOnEventAttribute, + kListener, + kStatusCode, + kWebSocket, + NOOP + } = require_constants(); + var { + EventTarget: { addEventListener, removeEventListener } + } = require_event_target(); + var { format, parse } = require_extension(); + var { toBuffer } = require_buffer_util(); + var closeTimeout = 30 * 1e3; + var kAborted = Symbol("kAborted"); + var protocolVersions = [8, 13]; + var readyStates = ["CONNECTING", "OPEN", "CLOSING", "CLOSED"]; + var subprotocolRegex = /^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/; + var WebSocket = class _WebSocket extends EventEmitter { + /** + * Create a new `WebSocket`. + * + * @param {(String|URL)} address The URL to which to connect + * @param {(String|String[])} [protocols] The subprotocols + * @param {Object} [options] Connection options + */ + constructor(address, protocols, options) { + super(); + this._binaryType = BINARY_TYPES[0]; + this._closeCode = 1006; + this._closeFrameReceived = false; + this._closeFrameSent = false; + this._closeMessage = EMPTY_BUFFER; + this._closeTimer = null; + this._extensions = {}; + this._paused = false; + this._protocol = ""; + this._readyState = _WebSocket.CONNECTING; + this._receiver = null; + this._sender = null; + this._socket = null; + if (address !== null) { + this._bufferedAmount = 0; + this._isServer = false; + this._redirects = 0; + if (protocols === void 0) { + protocols = []; + } else if (!Array.isArray(protocols)) { + if (typeof protocols === "object" && protocols !== null) { + options = protocols; + protocols = []; + } else { + protocols = [protocols]; + } + } + initAsClient(this, address, protocols, options); + } else { + this._isServer = true; + } + } + /** + * This deviates from the WHATWG interface since ws doesn't support the + * required default "blob" type (instead we define a custom "nodebuffer" + * type). + * + * @type {String} + */ + get binaryType() { + return this._binaryType; + } + set binaryType(type) { + if (!BINARY_TYPES.includes(type)) + return; + this._binaryType = type; + if (this._receiver) + this._receiver._binaryType = type; + } + /** + * @type {Number} + */ + get bufferedAmount() { + if (!this._socket) + return this._bufferedAmount; + return this._socket._writableState.length + this._sender._bufferedBytes; + } + /** + * @type {String} + */ + get extensions() { + return Object.keys(this._extensions).join(); + } + /** + * @type {Boolean} + */ + get isPaused() { + return this._paused; + } + /** + * @type {Function} + */ + /* istanbul ignore next */ + get onclose() { + return null; + } + /** + * @type {Function} + */ + /* istanbul ignore next */ + get onerror() { + return null; + } + /** + * @type {Function} + */ + /* istanbul ignore next */ + get onopen() { + return null; + } + /** + * @type {Function} + */ + /* istanbul ignore next */ + get onmessage() { + return null; + } + /** + * @type {String} + */ + get protocol() { + return this._protocol; + } + /** + * @type {Number} + */ + get readyState() { + return this._readyState; + } + /** + * @type {String} + */ + get url() { + return this._url; + } + /** + * Set up the socket and the internal resources. + * + * @param {(net.Socket|tls.Socket)} socket The network socket between the + * server and client + * @param {Buffer} head The first packet of the upgraded stream + * @param {Object} options Options object + * @param {Function} [options.generateMask] The function used to generate the + * masking key + * @param {Number} [options.maxPayload=0] The maximum allowed message size + * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or + * not to skip UTF-8 validation for text and close messages + * @private + */ + setSocket(socket, head, options) { + const receiver = new Receiver({ + binaryType: this.binaryType, + extensions: this._extensions, + isServer: this._isServer, + maxPayload: options.maxPayload, + skipUTF8Validation: options.skipUTF8Validation + }); + this._sender = new Sender(socket, this._extensions, options.generateMask); + this._receiver = receiver; + this._socket = socket; + receiver[kWebSocket] = this; + socket[kWebSocket] = this; + receiver.on("conclude", receiverOnConclude); + receiver.on("drain", receiverOnDrain); + receiver.on("error", receiverOnError); + receiver.on("message", receiverOnMessage); + receiver.on("ping", receiverOnPing); + receiver.on("pong", receiverOnPong); + socket.setTimeout(0); + socket.setNoDelay(); + if (head.length > 0) + socket.unshift(head); + socket.on("close", socketOnClose); + socket.on("data", socketOnData); + socket.on("end", socketOnEnd); + socket.on("error", socketOnError); + this._readyState = _WebSocket.OPEN; + this.emit("open"); + } + /** + * Emit the `'close'` event. + * + * @private + */ + emitClose() { + if (!this._socket) { + this._readyState = _WebSocket.CLOSED; + this.emit("close", this._closeCode, this._closeMessage); + return; + } + if (this._extensions[PerMessageDeflate.extensionName]) { + this._extensions[PerMessageDeflate.extensionName].cleanup(); + } + this._receiver.removeAllListeners(); + this._readyState = _WebSocket.CLOSED; + this.emit("close", this._closeCode, this._closeMessage); + } + /** + * Start a closing handshake. + * + * +----------+ +-----------+ +----------+ + * - - -|ws.close()|-->|close frame|-->|ws.close()|- - - + * | +----------+ +-----------+ +----------+ | + * +----------+ +-----------+ | + * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING + * +----------+ +-----------+ | + * | | | +---+ | + * +------------------------+-->|fin| - - - - + * | +---+ | +---+ + * - - - - -|fin|<---------------------+ + * +---+ + * + * @param {Number} [code] Status code explaining why the connection is closing + * @param {(String|Buffer)} [data] The reason why the connection is + * closing + * @public + */ + close(code, data) { + if (this.readyState === _WebSocket.CLOSED) + return; + if (this.readyState === _WebSocket.CONNECTING) { + const msg = "WebSocket was closed before the connection was established"; + return abortHandshake(this, this._req, msg); + } + if (this.readyState === _WebSocket.CLOSING) { + if (this._closeFrameSent && (this._closeFrameReceived || this._receiver._writableState.errorEmitted)) { + this._socket.end(); + } + return; + } + this._readyState = _WebSocket.CLOSING; + this._sender.close(code, data, !this._isServer, (err) => { + if (err) + return; + this._closeFrameSent = true; + if (this._closeFrameReceived || this._receiver._writableState.errorEmitted) { + this._socket.end(); + } + }); + this._closeTimer = setTimeout( + this._socket.destroy.bind(this._socket), + closeTimeout + ); + } + /** + * Pause the socket. + * + * @public + */ + pause() { + if (this.readyState === _WebSocket.CONNECTING || this.readyState === _WebSocket.CLOSED) { + return; + } + this._paused = true; + this._socket.pause(); + } + /** + * Send a ping. + * + * @param {*} [data] The data to send + * @param {Boolean} [mask] Indicates whether or not to mask `data` + * @param {Function} [cb] Callback which is executed when the ping is sent + * @public + */ + ping(data, mask, cb) { + if (this.readyState === _WebSocket.CONNECTING) { + throw new Error("WebSocket is not open: readyState 0 (CONNECTING)"); + } + if (typeof data === "function") { + cb = data; + data = mask = void 0; + } else if (typeof mask === "function") { + cb = mask; + mask = void 0; + } + if (typeof data === "number") + data = data.toString(); + if (this.readyState !== _WebSocket.OPEN) { + sendAfterClose(this, data, cb); + return; + } + if (mask === void 0) + mask = !this._isServer; + this._sender.ping(data || EMPTY_BUFFER, mask, cb); + } + /** + * Send a pong. + * + * @param {*} [data] The data to send + * @param {Boolean} [mask] Indicates whether or not to mask `data` + * @param {Function} [cb] Callback which is executed when the pong is sent + * @public + */ + pong(data, mask, cb) { + if (this.readyState === _WebSocket.CONNECTING) { + throw new Error("WebSocket is not open: readyState 0 (CONNECTING)"); + } + if (typeof data === "function") { + cb = data; + data = mask = void 0; + } else if (typeof mask === "function") { + cb = mask; + mask = void 0; + } + if (typeof data === "number") + data = data.toString(); + if (this.readyState !== _WebSocket.OPEN) { + sendAfterClose(this, data, cb); + return; + } + if (mask === void 0) + mask = !this._isServer; + this._sender.pong(data || EMPTY_BUFFER, mask, cb); + } + /** + * Resume the socket. + * + * @public + */ + resume() { + if (this.readyState === _WebSocket.CONNECTING || this.readyState === _WebSocket.CLOSED) { + return; + } + this._paused = false; + if (!this._receiver._writableState.needDrain) + this._socket.resume(); + } + /** + * Send a data message. + * + * @param {*} data The message to send + * @param {Object} [options] Options object + * @param {Boolean} [options.binary] Specifies whether `data` is binary or + * text + * @param {Boolean} [options.compress] Specifies whether or not to compress + * `data` + * @param {Boolean} [options.fin=true] Specifies whether the fragment is the + * last one + * @param {Boolean} [options.mask] Specifies whether or not to mask `data` + * @param {Function} [cb] Callback which is executed when data is written out + * @public + */ + send(data, options, cb) { + if (this.readyState === _WebSocket.CONNECTING) { + throw new Error("WebSocket is not open: readyState 0 (CONNECTING)"); + } + if (typeof options === "function") { + cb = options; + options = {}; + } + if (typeof data === "number") + data = data.toString(); + if (this.readyState !== _WebSocket.OPEN) { + sendAfterClose(this, data, cb); + return; + } + const opts = { + binary: typeof data !== "string", + mask: !this._isServer, + compress: true, + fin: true, + ...options + }; + if (!this._extensions[PerMessageDeflate.extensionName]) { + opts.compress = false; + } + this._sender.send(data || EMPTY_BUFFER, opts, cb); + } + /** + * Forcibly close the connection. + * + * @public + */ + terminate() { + if (this.readyState === _WebSocket.CLOSED) + return; + if (this.readyState === _WebSocket.CONNECTING) { + const msg = "WebSocket was closed before the connection was established"; + return abortHandshake(this, this._req, msg); + } + if (this._socket) { + this._readyState = _WebSocket.CLOSING; + this._socket.destroy(); + } + } + }; + Object.defineProperty(WebSocket, "CONNECTING", { + enumerable: true, + value: readyStates.indexOf("CONNECTING") + }); + Object.defineProperty(WebSocket.prototype, "CONNECTING", { + enumerable: true, + value: readyStates.indexOf("CONNECTING") + }); + Object.defineProperty(WebSocket, "OPEN", { + enumerable: true, + value: readyStates.indexOf("OPEN") + }); + Object.defineProperty(WebSocket.prototype, "OPEN", { + enumerable: true, + value: readyStates.indexOf("OPEN") + }); + Object.defineProperty(WebSocket, "CLOSING", { + enumerable: true, + value: readyStates.indexOf("CLOSING") + }); + Object.defineProperty(WebSocket.prototype, "CLOSING", { + enumerable: true, + value: readyStates.indexOf("CLOSING") + }); + Object.defineProperty(WebSocket, "CLOSED", { + enumerable: true, + value: readyStates.indexOf("CLOSED") + }); + Object.defineProperty(WebSocket.prototype, "CLOSED", { + enumerable: true, + value: readyStates.indexOf("CLOSED") + }); + [ + "binaryType", + "bufferedAmount", + "extensions", + "isPaused", + "protocol", + "readyState", + "url" + ].forEach((property) => { + Object.defineProperty(WebSocket.prototype, property, { enumerable: true }); + }); + ["open", "error", "close", "message"].forEach((method) => { + Object.defineProperty(WebSocket.prototype, `on${method}`, { + enumerable: true, + get() { + for (const listener of this.listeners(method)) { + if (listener[kForOnEventAttribute]) + return listener[kListener]; + } + return null; + }, + set(handler) { + for (const listener of this.listeners(method)) { + if (listener[kForOnEventAttribute]) { + this.removeListener(method, listener); + break; + } + } + if (typeof handler !== "function") + return; + this.addEventListener(method, handler, { + [kForOnEventAttribute]: true + }); + } + }); + }); + WebSocket.prototype.addEventListener = addEventListener; + WebSocket.prototype.removeEventListener = removeEventListener; + module2.exports = WebSocket; + function initAsClient(websocket, address, protocols, options) { + const opts = { + protocolVersion: protocolVersions[1], + maxPayload: 100 * 1024 * 1024, + skipUTF8Validation: false, + perMessageDeflate: true, + followRedirects: false, + maxRedirects: 10, + ...options, + createConnection: void 0, + socketPath: void 0, + hostname: void 0, + protocol: void 0, + timeout: void 0, + method: "GET", + host: void 0, + path: void 0, + port: void 0 + }; + if (!protocolVersions.includes(opts.protocolVersion)) { + throw new RangeError( + `Unsupported protocol version: ${opts.protocolVersion} (supported versions: ${protocolVersions.join(", ")})` + ); + } + let parsedUrl; + if (address instanceof URL) { + parsedUrl = address; + websocket._url = address.href; + } else { + try { + parsedUrl = new URL(address); + } catch (e) { + throw new SyntaxError(`Invalid URL: ${address}`); + } + websocket._url = address; + } + const isSecure = parsedUrl.protocol === "wss:"; + const isIpcUrl = parsedUrl.protocol === "ws+unix:"; + let invalidUrlMessage; + if (parsedUrl.protocol !== "ws:" && !isSecure && !isIpcUrl) { + invalidUrlMessage = `The URL's protocol must be one of "ws:", "wss:", or "ws+unix:"`; + } else if (isIpcUrl && !parsedUrl.pathname) { + invalidUrlMessage = "The URL's pathname is empty"; + } else if (parsedUrl.hash) { + invalidUrlMessage = "The URL contains a fragment identifier"; + } + if (invalidUrlMessage) { + const err = new SyntaxError(invalidUrlMessage); + if (websocket._redirects === 0) { + throw err; + } else { + emitErrorAndClose(websocket, err); + return; + } + } + const defaultPort = isSecure ? 443 : 80; + const key = randomBytes(16).toString("base64"); + const request = isSecure ? https.request : http.request; + const protocolSet = /* @__PURE__ */ new Set(); + let perMessageDeflate; + opts.createConnection = isSecure ? tlsConnect : netConnect; + opts.defaultPort = opts.defaultPort || defaultPort; + opts.port = parsedUrl.port || defaultPort; + opts.host = parsedUrl.hostname.startsWith("[") ? parsedUrl.hostname.slice(1, -1) : parsedUrl.hostname; + opts.headers = { + ...opts.headers, + "Sec-WebSocket-Version": opts.protocolVersion, + "Sec-WebSocket-Key": key, + Connection: "Upgrade", + Upgrade: "websocket" + }; + opts.path = parsedUrl.pathname + parsedUrl.search; + opts.timeout = opts.handshakeTimeout; + if (opts.perMessageDeflate) { + perMessageDeflate = new PerMessageDeflate( + opts.perMessageDeflate !== true ? opts.perMessageDeflate : {}, + false, + opts.maxPayload + ); + opts.headers["Sec-WebSocket-Extensions"] = format({ + [PerMessageDeflate.extensionName]: perMessageDeflate.offer() + }); + } + if (protocols.length) { + for (const protocol of protocols) { + if (typeof protocol !== "string" || !subprotocolRegex.test(protocol) || protocolSet.has(protocol)) { + throw new SyntaxError( + "An invalid or duplicated subprotocol was specified" + ); + } + protocolSet.add(protocol); + } + opts.headers["Sec-WebSocket-Protocol"] = protocols.join(","); + } + if (opts.origin) { + if (opts.protocolVersion < 13) { + opts.headers["Sec-WebSocket-Origin"] = opts.origin; + } else { + opts.headers.Origin = opts.origin; + } + } + if (parsedUrl.username || parsedUrl.password) { + opts.auth = `${parsedUrl.username}:${parsedUrl.password}`; + } + if (isIpcUrl) { + const parts = opts.path.split(":"); + opts.socketPath = parts[0]; + opts.path = parts[1]; + } + let req; + if (opts.followRedirects) { + if (websocket._redirects === 0) { + websocket._originalIpc = isIpcUrl; + websocket._originalSecure = isSecure; + websocket._originalHostOrSocketPath = isIpcUrl ? opts.socketPath : parsedUrl.host; + const headers = options && options.headers; + options = { ...options, headers: {} }; + if (headers) { + for (const [key2, value] of Object.entries(headers)) { + options.headers[key2.toLowerCase()] = value; + } + } + } else if (websocket.listenerCount("redirect") === 0) { + const isSameHost = isIpcUrl ? websocket._originalIpc ? opts.socketPath === websocket._originalHostOrSocketPath : false : websocket._originalIpc ? false : parsedUrl.host === websocket._originalHostOrSocketPath; + if (!isSameHost || websocket._originalSecure && !isSecure) { + delete opts.headers.authorization; + delete opts.headers.cookie; + if (!isSameHost) + delete opts.headers.host; + opts.auth = void 0; + } + } + if (opts.auth && !options.headers.authorization) { + options.headers.authorization = "Basic " + Buffer.from(opts.auth).toString("base64"); + } + req = websocket._req = request(opts); + if (websocket._redirects) { + websocket.emit("redirect", websocket.url, req); + } + } else { + req = websocket._req = request(opts); + } + if (opts.timeout) { + req.on("timeout", () => { + abortHandshake(websocket, req, "Opening handshake has timed out"); + }); + } + req.on("error", (err) => { + if (req === null || req[kAborted]) + return; + req = websocket._req = null; + emitErrorAndClose(websocket, err); + }); + req.on("response", (res) => { + const location = res.headers.location; + const statusCode = res.statusCode; + if (location && opts.followRedirects && statusCode >= 300 && statusCode < 400) { + if (++websocket._redirects > opts.maxRedirects) { + abortHandshake(websocket, req, "Maximum redirects exceeded"); + return; + } + req.abort(); + let addr; + try { + addr = new URL(location, address); + } catch (e) { + const err = new SyntaxError(`Invalid URL: ${location}`); + emitErrorAndClose(websocket, err); + return; + } + initAsClient(websocket, addr, protocols, options); + } else if (!websocket.emit("unexpected-response", req, res)) { + abortHandshake( + websocket, + req, + `Unexpected server response: ${res.statusCode}` + ); + } + }); + req.on("upgrade", (res, socket, head) => { + websocket.emit("upgrade", res); + if (websocket.readyState !== WebSocket.CONNECTING) + return; + req = websocket._req = null; + if (res.headers.upgrade.toLowerCase() !== "websocket") { + abortHandshake(websocket, socket, "Invalid Upgrade header"); + return; + } + const digest = createHash("sha1").update(key + GUID).digest("base64"); + if (res.headers["sec-websocket-accept"] !== digest) { + abortHandshake(websocket, socket, "Invalid Sec-WebSocket-Accept header"); + return; + } + const serverProt = res.headers["sec-websocket-protocol"]; + let protError; + if (serverProt !== void 0) { + if (!protocolSet.size) { + protError = "Server sent a subprotocol but none was requested"; + } else if (!protocolSet.has(serverProt)) { + protError = "Server sent an invalid subprotocol"; + } + } else if (protocolSet.size) { + protError = "Server sent no subprotocol"; + } + if (protError) { + abortHandshake(websocket, socket, protError); + return; + } + if (serverProt) + websocket._protocol = serverProt; + const secWebSocketExtensions = res.headers["sec-websocket-extensions"]; + if (secWebSocketExtensions !== void 0) { + if (!perMessageDeflate) { + const message = "Server sent a Sec-WebSocket-Extensions header but no extension was requested"; + abortHandshake(websocket, socket, message); + return; + } + let extensions; + try { + extensions = parse(secWebSocketExtensions); + } catch (err) { + const message = "Invalid Sec-WebSocket-Extensions header"; + abortHandshake(websocket, socket, message); + return; + } + const extensionNames = Object.keys(extensions); + if (extensionNames.length !== 1 || extensionNames[0] !== PerMessageDeflate.extensionName) { + const message = "Server indicated an extension that was not requested"; + abortHandshake(websocket, socket, message); + return; + } + try { + perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]); + } catch (err) { + const message = "Invalid Sec-WebSocket-Extensions header"; + abortHandshake(websocket, socket, message); + return; + } + websocket._extensions[PerMessageDeflate.extensionName] = perMessageDeflate; + } + websocket.setSocket(socket, head, { + generateMask: opts.generateMask, + maxPayload: opts.maxPayload, + skipUTF8Validation: opts.skipUTF8Validation + }); + }); + req.end(); + } + function emitErrorAndClose(websocket, err) { + websocket._readyState = WebSocket.CLOSING; + websocket.emit("error", err); + websocket.emitClose(); + } + function netConnect(options) { + options.path = options.socketPath; + return net.connect(options); + } + function tlsConnect(options) { + options.path = void 0; + if (!options.servername && options.servername !== "") { + options.servername = net.isIP(options.host) ? "" : options.host; + } + return tls.connect(options); + } + function abortHandshake(websocket, stream, message) { + websocket._readyState = WebSocket.CLOSING; + const err = new Error(message); + Error.captureStackTrace(err, abortHandshake); + if (stream.setHeader) { + stream[kAborted] = true; + stream.abort(); + if (stream.socket && !stream.socket.destroyed) { + stream.socket.destroy(); + } + process.nextTick(emitErrorAndClose, websocket, err); + } else { + stream.destroy(err); + stream.once("error", websocket.emit.bind(websocket, "error")); + stream.once("close", websocket.emitClose.bind(websocket)); + } + } + function sendAfterClose(websocket, data, cb) { + if (data) { + const length = toBuffer(data).length; + if (websocket._socket) + websocket._sender._bufferedBytes += length; + else + websocket._bufferedAmount += length; + } + if (cb) { + const err = new Error( + `WebSocket is not open: readyState ${websocket.readyState} (${readyStates[websocket.readyState]})` + ); + cb(err); + } + } + function receiverOnConclude(code, reason) { + const websocket = this[kWebSocket]; + websocket._closeFrameReceived = true; + websocket._closeMessage = reason; + websocket._closeCode = code; + if (websocket._socket[kWebSocket] === void 0) + return; + websocket._socket.removeListener("data", socketOnData); + process.nextTick(resume, websocket._socket); + if (code === 1005) + websocket.close(); + else + websocket.close(code, reason); + } + function receiverOnDrain() { + const websocket = this[kWebSocket]; + if (!websocket.isPaused) + websocket._socket.resume(); + } + function receiverOnError(err) { + const websocket = this[kWebSocket]; + if (websocket._socket[kWebSocket] !== void 0) { + websocket._socket.removeListener("data", socketOnData); + process.nextTick(resume, websocket._socket); + websocket.close(err[kStatusCode]); + } + websocket.emit("error", err); + } + function receiverOnFinish() { + this[kWebSocket].emitClose(); + } + function receiverOnMessage(data, isBinary) { + this[kWebSocket].emit("message", data, isBinary); + } + function receiverOnPing(data) { + const websocket = this[kWebSocket]; + websocket.pong(data, !websocket._isServer, NOOP); + websocket.emit("ping", data); + } + function receiverOnPong(data) { + this[kWebSocket].emit("pong", data); + } + function resume(stream) { + stream.resume(); + } + function socketOnClose() { + const websocket = this[kWebSocket]; + this.removeListener("close", socketOnClose); + this.removeListener("data", socketOnData); + this.removeListener("end", socketOnEnd); + websocket._readyState = WebSocket.CLOSING; + let chunk; + if (!this._readableState.endEmitted && !websocket._closeFrameReceived && !websocket._receiver._writableState.errorEmitted && (chunk = websocket._socket.read()) !== null) { + websocket._receiver.write(chunk); + } + websocket._receiver.end(); + this[kWebSocket] = void 0; + clearTimeout(websocket._closeTimer); + if (websocket._receiver._writableState.finished || websocket._receiver._writableState.errorEmitted) { + websocket.emitClose(); + } else { + websocket._receiver.on("error", receiverOnFinish); + websocket._receiver.on("finish", receiverOnFinish); + } + } + function socketOnData(chunk) { + if (!this[kWebSocket]._receiver.write(chunk)) { + this.pause(); + } + } + function socketOnEnd() { + const websocket = this[kWebSocket]; + websocket._readyState = WebSocket.CLOSING; + websocket._receiver.end(); + this.end(); + } + function socketOnError() { + const websocket = this[kWebSocket]; + this.removeListener("error", socketOnError); + this.on("error", NOOP); + if (websocket) { + websocket._readyState = WebSocket.CLOSING; + this.destroy(); + } + } + } +}); + +// node_modules/.pnpm/ws@8.11.0/node_modules/ws/lib/stream.js +var require_stream = __commonJS({ + "node_modules/.pnpm/ws@8.11.0/node_modules/ws/lib/stream.js"(exports2, module2) { + "use strict"; + var { Duplex } = require("stream"); + function emitClose(stream) { + stream.emit("close"); + } + function duplexOnEnd() { + if (!this.destroyed && this._writableState.finished) { + this.destroy(); + } + } + function duplexOnError(err) { + this.removeListener("error", duplexOnError); + this.destroy(); + if (this.listenerCount("error") === 0) { + this.emit("error", err); + } + } + function createWebSocketStream(ws, options) { + let terminateOnDestroy = true; + const duplex = new Duplex({ + ...options, + autoDestroy: false, + emitClose: false, + objectMode: false, + writableObjectMode: false + }); + ws.on("message", function message(msg, isBinary) { + const data = !isBinary && duplex._readableState.objectMode ? msg.toString() : msg; + if (!duplex.push(data)) + ws.pause(); + }); + ws.once("error", function error(err) { + if (duplex.destroyed) + return; + terminateOnDestroy = false; + duplex.destroy(err); + }); + ws.once("close", function close() { + if (duplex.destroyed) + return; + duplex.push(null); + }); + duplex._destroy = function(err, callback) { + if (ws.readyState === ws.CLOSED) { + callback(err); + process.nextTick(emitClose, duplex); + return; + } + let called = false; + ws.once("error", function error(err2) { + called = true; + callback(err2); + }); + ws.once("close", function close() { + if (!called) + callback(err); + process.nextTick(emitClose, duplex); + }); + if (terminateOnDestroy) + ws.terminate(); + }; + duplex._final = function(callback) { + if (ws.readyState === ws.CONNECTING) { + ws.once("open", function open() { + duplex._final(callback); + }); + return; + } + if (ws._socket === null) + return; + if (ws._socket._writableState.finished) { + callback(); + if (duplex._readableState.endEmitted) + duplex.destroy(); + } else { + ws._socket.once("finish", function finish() { + callback(); + }); + ws.close(); + } + }; + duplex._read = function() { + if (ws.isPaused) + ws.resume(); + }; + duplex._write = function(chunk, encoding, callback) { + if (ws.readyState === ws.CONNECTING) { + ws.once("open", function open() { + duplex._write(chunk, encoding, callback); + }); + return; + } + ws.send(chunk, callback); + }; + duplex.on("end", duplexOnEnd); + duplex.on("error", duplexOnError); + return duplex; + } + module2.exports = createWebSocketStream; + } +}); + +// node_modules/.pnpm/ws@8.11.0/node_modules/ws/lib/subprotocol.js +var require_subprotocol = __commonJS({ + "node_modules/.pnpm/ws@8.11.0/node_modules/ws/lib/subprotocol.js"(exports2, module2) { + "use strict"; + var { tokenChars } = require_validation(); + function parse(header) { + const protocols = /* @__PURE__ */ new Set(); + let start = -1; + let end = -1; + let i = 0; + for (i; i < header.length; i++) { + const code = header.charCodeAt(i); + if (end === -1 && tokenChars[code] === 1) { + if (start === -1) + start = i; + } else if (i !== 0 && (code === 32 || code === 9)) { + if (end === -1 && start !== -1) + end = i; + } else if (code === 44) { + if (start === -1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + if (end === -1) + end = i; + const protocol2 = header.slice(start, end); + if (protocols.has(protocol2)) { + throw new SyntaxError(`The "${protocol2}" subprotocol is duplicated`); + } + protocols.add(protocol2); + start = end = -1; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } + if (start === -1 || end !== -1) { + throw new SyntaxError("Unexpected end of input"); + } + const protocol = header.slice(start, i); + if (protocols.has(protocol)) { + throw new SyntaxError(`The "${protocol}" subprotocol is duplicated`); + } + protocols.add(protocol); + return protocols; + } + module2.exports = { parse }; + } +}); + +// node_modules/.pnpm/ws@8.11.0/node_modules/ws/lib/websocket-server.js +var require_websocket_server = __commonJS({ + "node_modules/.pnpm/ws@8.11.0/node_modules/ws/lib/websocket-server.js"(exports2, module2) { + "use strict"; + var EventEmitter = require("events"); + var http = require("http"); + var https = require("https"); + var net = require("net"); + var tls = require("tls"); + var { createHash } = require("crypto"); + var extension = require_extension(); + var PerMessageDeflate = require_permessage_deflate(); + var subprotocol = require_subprotocol(); + var WebSocket = require_websocket2(); + var { GUID, kWebSocket } = require_constants(); + var keyRegex = /^[+/0-9A-Za-z]{22}==$/; + var RUNNING = 0; + var CLOSING = 1; + var CLOSED = 2; + var WebSocketServer = class extends EventEmitter { + /** + * Create a `WebSocketServer` instance. + * + * @param {Object} options Configuration options + * @param {Number} [options.backlog=511] The maximum length of the queue of + * pending connections + * @param {Boolean} [options.clientTracking=true] Specifies whether or not to + * track clients + * @param {Function} [options.handleProtocols] A hook to handle protocols + * @param {String} [options.host] The hostname where to bind the server + * @param {Number} [options.maxPayload=104857600] The maximum allowed message + * size + * @param {Boolean} [options.noServer=false] Enable no server mode + * @param {String} [options.path] Accept only connections matching this path + * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable + * permessage-deflate + * @param {Number} [options.port] The port where to bind the server + * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S + * server to use + * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or + * not to skip UTF-8 validation for text and close messages + * @param {Function} [options.verifyClient] A hook to reject connections + * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket` + * class to use. It must be the `WebSocket` class or class that extends it + * @param {Function} [callback] A listener for the `listening` event + */ + constructor(options, callback) { + super(); + options = { + maxPayload: 100 * 1024 * 1024, + skipUTF8Validation: false, + perMessageDeflate: false, + handleProtocols: null, + clientTracking: true, + verifyClient: null, + noServer: false, + backlog: null, + // use default (511 as implemented in net.js) + server: null, + host: null, + path: null, + port: null, + WebSocket, + ...options + }; + if (options.port == null && !options.server && !options.noServer || options.port != null && (options.server || options.noServer) || options.server && options.noServer) { + throw new TypeError( + 'One and only one of the "port", "server", or "noServer" options must be specified' + ); + } + if (options.port != null) { + this._server = http.createServer((req, res) => { + const body = http.STATUS_CODES[426]; + res.writeHead(426, { + "Content-Length": body.length, + "Content-Type": "text/plain" + }); + res.end(body); + }); + this._server.listen( + options.port, + options.host, + options.backlog, + callback + ); + } else if (options.server) { + this._server = options.server; + } + if (this._server) { + const emitConnection = this.emit.bind(this, "connection"); + this._removeListeners = addListeners(this._server, { + listening: this.emit.bind(this, "listening"), + error: this.emit.bind(this, "error"), + upgrade: (req, socket, head) => { + this.handleUpgrade(req, socket, head, emitConnection); + } + }); + } + if (options.perMessageDeflate === true) + options.perMessageDeflate = {}; + if (options.clientTracking) { + this.clients = /* @__PURE__ */ new Set(); + this._shouldEmitClose = false; + } + this.options = options; + this._state = RUNNING; + } + /** + * Returns the bound address, the address family name, and port of the server + * as reported by the operating system if listening on an IP socket. + * If the server is listening on a pipe or UNIX domain socket, the name is + * returned as a string. + * + * @return {(Object|String|null)} The address of the server + * @public + */ + address() { + if (this.options.noServer) { + throw new Error('The server is operating in "noServer" mode'); + } + if (!this._server) + return null; + return this._server.address(); + } + /** + * Stop the server from accepting new connections and emit the `'close'` event + * when all existing connections are closed. + * + * @param {Function} [cb] A one-time listener for the `'close'` event + * @public + */ + close(cb) { + if (this._state === CLOSED) { + if (cb) { + this.once("close", () => { + cb(new Error("The server is not running")); + }); + } + process.nextTick(emitClose, this); + return; + } + if (cb) + this.once("close", cb); + if (this._state === CLOSING) + return; + this._state = CLOSING; + if (this.options.noServer || this.options.server) { + if (this._server) { + this._removeListeners(); + this._removeListeners = this._server = null; + } + if (this.clients) { + if (!this.clients.size) { + process.nextTick(emitClose, this); + } else { + this._shouldEmitClose = true; + } + } else { + process.nextTick(emitClose, this); + } + } else { + const server2 = this._server; + this._removeListeners(); + this._removeListeners = this._server = null; + server2.close(() => { + emitClose(this); + }); + } + } + /** + * See if a given request should be handled by this server instance. + * + * @param {http.IncomingMessage} req Request object to inspect + * @return {Boolean} `true` if the request is valid, else `false` + * @public + */ + shouldHandle(req) { + if (this.options.path) { + const index = req.url.indexOf("?"); + const pathname = index !== -1 ? req.url.slice(0, index) : req.url; + if (pathname !== this.options.path) + return false; + } + return true; + } + /** + * Handle a HTTP Upgrade request. + * + * @param {http.IncomingMessage} req The request object + * @param {(net.Socket|tls.Socket)} socket The network socket between the + * server and client + * @param {Buffer} head The first packet of the upgraded stream + * @param {Function} cb Callback + * @public + */ + handleUpgrade(req, socket, head, cb) { + socket.on("error", socketOnError); + const key = req.headers["sec-websocket-key"]; + const version = +req.headers["sec-websocket-version"]; + if (req.method !== "GET") { + const message = "Invalid HTTP method"; + abortHandshakeOrEmitwsClientError(this, req, socket, 405, message); + return; + } + if (req.headers.upgrade.toLowerCase() !== "websocket") { + const message = "Invalid Upgrade header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); + return; + } + if (!key || !keyRegex.test(key)) { + const message = "Missing or invalid Sec-WebSocket-Key header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); + return; + } + if (version !== 8 && version !== 13) { + const message = "Missing or invalid Sec-WebSocket-Version header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); + return; + } + if (!this.shouldHandle(req)) { + abortHandshake(socket, 400); + return; + } + const secWebSocketProtocol = req.headers["sec-websocket-protocol"]; + let protocols = /* @__PURE__ */ new Set(); + if (secWebSocketProtocol !== void 0) { + try { + protocols = subprotocol.parse(secWebSocketProtocol); + } catch (err) { + const message = "Invalid Sec-WebSocket-Protocol header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); + return; + } + } + const secWebSocketExtensions = req.headers["sec-websocket-extensions"]; + const extensions = {}; + if (this.options.perMessageDeflate && secWebSocketExtensions !== void 0) { + const perMessageDeflate = new PerMessageDeflate( + this.options.perMessageDeflate, + true, + this.options.maxPayload + ); + try { + const offers = extension.parse(secWebSocketExtensions); + if (offers[PerMessageDeflate.extensionName]) { + perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]); + extensions[PerMessageDeflate.extensionName] = perMessageDeflate; + } + } catch (err) { + const message = "Invalid or unacceptable Sec-WebSocket-Extensions header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); + return; + } + } + if (this.options.verifyClient) { + const info = { + origin: req.headers[`${version === 8 ? "sec-websocket-origin" : "origin"}`], + secure: !!(req.socket.authorized || req.socket.encrypted), + req + }; + if (this.options.verifyClient.length === 2) { + this.options.verifyClient(info, (verified, code, message, headers) => { + if (!verified) { + return abortHandshake(socket, code || 401, message, headers); + } + this.completeUpgrade( + extensions, + key, + protocols, + req, + socket, + head, + cb + ); + }); + return; + } + if (!this.options.verifyClient(info)) + return abortHandshake(socket, 401); + } + this.completeUpgrade(extensions, key, protocols, req, socket, head, cb); + } + /** + * Upgrade the connection to WebSocket. + * + * @param {Object} extensions The accepted extensions + * @param {String} key The value of the `Sec-WebSocket-Key` header + * @param {Set} protocols The subprotocols + * @param {http.IncomingMessage} req The request object + * @param {(net.Socket|tls.Socket)} socket The network socket between the + * server and client + * @param {Buffer} head The first packet of the upgraded stream + * @param {Function} cb Callback + * @throws {Error} If called more than once with the same socket + * @private + */ + completeUpgrade(extensions, key, protocols, req, socket, head, cb) { + if (!socket.readable || !socket.writable) + return socket.destroy(); + if (socket[kWebSocket]) { + throw new Error( + "server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration" + ); + } + if (this._state > RUNNING) + return abortHandshake(socket, 503); + const digest = createHash("sha1").update(key + GUID).digest("base64"); + const headers = [ + "HTTP/1.1 101 Switching Protocols", + "Upgrade: websocket", + "Connection: Upgrade", + `Sec-WebSocket-Accept: ${digest}` + ]; + const ws = new this.options.WebSocket(null); + if (protocols.size) { + const protocol = this.options.handleProtocols ? this.options.handleProtocols(protocols, req) : protocols.values().next().value; + if (protocol) { + headers.push(`Sec-WebSocket-Protocol: ${protocol}`); + ws._protocol = protocol; + } + } + if (extensions[PerMessageDeflate.extensionName]) { + const params = extensions[PerMessageDeflate.extensionName].params; + const value = extension.format({ + [PerMessageDeflate.extensionName]: [params] + }); + headers.push(`Sec-WebSocket-Extensions: ${value}`); + ws._extensions = extensions; + } + this.emit("headers", headers, req); + socket.write(headers.concat("\r\n").join("\r\n")); + socket.removeListener("error", socketOnError); + ws.setSocket(socket, head, { + maxPayload: this.options.maxPayload, + skipUTF8Validation: this.options.skipUTF8Validation + }); + if (this.clients) { + this.clients.add(ws); + ws.on("close", () => { + this.clients.delete(ws); + if (this._shouldEmitClose && !this.clients.size) { + process.nextTick(emitClose, this); + } + }); + } + cb(ws, req); + } + }; + module2.exports = WebSocketServer; + function addListeners(server2, map) { + for (const event of Object.keys(map)) + server2.on(event, map[event]); + return function removeListeners() { + for (const event of Object.keys(map)) { + server2.removeListener(event, map[event]); + } + }; + } + function emitClose(server2) { + server2._state = CLOSED; + server2.emit("close"); + } + function socketOnError() { + this.destroy(); + } + function abortHandshake(socket, code, message, headers) { + message = message || http.STATUS_CODES[code]; + headers = { + Connection: "close", + "Content-Type": "text/html", + "Content-Length": Buffer.byteLength(message), + ...headers + }; + socket.once("finish", socket.destroy); + socket.end( + `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\r +` + Object.keys(headers).map((h) => `${h}: ${headers[h]}`).join("\r\n") + "\r\n\r\n" + message + ); + } + function abortHandshakeOrEmitwsClientError(server2, req, socket, code, message) { + if (server2.listenerCount("wsClientError")) { + const err = new Error(message); + Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError); + server2.emit("wsClientError", err, socket, req); + } else { + abortHandshake(socket, code, message); + } + } + } +}); + +// node_modules/.pnpm/ws@8.11.0/node_modules/ws/index.js +var require_ws = __commonJS({ + "node_modules/.pnpm/ws@8.11.0/node_modules/ws/index.js"(exports2, module2) { + "use strict"; + var WebSocket = require_websocket2(); + WebSocket.createWebSocketStream = require_stream(); + WebSocket.Server = require_websocket_server(); + WebSocket.Receiver = require_receiver(); + WebSocket.Sender = require_sender(); + WebSocket.WebSocket = WebSocket; + WebSocket.WebSocketServer = WebSocket.Server; + module2.exports = WebSocket; + } +}); + +// node_modules/.pnpm/object-assign@4.1.1/node_modules/object-assign/index.js +var require_object_assign = __commonJS({ + "node_modules/.pnpm/object-assign@4.1.1/node_modules/object-assign/index.js"(exports2, module2) { + "use strict"; + var getOwnPropertySymbols = Object.getOwnPropertySymbols; + var hasOwnProperty = Object.prototype.hasOwnProperty; + var propIsEnumerable = Object.prototype.propertyIsEnumerable; + function toObject(val) { + if (val === null || val === void 0) { + throw new TypeError("Object.assign cannot be called with null or undefined"); + } + return Object(val); + } + function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } + var test1 = new String("abc"); + test1[5] = "de"; + if (Object.getOwnPropertyNames(test1)[0] === "5") { + return false; + } + var test2 = {}; + for (var i = 0; i < 10; i++) { + test2["_" + String.fromCharCode(i)] = i; + } + var order2 = Object.getOwnPropertyNames(test2).map(function(n) { + return test2[n]; + }); + if (order2.join("") !== "0123456789") { + return false; + } + var test3 = {}; + "abcdefghijklmnopqrst".split("").forEach(function(letter) { + test3[letter] = letter; + }); + if (Object.keys(Object.assign({}, test3)).join("") !== "abcdefghijklmnopqrst") { + return false; + } + return true; + } catch (err) { + return false; + } + } + module2.exports = shouldUseNative() ? Object.assign : function(target, source2) { + var from; + var to = toObject(target); + var symbols; + for (var s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + to[key] = from[key]; + } + } + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from); + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + to[symbols[i]] = from[symbols[i]]; + } + } + } + } + return to; + }; + } +}); + +// node_modules/.pnpm/vary@1.1.2/node_modules/vary/index.js +var require_vary = __commonJS({ + "node_modules/.pnpm/vary@1.1.2/node_modules/vary/index.js"(exports2, module2) { + "use strict"; + module2.exports = vary; + module2.exports.append = append; + var FIELD_NAME_REGEXP = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/; + function append(header, field) { + if (typeof header !== "string") { + throw new TypeError("header argument is required"); + } + if (!field) { + throw new TypeError("field argument is required"); + } + var fields = !Array.isArray(field) ? parse(String(field)) : field; + for (var j = 0; j < fields.length; j++) { + if (!FIELD_NAME_REGEXP.test(fields[j])) { + throw new TypeError("field argument contains an invalid header name"); + } + } + if (header === "*") { + return header; + } + var val = header; + var vals = parse(header.toLowerCase()); + if (fields.indexOf("*") !== -1 || vals.indexOf("*") !== -1) { + return "*"; + } + for (var i = 0; i < fields.length; i++) { + var fld = fields[i].toLowerCase(); + if (vals.indexOf(fld) === -1) { + vals.push(fld); + val = val ? val + ", " + fields[i] : fields[i]; + } + } + return val; + } + function parse(header) { + var end = 0; + var list = []; + var start = 0; + for (var i = 0, len = header.length; i < len; i++) { + switch (header.charCodeAt(i)) { + case 32: + if (start === end) { + start = end = i + 1; + } + break; + case 44: + list.push(header.substring(start, end)); + start = end = i + 1; + break; + default: + end = i + 1; + break; + } + } + list.push(header.substring(start, end)); + return list; + } + function vary(res, field) { + if (!res || !res.getHeader || !res.setHeader) { + throw new TypeError("res argument is required"); + } + var val = res.getHeader("Vary") || ""; + var header = Array.isArray(val) ? val.join(", ") : String(val); + if (val = append(header, field)) { + res.setHeader("Vary", val); + } + } + } +}); + +// node_modules/.pnpm/cors@2.8.5/node_modules/cors/lib/index.js +var require_lib = __commonJS({ + "node_modules/.pnpm/cors@2.8.5/node_modules/cors/lib/index.js"(exports2, module2) { + (function() { + "use strict"; + var assign = require_object_assign(); + var vary = require_vary(); + var defaults = { + origin: "*", + methods: "GET,HEAD,PUT,PATCH,POST,DELETE", + preflightContinue: false, + optionsSuccessStatus: 204 + }; + function isString(s) { + return typeof s === "string" || s instanceof String; + } + function isOriginAllowed(origin, allowedOrigin) { + if (Array.isArray(allowedOrigin)) { + for (var i = 0; i < allowedOrigin.length; ++i) { + if (isOriginAllowed(origin, allowedOrigin[i])) { + return true; + } + } + return false; + } else if (isString(allowedOrigin)) { + return origin === allowedOrigin; + } else if (allowedOrigin instanceof RegExp) { + return allowedOrigin.test(origin); + } else { + return !!allowedOrigin; + } + } + function configureOrigin(options, req) { + var requestOrigin = req.headers.origin, headers = [], isAllowed; + if (!options.origin || options.origin === "*") { + headers.push([{ + key: "Access-Control-Allow-Origin", + value: "*" + }]); + } else if (isString(options.origin)) { + headers.push([{ + key: "Access-Control-Allow-Origin", + value: options.origin + }]); + headers.push([{ + key: "Vary", + value: "Origin" + }]); + } else { + isAllowed = isOriginAllowed(requestOrigin, options.origin); + headers.push([{ + key: "Access-Control-Allow-Origin", + value: isAllowed ? requestOrigin : false + }]); + headers.push([{ + key: "Vary", + value: "Origin" + }]); + } + return headers; + } + function configureMethods(options) { + var methods = options.methods; + if (methods.join) { + methods = options.methods.join(","); + } + return { + key: "Access-Control-Allow-Methods", + value: methods + }; + } + function configureCredentials(options) { + if (options.credentials === true) { + return { + key: "Access-Control-Allow-Credentials", + value: "true" + }; + } + return null; + } + function configureAllowedHeaders(options, req) { + var allowedHeaders = options.allowedHeaders || options.headers; + var headers = []; + if (!allowedHeaders) { + allowedHeaders = req.headers["access-control-request-headers"]; + headers.push([{ + key: "Vary", + value: "Access-Control-Request-Headers" + }]); + } else if (allowedHeaders.join) { + allowedHeaders = allowedHeaders.join(","); + } + if (allowedHeaders && allowedHeaders.length) { + headers.push([{ + key: "Access-Control-Allow-Headers", + value: allowedHeaders + }]); + } + return headers; + } + function configureExposedHeaders(options) { + var headers = options.exposedHeaders; + if (!headers) { + return null; + } else if (headers.join) { + headers = headers.join(","); + } + if (headers && headers.length) { + return { + key: "Access-Control-Expose-Headers", + value: headers + }; + } + return null; + } + function configureMaxAge(options) { + var maxAge = (typeof options.maxAge === "number" || options.maxAge) && options.maxAge.toString(); + if (maxAge && maxAge.length) { + return { + key: "Access-Control-Max-Age", + value: maxAge + }; + } + return null; + } + function applyHeaders(headers, res) { + for (var i = 0, n = headers.length; i < n; i++) { + var header = headers[i]; + if (header) { + if (Array.isArray(header)) { + applyHeaders(header, res); + } else if (header.key === "Vary" && header.value) { + vary(res, header.value); + } else if (header.value) { + res.setHeader(header.key, header.value); + } + } + } + } + function cors(options, req, res, next) { + var headers = [], method = req.method && req.method.toUpperCase && req.method.toUpperCase(); + if (method === "OPTIONS") { + headers.push(configureOrigin(options, req)); + headers.push(configureCredentials(options, req)); + headers.push(configureMethods(options, req)); + headers.push(configureAllowedHeaders(options, req)); + headers.push(configureMaxAge(options, req)); + headers.push(configureExposedHeaders(options, req)); + applyHeaders(headers, res); + if (options.preflightContinue) { + next(); + } else { + res.statusCode = options.optionsSuccessStatus; + res.setHeader("Content-Length", "0"); + res.end(); + } + } else { + headers.push(configureOrigin(options, req)); + headers.push(configureCredentials(options, req)); + headers.push(configureExposedHeaders(options, req)); + applyHeaders(headers, res); + next(); + } + } + function middlewareWrapper(o) { + var optionsCallback = null; + if (typeof o === "function") { + optionsCallback = o; + } else { + optionsCallback = function(req, cb) { + cb(null, o); + }; + } + return function corsMiddleware(req, res, next) { + optionsCallback(req, function(err, options) { + if (err) { + next(err); + } else { + var corsOptions = assign({}, defaults, options); + var originCallback = null; + if (corsOptions.origin && typeof corsOptions.origin === "function") { + originCallback = corsOptions.origin; + } else if (corsOptions.origin) { + originCallback = function(origin, cb) { + cb(null, corsOptions.origin); + }; + } + if (originCallback) { + originCallback(req.headers.origin, function(err2, origin) { + if (err2 || !origin) { + next(err2); + } else { + corsOptions.origin = origin; + cors(corsOptions, req, res, next); + } + }); + } else { + next(); + } + } + }); + }; + } + module2.exports = middlewareWrapper; + })(); + } +}); + +// node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/server.js +var require_server = __commonJS({ + "node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/server.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Server = exports2.BaseServer = void 0; + var qs = require("querystring"); + var url_1 = require("url"); + var base64id = require_base64id(); + var transports_1 = require_transports(); + var events_1 = require("events"); + var socket_1 = require_socket(); + var debug_1 = require_src(); + var cookie_1 = require_cookie(); + var ws_1 = require_ws(); + var webtransport_1 = require_webtransport(); + var engine_io_parser_1 = require_cjs(); + var debug = (0, debug_1.default)("engine"); + var kResponseHeaders = Symbol("responseHeaders"); + function parseSessionId(data) { + try { + const parsed = JSON.parse(data); + if (typeof parsed.sid === "string") { + return parsed.sid; + } + } catch (e) { + } + } + var BaseServer = class extends events_1.EventEmitter { + /** + * Server constructor. + * + * @param {Object} opts - options + * @api public + */ + constructor(opts = {}) { + super(); + this.middlewares = []; + this.clients = {}; + this.clientsCount = 0; + this.opts = Object.assign({ + wsEngine: ws_1.Server, + pingTimeout: 2e4, + pingInterval: 25e3, + upgradeTimeout: 1e4, + maxHttpBufferSize: 1e6, + transports: ["polling", "websocket"], + allowUpgrades: true, + httpCompression: { + threshold: 1024 + }, + cors: false, + allowEIO3: false + }, opts); + if (opts.cookie) { + this.opts.cookie = Object.assign({ + name: "io", + path: "/", + // @ts-ignore + httpOnly: opts.cookie.path !== false, + sameSite: "lax" + }, opts.cookie); + } + if (this.opts.cors) { + this.use(require_lib()(this.opts.cors)); + } + if (opts.perMessageDeflate) { + this.opts.perMessageDeflate = Object.assign({ + threshold: 1024 + }, opts.perMessageDeflate); + } + this.init(); + } + /** + * Compute the pathname of the requests that are handled by the server + * @param options + * @protected + */ + _computePath(options) { + let path = (options.path || "/engine.io").replace(/\/$/, ""); + if (options.addTrailingSlash !== false) { + path += "/"; + } + return path; + } + /** + * Returns a list of available transports for upgrade given a certain transport. + * + * @return {Array} + * @api public + */ + upgrades(transport) { + if (!this.opts.allowUpgrades) + return []; + return transports_1.default[transport].upgradesTo || []; + } + /** + * Verifies a request. + * + * @param {http.IncomingMessage} + * @return {Boolean} whether the request is valid + * @api private + */ + verify(req, upgrade, fn) { + const transport = req._query.transport; + if (!~this.opts.transports.indexOf(transport) || transport === "webtransport") { + debug('unknown transport "%s"', transport); + return fn(Server2.errors.UNKNOWN_TRANSPORT, { transport }); + } + const isOriginInvalid = checkInvalidHeaderChar(req.headers.origin); + if (isOriginInvalid) { + const origin = req.headers.origin; + req.headers.origin = null; + debug("origin header invalid"); + return fn(Server2.errors.BAD_REQUEST, { + name: "INVALID_ORIGIN", + origin + }); + } + const sid = req._query.sid; + if (sid) { + if (!this.clients.hasOwnProperty(sid)) { + debug('unknown sid "%s"', sid); + return fn(Server2.errors.UNKNOWN_SID, { + sid + }); + } + const previousTransport = this.clients[sid].transport.name; + if (!upgrade && previousTransport !== transport) { + debug("bad request: unexpected transport without upgrade"); + return fn(Server2.errors.BAD_REQUEST, { + name: "TRANSPORT_MISMATCH", + transport, + previousTransport + }); + } + } else { + if ("GET" !== req.method) { + return fn(Server2.errors.BAD_HANDSHAKE_METHOD, { + method: req.method + }); + } + if (transport === "websocket" && !upgrade) { + debug("invalid transport upgrade"); + return fn(Server2.errors.BAD_REQUEST, { + name: "TRANSPORT_HANDSHAKE_ERROR" + }); + } + if (!this.opts.allowRequest) + return fn(); + return this.opts.allowRequest(req, (message, success) => { + if (!success) { + return fn(Server2.errors.FORBIDDEN, { + message + }); + } + fn(); + }); + } + fn(); + } + /** + * Adds a new middleware. + * + * @example + * import helmet from "helmet"; + * + * engine.use(helmet()); + * + * @param fn + */ + use(fn) { + this.middlewares.push(fn); + } + /** + * Apply the middlewares to the request. + * + * @param req + * @param res + * @param callback + * @protected + */ + _applyMiddlewares(req, res, callback) { + if (this.middlewares.length === 0) { + debug("no middleware to apply, skipping"); + return callback(); + } + const apply = (i) => { + debug("applying middleware n\xB0%d", i + 1); + this.middlewares[i](req, res, (err) => { + if (err) { + return callback(err); + } + if (i + 1 < this.middlewares.length) { + apply(i + 1); + } else { + callback(); + } + }); + }; + apply(0); + } + /** + * Closes all clients. + * + * @api public + */ + close() { + debug("closing all open clients"); + for (let i in this.clients) { + if (this.clients.hasOwnProperty(i)) { + this.clients[i].close(true); + } + } + this.cleanup(); + return this; + } + /** + * generate a socket id. + * Overwrite this method to generate your custom socket id + * + * @param {Object} request object + * @api public + */ + generateId(req) { + return base64id.generateId(); + } + /** + * Handshakes a new client. + * + * @param {String} transport name + * @param {Object} request object + * @param {Function} closeConnection + * + * @api protected + */ + async handshake(transportName, req, closeConnection) { + const protocol = req._query.EIO === "4" ? 4 : 3; + if (protocol === 3 && !this.opts.allowEIO3) { + debug("unsupported protocol version"); + this.emit("connection_error", { + req, + code: Server2.errors.UNSUPPORTED_PROTOCOL_VERSION, + message: Server2.errorMessages[Server2.errors.UNSUPPORTED_PROTOCOL_VERSION], + context: { + protocol + } + }); + closeConnection(Server2.errors.UNSUPPORTED_PROTOCOL_VERSION); + return; + } + let id; + try { + id = await this.generateId(req); + } catch (e) { + debug("error while generating an id"); + this.emit("connection_error", { + req, + code: Server2.errors.BAD_REQUEST, + message: Server2.errorMessages[Server2.errors.BAD_REQUEST], + context: { + name: "ID_GENERATION_ERROR", + error: e + } + }); + closeConnection(Server2.errors.BAD_REQUEST); + return; + } + debug('handshaking client "%s"', id); + try { + var transport = this.createTransport(transportName, req); + if ("polling" === transportName) { + transport.maxHttpBufferSize = this.opts.maxHttpBufferSize; + transport.httpCompression = this.opts.httpCompression; + } else if ("websocket" === transportName) { + transport.perMessageDeflate = this.opts.perMessageDeflate; + } + if (req._query && req._query.b64) { + transport.supportsBinary = false; + } else { + transport.supportsBinary = true; + } + } catch (e) { + debug('error handshaking to transport "%s"', transportName); + this.emit("connection_error", { + req, + code: Server2.errors.BAD_REQUEST, + message: Server2.errorMessages[Server2.errors.BAD_REQUEST], + context: { + name: "TRANSPORT_HANDSHAKE_ERROR", + error: e + } + }); + closeConnection(Server2.errors.BAD_REQUEST); + return; + } + const socket = new socket_1.Socket(id, this, transport, req, protocol); + transport.on("headers", (headers, req2) => { + const isInitialRequest = !req2._query.sid; + if (isInitialRequest) { + if (this.opts.cookie) { + headers["Set-Cookie"] = [ + // @ts-ignore + (0, cookie_1.serialize)(this.opts.cookie.name, id, this.opts.cookie) + ]; + } + this.emit("initial_headers", headers, req2); + } + this.emit("headers", headers, req2); + }); + transport.onRequest(req); + this.clients[id] = socket; + this.clientsCount++; + socket.once("close", () => { + delete this.clients[id]; + this.clientsCount--; + }); + this.emit("connection", socket); + return transport; + } + async onWebTransportSession(session) { + const timeout = setTimeout(() => { + debug("the client failed to establish a bidirectional stream in the given period"); + session.close(); + }, this.opts.upgradeTimeout); + const streamReader = session.incomingBidirectionalStreams.getReader(); + const result = await streamReader.read(); + if (result.done) { + debug("session is closed"); + return; + } + const stream = result.value; + const transformStream = (0, engine_io_parser_1.createPacketDecoderStream)(this.opts.maxHttpBufferSize, "nodebuffer"); + const reader = stream.readable.pipeThrough(transformStream).getReader(); + const { value, done } = await reader.read(); + if (done) { + debug("stream is closed"); + return; + } + clearTimeout(timeout); + if (value.type !== "open") { + debug("invalid WebTransport handshake"); + return session.close(); + } + if (value.data === void 0) { + const transport = new webtransport_1.WebTransport(session, stream, reader); + const id = base64id.generateId(); + debug('handshaking client "%s" (WebTransport)', id); + const socket = new socket_1.Socket(id, this, transport, null, 4); + this.clients[id] = socket; + this.clientsCount++; + socket.once("close", () => { + delete this.clients[id]; + this.clientsCount--; + }); + this.emit("connection", socket); + return; + } + const sid = parseSessionId(value.data); + if (!sid) { + debug("invalid WebTransport handshake"); + return session.close(); + } + const client = this.clients[sid]; + if (!client) { + debug("upgrade attempt for closed client"); + session.close(); + } else if (client.upgrading) { + debug("transport has already been trying to upgrade"); + session.close(); + } else if (client.upgraded) { + debug("transport had already been upgraded"); + session.close(); + } else { + debug("upgrading existing transport"); + const transport = new webtransport_1.WebTransport(session, stream, reader); + client.maybeUpgrade(transport); + } + } + }; + exports2.BaseServer = BaseServer; + BaseServer.errors = { + UNKNOWN_TRANSPORT: 0, + UNKNOWN_SID: 1, + BAD_HANDSHAKE_METHOD: 2, + BAD_REQUEST: 3, + FORBIDDEN: 4, + UNSUPPORTED_PROTOCOL_VERSION: 5 + }; + BaseServer.errorMessages = { + 0: "Transport unknown", + 1: "Session ID unknown", + 2: "Bad handshake method", + 3: "Bad request", + 4: "Forbidden", + 5: "Unsupported protocol version" + }; + var WebSocketResponse = class { + constructor(req, socket) { + this.req = req; + this.socket = socket; + req[kResponseHeaders] = {}; + } + setHeader(name, value) { + this.req[kResponseHeaders][name] = value; + } + getHeader(name) { + return this.req[kResponseHeaders][name]; + } + removeHeader(name) { + delete this.req[kResponseHeaders][name]; + } + write() { + } + writeHead() { + } + end() { + this.socket.destroy(); + } + }; + var Server2 = class _Server extends BaseServer { + /** + * Initialize websocket server + * + * @api protected + */ + init() { + if (!~this.opts.transports.indexOf("websocket")) + return; + if (this.ws) + this.ws.close(); + this.ws = new this.opts.wsEngine({ + noServer: true, + clientTracking: false, + perMessageDeflate: this.opts.perMessageDeflate, + maxPayload: this.opts.maxHttpBufferSize + }); + if (typeof this.ws.on === "function") { + this.ws.on("headers", (headersArray, req) => { + const additionalHeaders = req[kResponseHeaders] || {}; + delete req[kResponseHeaders]; + const isInitialRequest = !req._query.sid; + if (isInitialRequest) { + this.emit("initial_headers", additionalHeaders, req); + } + this.emit("headers", additionalHeaders, req); + debug("writing headers: %j", additionalHeaders); + Object.keys(additionalHeaders).forEach((key) => { + headersArray.push(`${key}: ${additionalHeaders[key]}`); + }); + }); + } + } + cleanup() { + if (this.ws) { + debug("closing webSocketServer"); + this.ws.close(); + } + } + /** + * Prepares a request by processing the query string. + * + * @api private + */ + prepare(req) { + if (!req._query) { + req._query = ~req.url.indexOf("?") ? qs.parse((0, url_1.parse)(req.url).query) : {}; + } + } + createTransport(transportName, req) { + return new transports_1.default[transportName](req); + } + /** + * Handles an Engine.IO HTTP request. + * + * @param {IncomingMessage} req + * @param {ServerResponse} res + * @api public + */ + handleRequest(req, res) { + debug('handling "%s" http request "%s"', req.method, req.url); + this.prepare(req); + req.res = res; + const callback = (errorCode, errorContext) => { + if (errorCode !== void 0) { + this.emit("connection_error", { + req, + code: errorCode, + message: _Server.errorMessages[errorCode], + context: errorContext + }); + abortRequest(res, errorCode, errorContext); + return; + } + if (req._query.sid) { + debug("setting new request for existing client"); + this.clients[req._query.sid].transport.onRequest(req); + } else { + const closeConnection = (errorCode2, errorContext2) => abortRequest(res, errorCode2, errorContext2); + this.handshake(req._query.transport, req, closeConnection); + } + }; + this._applyMiddlewares(req, res, (err) => { + if (err) { + callback(_Server.errors.BAD_REQUEST, { name: "MIDDLEWARE_FAILURE" }); + } else { + this.verify(req, false, callback); + } + }); + } + /** + * Handles an Engine.IO HTTP Upgrade. + * + * @api public + */ + handleUpgrade(req, socket, upgradeHead) { + this.prepare(req); + const res = new WebSocketResponse(req, socket); + const callback = (errorCode, errorContext) => { + if (errorCode !== void 0) { + this.emit("connection_error", { + req, + code: errorCode, + message: _Server.errorMessages[errorCode], + context: errorContext + }); + abortUpgrade(socket, errorCode, errorContext); + return; + } + const head = Buffer.from(upgradeHead); + upgradeHead = null; + res.writeHead(); + this.ws.handleUpgrade(req, socket, head, (websocket) => { + this.onWebSocket(req, socket, websocket); + }); + }; + this._applyMiddlewares(req, res, (err) => { + if (err) { + callback(_Server.errors.BAD_REQUEST, { name: "MIDDLEWARE_FAILURE" }); + } else { + this.verify(req, true, callback); + } + }); + } + /** + * Called upon a ws.io connection. + * + * @param {ws.Socket} websocket + * @api private + */ + onWebSocket(req, socket, websocket) { + websocket.on("error", onUpgradeError); + if (transports_1.default[req._query.transport] !== void 0 && !transports_1.default[req._query.transport].prototype.handlesUpgrades) { + debug("transport doesnt handle upgraded requests"); + websocket.close(); + return; + } + const id = req._query.sid; + req.websocket = websocket; + if (id) { + const client = this.clients[id]; + if (!client) { + debug("upgrade attempt for closed client"); + websocket.close(); + } else if (client.upgrading) { + debug("transport has already been trying to upgrade"); + websocket.close(); + } else if (client.upgraded) { + debug("transport had already been upgraded"); + websocket.close(); + } else { + debug("upgrading existing transport"); + websocket.removeListener("error", onUpgradeError); + const transport = this.createTransport(req._query.transport, req); + if (req._query && req._query.b64) { + transport.supportsBinary = false; + } else { + transport.supportsBinary = true; + } + transport.perMessageDeflate = this.opts.perMessageDeflate; + client.maybeUpgrade(transport); + } + } else { + const closeConnection = (errorCode, errorContext) => abortUpgrade(socket, errorCode, errorContext); + this.handshake(req._query.transport, req, closeConnection); + } + function onUpgradeError() { + debug("websocket error before upgrade"); + } + } + /** + * Captures upgrade requests for a http.Server. + * + * @param {http.Server} server + * @param {Object} options + * @api public + */ + attach(server2, options = {}) { + const path = this._computePath(options); + const destroyUpgradeTimeout = options.destroyUpgradeTimeout || 1e3; + function check(req) { + return path === req.url.slice(0, path.length); + } + const listeners = server2.listeners("request").slice(0); + server2.removeAllListeners("request"); + server2.on("close", this.close.bind(this)); + server2.on("listening", this.init.bind(this)); + server2.on("request", (req, res) => { + if (check(req)) { + debug('intercepting request for path "%s"', path); + this.handleRequest(req, res); + } else { + let i = 0; + const l = listeners.length; + for (; i < l; i++) { + listeners[i].call(server2, req, res); + } + } + }); + if (~this.opts.transports.indexOf("websocket")) { + server2.on("upgrade", (req, socket, head) => { + if (check(req)) { + this.handleUpgrade(req, socket, head); + } else if (false !== options.destroyUpgrade) { + setTimeout(function() { + if (socket.writable && socket.bytesWritten <= 0) { + socket.on("error", (e) => { + debug("error while destroying upgrade: %s", e.message); + }); + return socket.end(); + } + }, destroyUpgradeTimeout); + } + }); + } + } + }; + exports2.Server = Server2; + function abortRequest(res, errorCode, errorContext) { + const statusCode = errorCode === Server2.errors.FORBIDDEN ? 403 : 400; + const message = errorContext && errorContext.message ? errorContext.message : Server2.errorMessages[errorCode]; + res.writeHead(statusCode, { "Content-Type": "application/json" }); + res.end(JSON.stringify({ + code: errorCode, + message + })); + } + function abortUpgrade(socket, errorCode, errorContext = {}) { + socket.on("error", () => { + debug("ignoring error from closed connection"); + }); + if (socket.writable) { + const message = errorContext.message || Server2.errorMessages[errorCode]; + const length = Buffer.byteLength(message); + socket.write("HTTP/1.1 400 Bad Request\r\nConnection: close\r\nContent-type: text/html\r\nContent-Length: " + length + "\r\n\r\n" + message); + } + socket.destroy(); + } + var validHdrChars = [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + // ... 255 + ]; + function checkInvalidHeaderChar(val) { + val += ""; + if (val.length < 1) + return false; + if (!validHdrChars[val.charCodeAt(0)]) { + debug('invalid header, index 0, char "%s"', val.charCodeAt(0)); + return true; + } + if (val.length < 2) + return false; + if (!validHdrChars[val.charCodeAt(1)]) { + debug('invalid header, index 1, char "%s"', val.charCodeAt(1)); + return true; + } + if (val.length < 3) + return false; + if (!validHdrChars[val.charCodeAt(2)]) { + debug('invalid header, index 2, char "%s"', val.charCodeAt(2)); + return true; + } + if (val.length < 4) + return false; + if (!validHdrChars[val.charCodeAt(3)]) { + debug('invalid header, index 3, char "%s"', val.charCodeAt(3)); + return true; + } + for (let i = 4; i < val.length; ++i) { + if (!validHdrChars[val.charCodeAt(i)]) { + debug('invalid header, index "%i", char "%s"', i, val.charCodeAt(i)); + return true; + } + } + return false; + } + } +}); + +// node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/transports-uws/polling.js +var require_polling2 = __commonJS({ + "node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/transports-uws/polling.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Polling = void 0; + var transport_1 = require_transport(); + var zlib_1 = require("zlib"); + var accepts = require_accepts(); + var debug_1 = require_src(); + var debug = (0, debug_1.default)("engine:polling"); + var compressionMethods = { + gzip: zlib_1.createGzip, + deflate: zlib_1.createDeflate + }; + var Polling = class extends transport_1.Transport { + /** + * HTTP polling constructor. + * + * @api public. + */ + constructor(req) { + super(req); + this.closeTimeout = 30 * 1e3; + } + /** + * Transport name + * + * @api public + */ + get name() { + return "polling"; + } + get supportsFraming() { + return false; + } + /** + * Overrides onRequest. + * + * @param req + * + * @api private + */ + onRequest(req) { + const res = req.res; + if (req.getMethod() === "get") { + this.onPollRequest(req, res); + } else if (req.getMethod() === "post") { + this.onDataRequest(req, res); + } else { + res.writeStatus("500 Internal Server Error"); + res.end(); + } + } + /** + * The client sends a request awaiting for us to send data. + * + * @api private + */ + onPollRequest(req, res) { + if (this.req) { + debug("request overlap"); + this.onError("overlap from client"); + res.writeStatus("500 Internal Server Error"); + res.end(); + return; + } + debug("setting request"); + this.req = req; + this.res = res; + const onClose = () => { + this.writable = false; + this.onError("poll connection closed prematurely"); + }; + const cleanup = () => { + this.req = this.res = null; + }; + req.cleanup = cleanup; + res.onAborted(onClose); + this.writable = true; + this.emit("drain"); + if (this.writable && this.shouldClose) { + debug("triggering empty send to append close packet"); + this.send([{ type: "noop" }]); + } + } + /** + * The client sends a request with data. + * + * @api private + */ + onDataRequest(req, res) { + if (this.dataReq) { + this.onError("data request overlap from client"); + res.writeStatus("500 Internal Server Error"); + res.end(); + return; + } + const expectedContentLength = Number(req.headers["content-length"]); + if (!expectedContentLength) { + this.onError("content-length header required"); + res.writeStatus("411 Length Required").end(); + return; + } + if (expectedContentLength > this.maxHttpBufferSize) { + this.onError("payload too large"); + res.writeStatus("413 Payload Too Large").end(); + return; + } + const isBinary = "application/octet-stream" === req.headers["content-type"]; + if (isBinary && this.protocol === 4) { + return this.onError("invalid content"); + } + this.dataReq = req; + this.dataRes = res; + let buffer; + let offset = 0; + const headers = { + // text/html is required instead of text/plain to avoid an + // unwanted download dialog on certain user-agents (GH-43) + "Content-Type": "text/html" + }; + this.headers(req, headers); + for (let key in headers) { + res.writeHeader(key, String(headers[key])); + } + const onEnd = (buffer2) => { + this.onData(buffer2.toString()); + this.onDataRequestCleanup(); + res.cork(() => { + res.end("ok"); + }); + }; + res.onAborted(() => { + this.onDataRequestCleanup(); + this.onError("data request connection closed prematurely"); + }); + res.onData((arrayBuffer, isLast) => { + const totalLength = offset + arrayBuffer.byteLength; + if (totalLength > expectedContentLength) { + this.onError("content-length mismatch"); + res.close(); + return; + } + if (!buffer) { + if (isLast) { + onEnd(Buffer.from(arrayBuffer)); + return; + } + buffer = Buffer.allocUnsafe(expectedContentLength); + } + Buffer.from(arrayBuffer).copy(buffer, offset); + if (isLast) { + if (totalLength != expectedContentLength) { + this.onError("content-length mismatch"); + res.writeStatus("400 Content-Length Mismatch").end(); + this.onDataRequestCleanup(); + return; + } + onEnd(buffer); + return; + } + offset = totalLength; + }); + } + /** + * Cleanup request. + * + * @api private + */ + onDataRequestCleanup() { + this.dataReq = this.dataRes = null; + } + /** + * Processes the incoming data payload. + * + * @param {String} encoded payload + * @api private + */ + onData(data) { + debug('received "%s"', data); + const callback = (packet) => { + if ("close" === packet.type) { + debug("got xhr close packet"); + this.onClose(); + return false; + } + this.onPacket(packet); + }; + if (this.protocol === 3) { + this.parser.decodePayload(data, callback); + } else { + this.parser.decodePayload(data).forEach(callback); + } + } + /** + * Overrides onClose. + * + * @api private + */ + onClose() { + if (this.writable) { + this.send([{ type: "noop" }]); + } + super.onClose(); + } + /** + * Writes a packet payload. + * + * @param {Object} packet + * @api private + */ + send(packets) { + this.writable = false; + if (this.shouldClose) { + debug("appending close packet to payload"); + packets.push({ type: "close" }); + this.shouldClose(); + this.shouldClose = null; + } + const doWrite = (data) => { + const compress = packets.some((packet) => { + return packet.options && packet.options.compress; + }); + this.write(data, { compress }); + }; + if (this.protocol === 3) { + this.parser.encodePayload(packets, this.supportsBinary, doWrite); + } else { + this.parser.encodePayload(packets, doWrite); + } + } + /** + * Writes data as response to poll request. + * + * @param {String} data + * @param {Object} options + * @api private + */ + write(data, options) { + debug('writing "%s"', data); + this.doWrite(data, options, () => { + this.req.cleanup(); + }); + } + /** + * Performs the write. + * + * @api private + */ + doWrite(data, options, callback) { + const isString = typeof data === "string"; + const contentType = isString ? "text/plain; charset=UTF-8" : "application/octet-stream"; + const headers = { + "Content-Type": contentType + }; + const respond = (data2) => { + this.headers(this.req, headers); + this.res.cork(() => { + Object.keys(headers).forEach((key) => { + this.res.writeHeader(key, String(headers[key])); + }); + this.res.end(data2); + }); + callback(); + }; + if (!this.httpCompression || !options.compress) { + respond(data); + return; + } + const len = isString ? Buffer.byteLength(data) : data.length; + if (len < this.httpCompression.threshold) { + respond(data); + return; + } + const encoding = accepts(this.req).encodings(["gzip", "deflate"]); + if (!encoding) { + respond(data); + return; + } + this.compress(data, encoding, (err, data2) => { + if (err) { + this.res.writeStatus("500 Internal Server Error"); + this.res.end(); + callback(err); + return; + } + headers["Content-Encoding"] = encoding; + respond(data2); + }); + } + /** + * Compresses data. + * + * @api private + */ + compress(data, encoding, callback) { + debug("compressing"); + const buffers = []; + let nread = 0; + compressionMethods[encoding](this.httpCompression).on("error", callback).on("data", function(chunk) { + buffers.push(chunk); + nread += chunk.length; + }).on("end", function() { + callback(null, Buffer.concat(buffers, nread)); + }).end(data); + } + /** + * Closes the transport. + * + * @api private + */ + doClose(fn) { + debug("closing"); + let closeTimeoutTimer; + const onClose = () => { + clearTimeout(closeTimeoutTimer); + fn(); + this.onClose(); + }; + if (this.writable) { + debug("transport writable - closing right away"); + this.send([{ type: "close" }]); + onClose(); + } else if (this.discarded) { + debug("transport discarded - closing right away"); + onClose(); + } else { + debug("transport not writable - buffering orderly close"); + this.shouldClose = onClose; + closeTimeoutTimer = setTimeout(onClose, this.closeTimeout); + } + } + /** + * Returns headers for a response. + * + * @param req - request + * @param {Object} extra headers + * @api private + */ + headers(req, headers) { + headers = headers || {}; + const ua = req.headers["user-agent"]; + if (ua && (~ua.indexOf(";MSIE") || ~ua.indexOf("Trident/"))) { + headers["X-XSS-Protection"] = "0"; + } + this.emit("headers", headers, req); + return headers; + } + }; + exports2.Polling = Polling; + } +}); + +// node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/transports-uws/websocket.js +var require_websocket3 = __commonJS({ + "node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/transports-uws/websocket.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.WebSocket = void 0; + var transport_1 = require_transport(); + var debug_1 = require_src(); + var debug = (0, debug_1.default)("engine:ws"); + var WebSocket = class extends transport_1.Transport { + /** + * WebSocket transport + * + * @param req + * @api public + */ + constructor(req) { + super(req); + this.writable = false; + this.perMessageDeflate = null; + } + /** + * Transport name + * + * @api public + */ + get name() { + return "websocket"; + } + /** + * Advertise upgrade support. + * + * @api public + */ + get handlesUpgrades() { + return true; + } + /** + * Advertise framing support. + * + * @api public + */ + get supportsFraming() { + return true; + } + /** + * Writes a packet payload. + * + * @param {Array} packets + * @api private + */ + send(packets) { + this.writable = false; + for (let i = 0; i < packets.length; i++) { + const packet = packets[i]; + const isLast = i + 1 === packets.length; + const send = (data) => { + const isBinary = typeof data !== "string"; + const compress = this.perMessageDeflate && Buffer.byteLength(data) > this.perMessageDeflate.threshold; + debug('writing "%s"', data); + this.socket.send(data, isBinary, compress); + if (isLast) { + this.writable = true; + this.emit("drain"); + } + }; + if (packet.options && typeof packet.options.wsPreEncoded === "string") { + send(packet.options.wsPreEncoded); + } else { + this.parser.encodePacket(packet, this.supportsBinary, send); + } + } + } + /** + * Closes the transport. + * + * @api private + */ + doClose(fn) { + debug("closing"); + fn && fn(); + this.socket.end(); + } + }; + exports2.WebSocket = WebSocket; + } +}); + +// node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/transports-uws/index.js +var require_transports_uws = __commonJS({ + "node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/transports-uws/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var polling_1 = require_polling2(); + var websocket_1 = require_websocket3(); + exports2.default = { + polling: polling_1.Polling, + websocket: websocket_1.WebSocket + }; + } +}); + +// node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/userver.js +var require_userver = __commonJS({ + "node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/userver.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.uServer = void 0; + var debug_1 = require_src(); + var server_1 = require_server(); + var transports_uws_1 = require_transports_uws(); + var debug = (0, debug_1.default)("engine:uws"); + var uServer = class extends server_1.BaseServer { + init() { + } + cleanup() { + } + /** + * Prepares a request by processing the query string. + * + * @api private + */ + prepare(req, res) { + req.method = req.getMethod().toUpperCase(); + req.url = req.getUrl(); + const params = new URLSearchParams(req.getQuery()); + req._query = Object.fromEntries(params.entries()); + req.headers = {}; + req.forEach((key, value) => { + req.headers[key] = value; + }); + req.connection = { + remoteAddress: Buffer.from(res.getRemoteAddressAsText()).toString() + }; + res.onAborted(() => { + debug("response has been aborted"); + }); + } + createTransport(transportName, req) { + return new transports_uws_1.default[transportName](req); + } + /** + * Attach the engine to a µWebSockets.js server + * @param app + * @param options + */ + attach(app, options = {}) { + const path = this._computePath(options); + app.any(path, this.handleRequest.bind(this)).ws(path, { + compression: options.compression, + idleTimeout: options.idleTimeout, + maxBackpressure: options.maxBackpressure, + maxPayloadLength: this.opts.maxHttpBufferSize, + upgrade: this.handleUpgrade.bind(this), + open: (ws) => { + const transport = ws.getUserData().transport; + transport.socket = ws; + transport.writable = true; + transport.emit("drain"); + }, + message: (ws, message, isBinary) => { + ws.getUserData().transport.onData(isBinary ? message : Buffer.from(message).toString()); + }, + close: (ws, code, message) => { + ws.getUserData().transport.onClose(code, message); + } + }); + } + _applyMiddlewares(req, res, callback) { + if (this.middlewares.length === 0) { + return callback(); + } + req.res = new ResponseWrapper(res); + super._applyMiddlewares(req, req.res, (err) => { + req.res.writeHead(); + callback(err); + }); + } + handleRequest(res, req) { + debug('handling "%s" http request "%s"', req.getMethod(), req.getUrl()); + this.prepare(req, res); + req.res = res; + const callback = (errorCode, errorContext) => { + if (errorCode !== void 0) { + this.emit("connection_error", { + req, + code: errorCode, + message: server_1.Server.errorMessages[errorCode], + context: errorContext + }); + this.abortRequest(req.res, errorCode, errorContext); + return; + } + if (req._query.sid) { + debug("setting new request for existing client"); + this.clients[req._query.sid].transport.onRequest(req); + } else { + const closeConnection = (errorCode2, errorContext2) => this.abortRequest(res, errorCode2, errorContext2); + this.handshake(req._query.transport, req, closeConnection); + } + }; + this._applyMiddlewares(req, res, (err) => { + if (err) { + callback(server_1.Server.errors.BAD_REQUEST, { name: "MIDDLEWARE_FAILURE" }); + } else { + this.verify(req, false, callback); + } + }); + } + handleUpgrade(res, req, context) { + debug("on upgrade"); + this.prepare(req, res); + req.res = res; + const callback = async (errorCode, errorContext) => { + if (errorCode !== void 0) { + this.emit("connection_error", { + req, + code: errorCode, + message: server_1.Server.errorMessages[errorCode], + context: errorContext + }); + this.abortRequest(res, errorCode, errorContext); + return; + } + const id = req._query.sid; + let transport; + if (id) { + const client = this.clients[id]; + if (!client) { + debug("upgrade attempt for closed client"); + res.close(); + } else if (client.upgrading) { + debug("transport has already been trying to upgrade"); + res.close(); + } else if (client.upgraded) { + debug("transport had already been upgraded"); + res.close(); + } else { + debug("upgrading existing transport"); + transport = this.createTransport(req._query.transport, req); + client.maybeUpgrade(transport); + } + } else { + transport = await this.handshake(req._query.transport, req, (errorCode2, errorContext2) => this.abortRequest(res, errorCode2, errorContext2)); + if (!transport) { + return; + } + } + req.res.writeStatus("101 Switching Protocols"); + res.upgrade({ + transport + }, req.getHeader("sec-websocket-key"), req.getHeader("sec-websocket-protocol"), req.getHeader("sec-websocket-extensions"), context); + }; + this._applyMiddlewares(req, res, (err) => { + if (err) { + callback(server_1.Server.errors.BAD_REQUEST, { name: "MIDDLEWARE_FAILURE" }); + } else { + this.verify(req, true, callback); + } + }); + } + abortRequest(res, errorCode, errorContext) { + const statusCode = errorCode === server_1.Server.errors.FORBIDDEN ? "403 Forbidden" : "400 Bad Request"; + const message = errorContext && errorContext.message ? errorContext.message : server_1.Server.errorMessages[errorCode]; + res.writeStatus(statusCode); + res.writeHeader("Content-Type", "application/json"); + res.end(JSON.stringify({ + code: errorCode, + message + })); + } + }; + exports2.uServer = uServer; + var ResponseWrapper = class { + constructor(res) { + this.res = res; + this.statusWritten = false; + this.headers = []; + this.isAborted = false; + } + set statusCode(status) { + if (!status) { + return; + } + this.writeStatus(status === 200 ? "200 OK" : "204 No Content"); + } + writeHead(status) { + this.statusCode = status; + } + setHeader(key, value) { + if (Array.isArray(value)) { + value.forEach((val) => { + this.writeHeader(key, val); + }); + } else { + this.writeHeader(key, value); + } + } + removeHeader() { + } + // needed by vary: https://github.com/jshttp/vary/blob/5d725d059b3871025cf753e9dfa08924d0bcfa8f/index.js#L134 + getHeader() { + } + writeStatus(status) { + if (this.isAborted) + return; + this.res.writeStatus(status); + this.statusWritten = true; + this.writeBufferedHeaders(); + return this; + } + writeHeader(key, value) { + if (this.isAborted) + return; + if (key === "Content-Length") { + return; + } + if (this.statusWritten) { + this.res.writeHeader(key, value); + } else { + this.headers.push([key, value]); + } + } + writeBufferedHeaders() { + this.headers.forEach(([key, value]) => { + this.res.writeHeader(key, value); + }); + } + end(data) { + if (this.isAborted) + return; + this.res.cork(() => { + if (!this.statusWritten) { + this.writeBufferedHeaders(); + } + this.res.end(data); + }); + } + onData(fn) { + if (this.isAborted) + return; + this.res.onData(fn); + } + onAborted(fn) { + if (this.isAborted) + return; + this.res.onAborted(() => { + this.isAborted = true; + fn(); + }); + } + cork(fn) { + if (this.isAborted) + return; + this.res.cork(fn); + } + }; + } +}); + +// node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/engine.io.js +var require_engine_io = __commonJS({ + "node_modules/.pnpm/engine.io@6.5.2/node_modules/engine.io/build/engine.io.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.protocol = exports2.Transport = exports2.Socket = exports2.uServer = exports2.parser = exports2.attach = exports2.listen = exports2.transports = exports2.Server = void 0; + var http_1 = require("http"); + var server_1 = require_server(); + Object.defineProperty(exports2, "Server", { enumerable: true, get: function() { + return server_1.Server; + } }); + var index_1 = require_transports(); + exports2.transports = index_1.default; + var parser = require_cjs(); + exports2.parser = parser; + var userver_1 = require_userver(); + Object.defineProperty(exports2, "uServer", { enumerable: true, get: function() { + return userver_1.uServer; + } }); + var socket_1 = require_socket(); + Object.defineProperty(exports2, "Socket", { enumerable: true, get: function() { + return socket_1.Socket; + } }); + var transport_1 = require_transport(); + Object.defineProperty(exports2, "Transport", { enumerable: true, get: function() { + return transport_1.Transport; + } }); + exports2.protocol = parser.protocol; + function listen(port2, options, fn) { + if ("function" === typeof options) { + fn = options; + options = {}; + } + const server2 = (0, http_1.createServer)(function(req, res) { + res.writeHead(501); + res.end("Not Implemented"); + }); + const engine = attach(server2, options); + engine.httpServer = server2; + server2.listen(port2, fn); + return engine; + } + exports2.listen = listen; + function attach(server2, options) { + const engine = new server_1.Server(options); + engine.attach(server2, options); + return engine; + } + exports2.attach = attach; + } +}); + +// node_modules/.pnpm/@socket.io+component-emitter@3.1.0/node_modules/@socket.io/component-emitter/index.js +var require_component_emitter = __commonJS({ + "node_modules/.pnpm/@socket.io+component-emitter@3.1.0/node_modules/@socket.io/component-emitter/index.js"(exports2) { + exports2.Emitter = Emitter; + function Emitter(obj) { + if (obj) + return mixin(obj); + } + function mixin(obj) { + for (var key in Emitter.prototype) { + obj[key] = Emitter.prototype[key]; + } + return obj; + } + Emitter.prototype.on = Emitter.prototype.addEventListener = function(event, fn) { + this._callbacks = this._callbacks || {}; + (this._callbacks["$" + event] = this._callbacks["$" + event] || []).push(fn); + return this; + }; + Emitter.prototype.once = function(event, fn) { + function on2() { + this.off(event, on2); + fn.apply(this, arguments); + } + on2.fn = fn; + this.on(event, on2); + return this; + }; + Emitter.prototype.off = Emitter.prototype.removeListener = Emitter.prototype.removeAllListeners = Emitter.prototype.removeEventListener = function(event, fn) { + this._callbacks = this._callbacks || {}; + if (0 == arguments.length) { + this._callbacks = {}; + return this; + } + var callbacks = this._callbacks["$" + event]; + if (!callbacks) + return this; + if (1 == arguments.length) { + delete this._callbacks["$" + event]; + return this; + } + var cb; + for (var i = 0; i < callbacks.length; i++) { + cb = callbacks[i]; + if (cb === fn || cb.fn === fn) { + callbacks.splice(i, 1); + break; + } + } + if (callbacks.length === 0) { + delete this._callbacks["$" + event]; + } + return this; + }; + Emitter.prototype.emit = function(event) { + this._callbacks = this._callbacks || {}; + var args = new Array(arguments.length - 1), callbacks = this._callbacks["$" + event]; + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + if (callbacks) { + callbacks = callbacks.slice(0); + for (var i = 0, len = callbacks.length; i < len; ++i) { + callbacks[i].apply(this, args); + } + } + return this; + }; + Emitter.prototype.emitReserved = Emitter.prototype.emit; + Emitter.prototype.listeners = function(event) { + this._callbacks = this._callbacks || {}; + return this._callbacks["$" + event] || []; + }; + Emitter.prototype.hasListeners = function(event) { + return !!this.listeners(event).length; + }; + } +}); + +// node_modules/.pnpm/socket.io-parser@4.2.4/node_modules/socket.io-parser/build/cjs/is-binary.js +var require_is_binary = __commonJS({ + "node_modules/.pnpm/socket.io-parser@4.2.4/node_modules/socket.io-parser/build/cjs/is-binary.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.hasBinary = exports2.isBinary = void 0; + var withNativeArrayBuffer = typeof ArrayBuffer === "function"; + var isView = (obj) => { + return typeof ArrayBuffer.isView === "function" ? ArrayBuffer.isView(obj) : obj.buffer instanceof ArrayBuffer; + }; + var toString = Object.prototype.toString; + var withNativeBlob = typeof Blob === "function" || typeof Blob !== "undefined" && toString.call(Blob) === "[object BlobConstructor]"; + var withNativeFile = typeof File === "function" || typeof File !== "undefined" && toString.call(File) === "[object FileConstructor]"; + function isBinary(obj) { + return withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj)) || withNativeBlob && obj instanceof Blob || withNativeFile && obj instanceof File; + } + exports2.isBinary = isBinary; + function hasBinary(obj, toJSON) { + if (!obj || typeof obj !== "object") { + return false; + } + if (Array.isArray(obj)) { + for (let i = 0, l = obj.length; i < l; i++) { + if (hasBinary(obj[i])) { + return true; + } + } + return false; + } + if (isBinary(obj)) { + return true; + } + if (obj.toJSON && typeof obj.toJSON === "function" && arguments.length === 1) { + return hasBinary(obj.toJSON(), true); + } + for (const key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) { + return true; + } + } + return false; + } + exports2.hasBinary = hasBinary; + } +}); + +// node_modules/.pnpm/socket.io-parser@4.2.4/node_modules/socket.io-parser/build/cjs/binary.js +var require_binary = __commonJS({ + "node_modules/.pnpm/socket.io-parser@4.2.4/node_modules/socket.io-parser/build/cjs/binary.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.reconstructPacket = exports2.deconstructPacket = void 0; + var is_binary_js_1 = require_is_binary(); + function deconstructPacket(packet) { + const buffers = []; + const packetData = packet.data; + const pack = packet; + pack.data = _deconstructPacket(packetData, buffers); + pack.attachments = buffers.length; + return { packet: pack, buffers }; + } + exports2.deconstructPacket = deconstructPacket; + function _deconstructPacket(data, buffers) { + if (!data) + return data; + if ((0, is_binary_js_1.isBinary)(data)) { + const placeholder = { _placeholder: true, num: buffers.length }; + buffers.push(data); + return placeholder; + } else if (Array.isArray(data)) { + const newData = new Array(data.length); + for (let i = 0; i < data.length; i++) { + newData[i] = _deconstructPacket(data[i], buffers); + } + return newData; + } else if (typeof data === "object" && !(data instanceof Date)) { + const newData = {}; + for (const key in data) { + if (Object.prototype.hasOwnProperty.call(data, key)) { + newData[key] = _deconstructPacket(data[key], buffers); + } + } + return newData; + } + return data; + } + function reconstructPacket(packet, buffers) { + packet.data = _reconstructPacket(packet.data, buffers); + delete packet.attachments; + return packet; + } + exports2.reconstructPacket = reconstructPacket; + function _reconstructPacket(data, buffers) { + if (!data) + return data; + if (data && data._placeholder === true) { + const isIndexValid = typeof data.num === "number" && data.num >= 0 && data.num < buffers.length; + if (isIndexValid) { + return buffers[data.num]; + } else { + throw new Error("illegal attachments"); + } + } else if (Array.isArray(data)) { + for (let i = 0; i < data.length; i++) { + data[i] = _reconstructPacket(data[i], buffers); + } + } else if (typeof data === "object") { + for (const key in data) { + if (Object.prototype.hasOwnProperty.call(data, key)) { + data[key] = _reconstructPacket(data[key], buffers); + } + } + } + return data; + } + } +}); + +// node_modules/.pnpm/socket.io-parser@4.2.4/node_modules/socket.io-parser/build/cjs/index.js +var require_cjs2 = __commonJS({ + "node_modules/.pnpm/socket.io-parser@4.2.4/node_modules/socket.io-parser/build/cjs/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Decoder = exports2.Encoder = exports2.PacketType = exports2.protocol = void 0; + var component_emitter_1 = require_component_emitter(); + var binary_js_1 = require_binary(); + var is_binary_js_1 = require_is_binary(); + var debug_1 = require_src(); + var debug = (0, debug_1.default)("socket.io-parser"); + var RESERVED_EVENTS = [ + "connect", + "connect_error", + "disconnect", + "disconnecting", + "newListener", + "removeListener" + // used by the Node.js EventEmitter + ]; + exports2.protocol = 5; + var PacketType; + (function(PacketType2) { + PacketType2[PacketType2["CONNECT"] = 0] = "CONNECT"; + PacketType2[PacketType2["DISCONNECT"] = 1] = "DISCONNECT"; + PacketType2[PacketType2["EVENT"] = 2] = "EVENT"; + PacketType2[PacketType2["ACK"] = 3] = "ACK"; + PacketType2[PacketType2["CONNECT_ERROR"] = 4] = "CONNECT_ERROR"; + PacketType2[PacketType2["BINARY_EVENT"] = 5] = "BINARY_EVENT"; + PacketType2[PacketType2["BINARY_ACK"] = 6] = "BINARY_ACK"; + })(PacketType = exports2.PacketType || (exports2.PacketType = {})); + var Encoder = class { + /** + * Encoder constructor + * + * @param {function} replacer - custom replacer to pass down to JSON.parse + */ + constructor(replacer) { + this.replacer = replacer; + } + /** + * Encode a packet as a single string if non-binary, or as a + * buffer sequence, depending on packet type. + * + * @param {Object} obj - packet object + */ + encode(obj) { + debug("encoding packet %j", obj); + if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) { + if ((0, is_binary_js_1.hasBinary)(obj)) { + return this.encodeAsBinary({ + type: obj.type === PacketType.EVENT ? PacketType.BINARY_EVENT : PacketType.BINARY_ACK, + nsp: obj.nsp, + data: obj.data, + id: obj.id + }); + } + } + return [this.encodeAsString(obj)]; + } + /** + * Encode packet as string. + */ + encodeAsString(obj) { + let str = "" + obj.type; + if (obj.type === PacketType.BINARY_EVENT || obj.type === PacketType.BINARY_ACK) { + str += obj.attachments + "-"; + } + if (obj.nsp && "/" !== obj.nsp) { + str += obj.nsp + ","; + } + if (null != obj.id) { + str += obj.id; + } + if (null != obj.data) { + str += JSON.stringify(obj.data, this.replacer); + } + debug("encoded %j as %s", obj, str); + return str; + } + /** + * Encode packet as 'buffer sequence' by removing blobs, and + * deconstructing packet into object with placeholders and + * a list of buffers. + */ + encodeAsBinary(obj) { + const deconstruction = (0, binary_js_1.deconstructPacket)(obj); + const pack = this.encodeAsString(deconstruction.packet); + const buffers = deconstruction.buffers; + buffers.unshift(pack); + return buffers; + } + }; + exports2.Encoder = Encoder; + function isObject(value) { + return Object.prototype.toString.call(value) === "[object Object]"; + } + var Decoder = class _Decoder extends component_emitter_1.Emitter { + /** + * Decoder constructor + * + * @param {function} reviver - custom reviver to pass down to JSON.stringify + */ + constructor(reviver) { + super(); + this.reviver = reviver; + } + /** + * Decodes an encoded packet string into packet JSON. + * + * @param {String} obj - encoded packet + */ + add(obj) { + let packet; + if (typeof obj === "string") { + if (this.reconstructor) { + throw new Error("got plaintext data when reconstructing a packet"); + } + packet = this.decodeString(obj); + const isBinaryEvent = packet.type === PacketType.BINARY_EVENT; + if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) { + packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK; + this.reconstructor = new BinaryReconstructor(packet); + if (packet.attachments === 0) { + super.emitReserved("decoded", packet); + } + } else { + super.emitReserved("decoded", packet); + } + } else if ((0, is_binary_js_1.isBinary)(obj) || obj.base64) { + if (!this.reconstructor) { + throw new Error("got binary data when not reconstructing a packet"); + } else { + packet = this.reconstructor.takeBinaryData(obj); + if (packet) { + this.reconstructor = null; + super.emitReserved("decoded", packet); + } + } + } else { + throw new Error("Unknown type: " + obj); + } + } + /** + * Decode a packet String (JSON data) + * + * @param {String} str + * @return {Object} packet + */ + decodeString(str) { + let i = 0; + const p = { + type: Number(str.charAt(0)) + }; + if (PacketType[p.type] === void 0) { + throw new Error("unknown packet type " + p.type); + } + if (p.type === PacketType.BINARY_EVENT || p.type === PacketType.BINARY_ACK) { + const start = i + 1; + while (str.charAt(++i) !== "-" && i != str.length) { + } + const buf = str.substring(start, i); + if (buf != Number(buf) || str.charAt(i) !== "-") { + throw new Error("Illegal attachments"); + } + p.attachments = Number(buf); + } + if ("/" === str.charAt(i + 1)) { + const start = i + 1; + while (++i) { + const c = str.charAt(i); + if ("," === c) + break; + if (i === str.length) + break; + } + p.nsp = str.substring(start, i); + } else { + p.nsp = "/"; + } + const next = str.charAt(i + 1); + if ("" !== next && Number(next) == next) { + const start = i + 1; + while (++i) { + const c = str.charAt(i); + if (null == c || Number(c) != c) { + --i; + break; + } + if (i === str.length) + break; + } + p.id = Number(str.substring(start, i + 1)); + } + if (str.charAt(++i)) { + const payload = this.tryParse(str.substr(i)); + if (_Decoder.isPayloadValid(p.type, payload)) { + p.data = payload; + } else { + throw new Error("invalid payload"); + } + } + debug("decoded %s as %j", str, p); + return p; + } + tryParse(str) { + try { + return JSON.parse(str, this.reviver); + } catch (e) { + return false; + } + } + static isPayloadValid(type, payload) { + switch (type) { + case PacketType.CONNECT: + return isObject(payload); + case PacketType.DISCONNECT: + return payload === void 0; + case PacketType.CONNECT_ERROR: + return typeof payload === "string" || isObject(payload); + case PacketType.EVENT: + case PacketType.BINARY_EVENT: + return Array.isArray(payload) && (typeof payload[0] === "number" || typeof payload[0] === "string" && RESERVED_EVENTS.indexOf(payload[0]) === -1); + case PacketType.ACK: + case PacketType.BINARY_ACK: + return Array.isArray(payload); + } + } + /** + * Deallocates a parser's resources + */ + destroy() { + if (this.reconstructor) { + this.reconstructor.finishedReconstruction(); + this.reconstructor = null; + } + } + }; + exports2.Decoder = Decoder; + var BinaryReconstructor = class { + constructor(packet) { + this.packet = packet; + this.buffers = []; + this.reconPack = packet; + } + /** + * Method to be called when binary data received from connection + * after a BINARY_EVENT packet. + * + * @param {Buffer | ArrayBuffer} binData - the raw binary data received + * @return {null | Object} returns null if more binary data is expected or + * a reconstructed packet object if all buffers have been received. + */ + takeBinaryData(binData) { + this.buffers.push(binData); + if (this.buffers.length === this.reconPack.attachments) { + const packet = (0, binary_js_1.reconstructPacket)(this.reconPack, this.buffers); + this.finishedReconstruction(); + return packet; + } + return null; + } + /** + * Cleans up binary packet reconstruction variables. + */ + finishedReconstruction() { + this.reconPack = null; + this.buffers = []; + } + }; + } +}); + +// node_modules/.pnpm/socket.io@4.7.2/node_modules/socket.io/dist/client.js +var require_client = __commonJS({ + "node_modules/.pnpm/socket.io@4.7.2/node_modules/socket.io/dist/client.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Client = void 0; + var socket_io_parser_1 = require_cjs2(); + var debugModule = require_src(); + var url = require("url"); + var debug = debugModule("socket.io:client"); + var Client = class { + /** + * Client constructor. + * + * @param server instance + * @param conn + * @package + */ + constructor(server2, conn) { + this.sockets = /* @__PURE__ */ new Map(); + this.nsps = /* @__PURE__ */ new Map(); + this.server = server2; + this.conn = conn; + this.encoder = server2.encoder; + this.decoder = new server2._parser.Decoder(); + this.id = conn.id; + this.setup(); + } + /** + * @return the reference to the request that originated the Engine.IO connection + * + * @public + */ + get request() { + return this.conn.request; + } + /** + * Sets up event listeners. + * + * @private + */ + setup() { + this.onclose = this.onclose.bind(this); + this.ondata = this.ondata.bind(this); + this.onerror = this.onerror.bind(this); + this.ondecoded = this.ondecoded.bind(this); + this.decoder.on("decoded", this.ondecoded); + this.conn.on("data", this.ondata); + this.conn.on("error", this.onerror); + this.conn.on("close", this.onclose); + this.connectTimeout = setTimeout(() => { + if (this.nsps.size === 0) { + debug("no namespace joined yet, close the client"); + this.close(); + } else { + debug("the client has already joined a namespace, nothing to do"); + } + }, this.server._connectTimeout); + } + /** + * Connects a client to a namespace. + * + * @param {String} name - the namespace + * @param {Object} auth - the auth parameters + * @private + */ + connect(name, auth = {}) { + if (this.server._nsps.has(name)) { + debug("connecting to namespace %s", name); + return this.doConnect(name, auth); + } + this.server._checkNamespace(name, auth, (dynamicNspName) => { + if (dynamicNspName) { + this.doConnect(name, auth); + } else { + debug("creation of namespace %s was denied", name); + this._packet({ + type: socket_io_parser_1.PacketType.CONNECT_ERROR, + nsp: name, + data: { + message: "Invalid namespace" + } + }); + } + }); + } + /** + * Connects a client to a namespace. + * + * @param name - the namespace + * @param {Object} auth - the auth parameters + * + * @private + */ + doConnect(name, auth) { + const nsp = this.server.of(name); + nsp._add(this, auth, (socket) => { + this.sockets.set(socket.id, socket); + this.nsps.set(nsp.name, socket); + if (this.connectTimeout) { + clearTimeout(this.connectTimeout); + this.connectTimeout = void 0; + } + }); + } + /** + * Disconnects from all namespaces and closes transport. + * + * @private + */ + _disconnect() { + for (const socket of this.sockets.values()) { + socket.disconnect(); + } + this.sockets.clear(); + this.close(); + } + /** + * Removes a socket. Called by each `Socket`. + * + * @private + */ + _remove(socket) { + if (this.sockets.has(socket.id)) { + const nsp = this.sockets.get(socket.id).nsp.name; + this.sockets.delete(socket.id); + this.nsps.delete(nsp); + } else { + debug("ignoring remove for %s", socket.id); + } + } + /** + * Closes the underlying connection. + * + * @private + */ + close() { + if ("open" === this.conn.readyState) { + debug("forcing transport close"); + this.conn.close(); + this.onclose("forced server close"); + } + } + /** + * Writes a packet to the transport. + * + * @param {Object} packet object + * @param {Object} opts + * @private + */ + _packet(packet, opts = {}) { + if (this.conn.readyState !== "open") { + debug("ignoring packet write %j", packet); + return; + } + const encodedPackets = opts.preEncoded ? packet : this.encoder.encode(packet); + this.writeToEngine(encodedPackets, opts); + } + writeToEngine(encodedPackets, opts) { + if (opts.volatile && !this.conn.transport.writable) { + debug("volatile packet is discarded since the transport is not currently writable"); + return; + } + const packets = Array.isArray(encodedPackets) ? encodedPackets : [encodedPackets]; + for (const encodedPacket of packets) { + this.conn.write(encodedPacket, opts); + } + } + /** + * Called with incoming transport data. + * + * @private + */ + ondata(data) { + try { + this.decoder.add(data); + } catch (e) { + debug("invalid packet format"); + this.onerror(e); + } + } + /** + * Called when parser fully decodes a packet. + * + * @private + */ + ondecoded(packet) { + let namespace; + let authPayload; + if (this.conn.protocol === 3) { + const parsed = url.parse(packet.nsp, true); + namespace = parsed.pathname; + authPayload = parsed.query; + } else { + namespace = packet.nsp; + authPayload = packet.data; + } + const socket = this.nsps.get(namespace); + if (!socket && packet.type === socket_io_parser_1.PacketType.CONNECT) { + this.connect(namespace, authPayload); + } else if (socket && packet.type !== socket_io_parser_1.PacketType.CONNECT && packet.type !== socket_io_parser_1.PacketType.CONNECT_ERROR) { + process.nextTick(function() { + socket._onpacket(packet); + }); + } else { + debug("invalid state (packet type: %s)", packet.type); + this.close(); + } + } + /** + * Handles an error. + * + * @param {Object} err object + * @private + */ + onerror(err) { + for (const socket of this.sockets.values()) { + socket._onerror(err); + } + this.conn.close(); + } + /** + * Called upon transport close. + * + * @param reason + * @param description + * @private + */ + onclose(reason, description) { + debug("client close with reason %s", reason); + this.destroy(); + for (const socket of this.sockets.values()) { + socket._onclose(reason, description); + } + this.sockets.clear(); + this.decoder.destroy(); + } + /** + * Cleans up event listeners. + * @private + */ + destroy() { + this.conn.removeListener("data", this.ondata); + this.conn.removeListener("error", this.onerror); + this.conn.removeListener("close", this.onclose); + this.decoder.removeListener("decoded", this.ondecoded); + if (this.connectTimeout) { + clearTimeout(this.connectTimeout); + this.connectTimeout = void 0; + } + } + }; + exports2.Client = Client; + } +}); + +// node_modules/.pnpm/socket.io@4.7.2/node_modules/socket.io/dist/typed-events.js +var require_typed_events = __commonJS({ + "node_modules/.pnpm/socket.io@4.7.2/node_modules/socket.io/dist/typed-events.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.StrictEventEmitter = void 0; + var events_1 = require("events"); + var StrictEventEmitter = class extends events_1.EventEmitter { + /** + * Adds the `listener` function as an event listener for `ev`. + * + * @param ev Name of the event + * @param listener Callback function + */ + on(ev, listener) { + return super.on(ev, listener); + } + /** + * Adds a one-time `listener` function as an event listener for `ev`. + * + * @param ev Name of the event + * @param listener Callback function + */ + once(ev, listener) { + return super.once(ev, listener); + } + /** + * Emits an event. + * + * @param ev Name of the event + * @param args Values to send to listeners of this event + */ + emit(ev, ...args) { + return super.emit(ev, ...args); + } + /** + * Emits a reserved event. + * + * This method is `protected`, so that only a class extending + * `StrictEventEmitter` can emit its own reserved events. + * + * @param ev Reserved event name + * @param args Arguments to emit along with the event + */ + emitReserved(ev, ...args) { + return super.emit(ev, ...args); + } + /** + * Emits an event. + * + * This method is `protected`, so that only a class extending + * `StrictEventEmitter` can get around the strict typing. This is useful for + * calling `emit.apply`, which can be called as `emitUntyped.apply`. + * + * @param ev Event name + * @param args Arguments to emit along with the event + */ + emitUntyped(ev, ...args) { + return super.emit(ev, ...args); + } + /** + * Returns the listeners listening to an event. + * + * @param event Event name + * @returns Array of listeners subscribed to `event` + */ + listeners(event) { + return super.listeners(event); + } + }; + exports2.StrictEventEmitter = StrictEventEmitter; + } +}); + +// node_modules/.pnpm/socket.io@4.7.2/node_modules/socket.io/dist/broadcast-operator.js +var require_broadcast_operator = __commonJS({ + "node_modules/.pnpm/socket.io@4.7.2/node_modules/socket.io/dist/broadcast-operator.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.RemoteSocket = exports2.BroadcastOperator = void 0; + var socket_1 = require_socket2(); + var socket_io_parser_1 = require_cjs2(); + var BroadcastOperator = class _BroadcastOperator { + constructor(adapter, rooms = /* @__PURE__ */ new Set(), exceptRooms = /* @__PURE__ */ new Set(), flags = {}) { + this.adapter = adapter; + this.rooms = rooms; + this.exceptRooms = exceptRooms; + this.flags = flags; + } + /** + * Targets a room when emitting. + * + * @example + * // the “foo” event will be broadcast to all connected clients in the “room-101” room + * io.to("room-101").emit("foo", "bar"); + * + * // with an array of rooms (a client will be notified at most once) + * io.to(["room-101", "room-102"]).emit("foo", "bar"); + * + * // with multiple chained calls + * io.to("room-101").to("room-102").emit("foo", "bar"); + * + * @param room - a room, or an array of rooms + * @return a new {@link BroadcastOperator} instance for chaining + */ + to(room) { + const rooms = new Set(this.rooms); + if (Array.isArray(room)) { + room.forEach((r) => rooms.add(r)); + } else { + rooms.add(room); + } + return new _BroadcastOperator(this.adapter, rooms, this.exceptRooms, this.flags); + } + /** + * Targets a room when emitting. Similar to `to()`, but might feel clearer in some cases: + * + * @example + * // disconnect all clients in the "room-101" room + * io.in("room-101").disconnectSockets(); + * + * @param room - a room, or an array of rooms + * @return a new {@link BroadcastOperator} instance for chaining + */ + in(room) { + return this.to(room); + } + /** + * Excludes a room when emitting. + * + * @example + * // the "foo" event will be broadcast to all connected clients, except the ones that are in the "room-101" room + * io.except("room-101").emit("foo", "bar"); + * + * // with an array of rooms + * io.except(["room-101", "room-102"]).emit("foo", "bar"); + * + * // with multiple chained calls + * io.except("room-101").except("room-102").emit("foo", "bar"); + * + * @param room - a room, or an array of rooms + * @return a new {@link BroadcastOperator} instance for chaining + */ + except(room) { + const exceptRooms = new Set(this.exceptRooms); + if (Array.isArray(room)) { + room.forEach((r) => exceptRooms.add(r)); + } else { + exceptRooms.add(room); + } + return new _BroadcastOperator(this.adapter, this.rooms, exceptRooms, this.flags); + } + /** + * Sets the compress flag. + * + * @example + * io.compress(false).emit("hello"); + * + * @param compress - if `true`, compresses the sending data + * @return a new BroadcastOperator instance + */ + compress(compress) { + const flags = Object.assign({}, this.flags, { compress }); + return new _BroadcastOperator(this.adapter, this.rooms, this.exceptRooms, flags); + } + /** + * Sets a modifier for a subsequent event emission that the event data may be lost if the client is not ready to + * receive messages (because of network slowness or other issues, or because they’re connected through long polling + * and is in the middle of a request-response cycle). + * + * @example + * io.volatile.emit("hello"); // the clients may or may not receive it + * + * @return a new BroadcastOperator instance + */ + get volatile() { + const flags = Object.assign({}, this.flags, { volatile: true }); + return new _BroadcastOperator(this.adapter, this.rooms, this.exceptRooms, flags); + } + /** + * Sets a modifier for a subsequent event emission that the event data will only be broadcast to the current node. + * + * @example + * // the “foo” event will be broadcast to all connected clients on this node + * io.local.emit("foo", "bar"); + * + * @return a new {@link BroadcastOperator} instance for chaining + */ + get local() { + const flags = Object.assign({}, this.flags, { local: true }); + return new _BroadcastOperator(this.adapter, this.rooms, this.exceptRooms, flags); + } + /** + * Adds a timeout in milliseconds for the next operation + * + * @example + * io.timeout(1000).emit("some-event", (err, responses) => { + * if (err) { + * // some clients did not acknowledge the event in the given delay + * } else { + * console.log(responses); // one response per client + * } + * }); + * + * @param timeout + */ + timeout(timeout) { + const flags = Object.assign({}, this.flags, { timeout }); + return new _BroadcastOperator(this.adapter, this.rooms, this.exceptRooms, flags); + } + /** + * Emits to all clients. + * + * @example + * // the “foo” event will be broadcast to all connected clients + * io.emit("foo", "bar"); + * + * // the “foo” event will be broadcast to all connected clients in the “room-101” room + * io.to("room-101").emit("foo", "bar"); + * + * // with an acknowledgement expected from all connected clients + * io.timeout(1000).emit("some-event", (err, responses) => { + * if (err) { + * // some clients did not acknowledge the event in the given delay + * } else { + * console.log(responses); // one response per client + * } + * }); + * + * @return Always true + */ + emit(ev, ...args) { + if (socket_1.RESERVED_EVENTS.has(ev)) { + throw new Error(`"${String(ev)}" is a reserved event name`); + } + const data = [ev, ...args]; + const packet = { + type: socket_io_parser_1.PacketType.EVENT, + data + }; + const withAck = typeof data[data.length - 1] === "function"; + if (!withAck) { + this.adapter.broadcast(packet, { + rooms: this.rooms, + except: this.exceptRooms, + flags: this.flags + }); + return true; + } + const ack = data.pop(); + let timedOut = false; + let responses = []; + const timer = setTimeout(() => { + timedOut = true; + ack.apply(this, [ + new Error("operation has timed out"), + this.flags.expectSingleResponse ? null : responses + ]); + }, this.flags.timeout); + let expectedServerCount = -1; + let actualServerCount = 0; + let expectedClientCount = 0; + const checkCompleteness = () => { + if (!timedOut && expectedServerCount === actualServerCount && responses.length === expectedClientCount) { + clearTimeout(timer); + ack.apply(this, [ + null, + this.flags.expectSingleResponse ? null : responses + ]); + } + }; + this.adapter.broadcastWithAck(packet, { + rooms: this.rooms, + except: this.exceptRooms, + flags: this.flags + }, (clientCount) => { + expectedClientCount += clientCount; + actualServerCount++; + checkCompleteness(); + }, (clientResponse) => { + responses.push(clientResponse); + checkCompleteness(); + }); + this.adapter.serverCount().then((serverCount) => { + expectedServerCount = serverCount; + checkCompleteness(); + }); + return true; + } + /** + * Emits an event and waits for an acknowledgement from all clients. + * + * @example + * try { + * const responses = await io.timeout(1000).emitWithAck("some-event"); + * console.log(responses); // one response per client + * } catch (e) { + * // some clients did not acknowledge the event in the given delay + * } + * + * @return a Promise that will be fulfilled when all clients have acknowledged the event + */ + emitWithAck(ev, ...args) { + return new Promise((resolve, reject) => { + args.push((err, responses) => { + if (err) { + err.responses = responses; + return reject(err); + } else { + return resolve(responses); + } + }); + this.emit(ev, ...args); + }); + } + /** + * Gets a list of clients. + * + * @deprecated this method will be removed in the next major release, please use {@link Server#serverSideEmit} or + * {@link fetchSockets} instead. + */ + allSockets() { + if (!this.adapter) { + throw new Error("No adapter for this namespace, are you trying to get the list of clients of a dynamic namespace?"); + } + return this.adapter.sockets(this.rooms); + } + /** + * Returns the matching socket instances. This method works across a cluster of several Socket.IO servers. + * + * Note: this method also works within a cluster of multiple Socket.IO servers, with a compatible {@link Adapter}. + * + * @example + * // return all Socket instances + * const sockets = await io.fetchSockets(); + * + * // return all Socket instances in the "room1" room + * const sockets = await io.in("room1").fetchSockets(); + * + * for (const socket of sockets) { + * console.log(socket.id); + * console.log(socket.handshake); + * console.log(socket.rooms); + * console.log(socket.data); + * + * socket.emit("hello"); + * socket.join("room1"); + * socket.leave("room2"); + * socket.disconnect(); + * } + */ + fetchSockets() { + return this.adapter.fetchSockets({ + rooms: this.rooms, + except: this.exceptRooms, + flags: this.flags + }).then((sockets) => { + return sockets.map((socket) => { + if (socket instanceof socket_1.Socket) { + return socket; + } else { + return new RemoteSocket(this.adapter, socket); + } + }); + }); + } + /** + * Makes the matching socket instances join the specified rooms. + * + * Note: this method also works within a cluster of multiple Socket.IO servers, with a compatible {@link Adapter}. + * + * @example + * + * // make all socket instances join the "room1" room + * io.socketsJoin("room1"); + * + * // make all socket instances in the "room1" room join the "room2" and "room3" rooms + * io.in("room1").socketsJoin(["room2", "room3"]); + * + * @param room - a room, or an array of rooms + */ + socketsJoin(room) { + this.adapter.addSockets({ + rooms: this.rooms, + except: this.exceptRooms, + flags: this.flags + }, Array.isArray(room) ? room : [room]); + } + /** + * Makes the matching socket instances leave the specified rooms. + * + * Note: this method also works within a cluster of multiple Socket.IO servers, with a compatible {@link Adapter}. + * + * @example + * // make all socket instances leave the "room1" room + * io.socketsLeave("room1"); + * + * // make all socket instances in the "room1" room leave the "room2" and "room3" rooms + * io.in("room1").socketsLeave(["room2", "room3"]); + * + * @param room - a room, or an array of rooms + */ + socketsLeave(room) { + this.adapter.delSockets({ + rooms: this.rooms, + except: this.exceptRooms, + flags: this.flags + }, Array.isArray(room) ? room : [room]); + } + /** + * Makes the matching socket instances disconnect. + * + * Note: this method also works within a cluster of multiple Socket.IO servers, with a compatible {@link Adapter}. + * + * @example + * // make all socket instances disconnect (the connections might be kept alive for other namespaces) + * io.disconnectSockets(); + * + * // make all socket instances in the "room1" room disconnect and close the underlying connections + * io.in("room1").disconnectSockets(true); + * + * @param close - whether to close the underlying connection + */ + disconnectSockets(close = false) { + this.adapter.disconnectSockets({ + rooms: this.rooms, + except: this.exceptRooms, + flags: this.flags + }, close); + } + }; + exports2.BroadcastOperator = BroadcastOperator; + var RemoteSocket = class { + constructor(adapter, details) { + this.id = details.id; + this.handshake = details.handshake; + this.rooms = new Set(details.rooms); + this.data = details.data; + this.operator = new BroadcastOperator(adapter, /* @__PURE__ */ new Set([this.id]), /* @__PURE__ */ new Set(), { + expectSingleResponse: true + // so that remoteSocket.emit() with acknowledgement behaves like socket.emit() + }); + } + /** + * Adds a timeout in milliseconds for the next operation. + * + * @example + * const sockets = await io.fetchSockets(); + * + * for (const socket of sockets) { + * if (someCondition) { + * socket.timeout(1000).emit("some-event", (err) => { + * if (err) { + * // the client did not acknowledge the event in the given delay + * } + * }); + * } + * } + * + * // note: if possible, using a room instead of looping over all sockets is preferable + * io.timeout(1000).to(someConditionRoom).emit("some-event", (err, responses) => { + * // ... + * }); + * + * @param timeout + */ + timeout(timeout) { + return this.operator.timeout(timeout); + } + emit(ev, ...args) { + return this.operator.emit(ev, ...args); + } + /** + * Joins a room. + * + * @param {String|Array} room - room or array of rooms + */ + join(room) { + return this.operator.socketsJoin(room); + } + /** + * Leaves a room. + * + * @param {String} room + */ + leave(room) { + return this.operator.socketsLeave(room); + } + /** + * Disconnects this client. + * + * @param {Boolean} close - if `true`, closes the underlying connection + * @return {Socket} self + */ + disconnect(close = false) { + this.operator.disconnectSockets(close); + return this; + } + }; + exports2.RemoteSocket = RemoteSocket; + } +}); + +// node_modules/.pnpm/socket.io@4.7.2/node_modules/socket.io/dist/socket.js +var require_socket2 = __commonJS({ + "node_modules/.pnpm/socket.io@4.7.2/node_modules/socket.io/dist/socket.js"(exports2) { + "use strict"; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Socket = exports2.RESERVED_EVENTS = void 0; + var socket_io_parser_1 = require_cjs2(); + var debug_1 = __importDefault(require_src()); + var typed_events_1 = require_typed_events(); + var base64id_1 = __importDefault(require_base64id()); + var broadcast_operator_1 = require_broadcast_operator(); + var debug = (0, debug_1.default)("socket.io:socket"); + var RECOVERABLE_DISCONNECT_REASONS = /* @__PURE__ */ new Set([ + "transport error", + "transport close", + "forced close", + "ping timeout", + "server shutting down", + "forced server close" + ]); + exports2.RESERVED_EVENTS = /* @__PURE__ */ new Set([ + "connect", + "connect_error", + "disconnect", + "disconnecting", + "newListener", + "removeListener" + ]); + function noop() { + } + var Socket2 = class extends typed_events_1.StrictEventEmitter { + /** + * Interface to a `Client` for a given `Namespace`. + * + * @param {Namespace} nsp + * @param {Client} client + * @param {Object} auth + * @package + */ + constructor(nsp, client, auth, previousSession) { + super(); + this.nsp = nsp; + this.client = client; + this.recovered = false; + this.data = {}; + this.connected = false; + this.acks = /* @__PURE__ */ new Map(); + this.fns = []; + this.flags = {}; + this.server = nsp.server; + this.adapter = this.nsp.adapter; + if (previousSession) { + this.id = previousSession.sid; + this.pid = previousSession.pid; + previousSession.rooms.forEach((room) => this.join(room)); + this.data = previousSession.data; + previousSession.missedPackets.forEach((packet) => { + this.packet({ + type: socket_io_parser_1.PacketType.EVENT, + data: packet + }); + }); + this.recovered = true; + } else { + if (client.conn.protocol === 3) { + this.id = nsp.name !== "/" ? nsp.name + "#" + client.id : client.id; + } else { + this.id = base64id_1.default.generateId(); + } + if (this.server._opts.connectionStateRecovery) { + this.pid = base64id_1.default.generateId(); + } + } + this.handshake = this.buildHandshake(auth); + this.on("error", noop); + } + /** + * Builds the `handshake` BC object + * + * @private + */ + buildHandshake(auth) { + var _a, _b, _c, _d; + return { + headers: ((_a = this.request) === null || _a === void 0 ? void 0 : _a.headers) || {}, + time: /* @__PURE__ */ new Date() + "", + address: this.conn.remoteAddress, + xdomain: !!((_b = this.request) === null || _b === void 0 ? void 0 : _b.headers.origin), + // @ts-ignore + secure: !this.request || !!this.request.connection.encrypted, + issued: +/* @__PURE__ */ new Date(), + url: (_c = this.request) === null || _c === void 0 ? void 0 : _c.url, + // @ts-ignore + query: ((_d = this.request) === null || _d === void 0 ? void 0 : _d._query) || {}, + auth + }; + } + /** + * Emits to this client. + * + * @example + * io.on("connection", (socket) => { + * socket.emit("hello", "world"); + * + * // all serializable datastructures are supported (no need to call JSON.stringify) + * socket.emit("hello", 1, "2", { 3: ["4"], 5: Buffer.from([6]) }); + * + * // with an acknowledgement from the client + * socket.emit("hello", "world", (val) => { + * // ... + * }); + * }); + * + * @return Always returns `true`. + */ + emit(ev, ...args) { + if (exports2.RESERVED_EVENTS.has(ev)) { + throw new Error(`"${String(ev)}" is a reserved event name`); + } + const data = [ev, ...args]; + const packet = { + type: socket_io_parser_1.PacketType.EVENT, + data + }; + if (typeof data[data.length - 1] === "function") { + const id = this.nsp._ids++; + debug("emitting packet with ack id %d", id); + this.registerAckCallback(id, data.pop()); + packet.id = id; + } + const flags = Object.assign({}, this.flags); + this.flags = {}; + if (this.nsp.server.opts.connectionStateRecovery) { + this.adapter.broadcast(packet, { + rooms: /* @__PURE__ */ new Set([this.id]), + except: /* @__PURE__ */ new Set(), + flags + }); + } else { + this.notifyOutgoingListeners(packet); + this.packet(packet, flags); + } + return true; + } + /** + * Emits an event and waits for an acknowledgement + * + * @example + * io.on("connection", async (socket) => { + * // without timeout + * const response = await socket.emitWithAck("hello", "world"); + * + * // with a specific timeout + * try { + * const response = await socket.timeout(1000).emitWithAck("hello", "world"); + * } catch (err) { + * // the client did not acknowledge the event in the given delay + * } + * }); + * + * @return a Promise that will be fulfilled when the client acknowledges the event + */ + emitWithAck(ev, ...args) { + const withErr = this.flags.timeout !== void 0; + return new Promise((resolve, reject) => { + args.push((arg1, arg2) => { + if (withErr) { + return arg1 ? reject(arg1) : resolve(arg2); + } else { + return resolve(arg1); + } + }); + this.emit(ev, ...args); + }); + } + /** + * @private + */ + registerAckCallback(id, ack) { + const timeout = this.flags.timeout; + if (timeout === void 0) { + this.acks.set(id, ack); + return; + } + const timer = setTimeout(() => { + debug("event with ack id %d has timed out after %d ms", id, timeout); + this.acks.delete(id); + ack.call(this, new Error("operation has timed out")); + }, timeout); + this.acks.set(id, (...args) => { + clearTimeout(timer); + ack.apply(this, [null, ...args]); + }); + } + /** + * Targets a room when broadcasting. + * + * @example + * io.on("connection", (socket) => { + * // the “foo” event will be broadcast to all connected clients in the “room-101” room, except this socket + * socket.to("room-101").emit("foo", "bar"); + * + * // the code above is equivalent to: + * io.to("room-101").except(socket.id).emit("foo", "bar"); + * + * // with an array of rooms (a client will be notified at most once) + * socket.to(["room-101", "room-102"]).emit("foo", "bar"); + * + * // with multiple chained calls + * socket.to("room-101").to("room-102").emit("foo", "bar"); + * }); + * + * @param room - a room, or an array of rooms + * @return a new {@link BroadcastOperator} instance for chaining + */ + to(room) { + return this.newBroadcastOperator().to(room); + } + /** + * Targets a room when broadcasting. Similar to `to()`, but might feel clearer in some cases: + * + * @example + * io.on("connection", (socket) => { + * // disconnect all clients in the "room-101" room, except this socket + * socket.in("room-101").disconnectSockets(); + * }); + * + * @param room - a room, or an array of rooms + * @return a new {@link BroadcastOperator} instance for chaining + */ + in(room) { + return this.newBroadcastOperator().in(room); + } + /** + * Excludes a room when broadcasting. + * + * @example + * io.on("connection", (socket) => { + * // the "foo" event will be broadcast to all connected clients, except the ones that are in the "room-101" room + * // and this socket + * socket.except("room-101").emit("foo", "bar"); + * + * // with an array of rooms + * socket.except(["room-101", "room-102"]).emit("foo", "bar"); + * + * // with multiple chained calls + * socket.except("room-101").except("room-102").emit("foo", "bar"); + * }); + * + * @param room - a room, or an array of rooms + * @return a new {@link BroadcastOperator} instance for chaining + */ + except(room) { + return this.newBroadcastOperator().except(room); + } + /** + * Sends a `message` event. + * + * This method mimics the WebSocket.send() method. + * + * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send + * + * @example + * io.on("connection", (socket) => { + * socket.send("hello"); + * + * // this is equivalent to + * socket.emit("message", "hello"); + * }); + * + * @return self + */ + send(...args) { + this.emit("message", ...args); + return this; + } + /** + * Sends a `message` event. Alias of {@link send}. + * + * @return self + */ + write(...args) { + this.emit("message", ...args); + return this; + } + /** + * Writes a packet. + * + * @param {Object} packet - packet object + * @param {Object} opts - options + * @private + */ + packet(packet, opts = {}) { + packet.nsp = this.nsp.name; + opts.compress = false !== opts.compress; + this.client._packet(packet, opts); + } + /** + * Joins a room. + * + * @example + * io.on("connection", (socket) => { + * // join a single room + * socket.join("room1"); + * + * // join multiple rooms + * socket.join(["room1", "room2"]); + * }); + * + * @param {String|Array} rooms - room or array of rooms + * @return a Promise or nothing, depending on the adapter + */ + join(rooms) { + debug("join room %s", rooms); + return this.adapter.addAll(this.id, new Set(Array.isArray(rooms) ? rooms : [rooms])); + } + /** + * Leaves a room. + * + * @example + * io.on("connection", (socket) => { + * // leave a single room + * socket.leave("room1"); + * + * // leave multiple rooms + * socket.leave("room1").leave("room2"); + * }); + * + * @param {String} room + * @return a Promise or nothing, depending on the adapter + */ + leave(room) { + debug("leave room %s", room); + return this.adapter.del(this.id, room); + } + /** + * Leave all rooms. + * + * @private + */ + leaveAll() { + this.adapter.delAll(this.id); + } + /** + * Called by `Namespace` upon successful + * middleware execution (ie: authorization). + * Socket is added to namespace array before + * call to join, so adapters can access it. + * + * @private + */ + _onconnect() { + debug("socket connected - writing packet"); + this.connected = true; + this.join(this.id); + if (this.conn.protocol === 3) { + this.packet({ type: socket_io_parser_1.PacketType.CONNECT }); + } else { + this.packet({ + type: socket_io_parser_1.PacketType.CONNECT, + data: { sid: this.id, pid: this.pid } + }); + } + } + /** + * Called with each packet. Called by `Client`. + * + * @param {Object} packet + * @private + */ + _onpacket(packet) { + debug("got packet %j", packet); + switch (packet.type) { + case socket_io_parser_1.PacketType.EVENT: + this.onevent(packet); + break; + case socket_io_parser_1.PacketType.BINARY_EVENT: + this.onevent(packet); + break; + case socket_io_parser_1.PacketType.ACK: + this.onack(packet); + break; + case socket_io_parser_1.PacketType.BINARY_ACK: + this.onack(packet); + break; + case socket_io_parser_1.PacketType.DISCONNECT: + this.ondisconnect(); + break; + } + } + /** + * Called upon event packet. + * + * @param {Packet} packet - packet object + * @private + */ + onevent(packet) { + const args = packet.data || []; + debug("emitting event %j", args); + if (null != packet.id) { + debug("attaching ack callback to event"); + args.push(this.ack(packet.id)); + } + if (this._anyListeners && this._anyListeners.length) { + const listeners = this._anyListeners.slice(); + for (const listener of listeners) { + listener.apply(this, args); + } + } + this.dispatch(args); + } + /** + * Produces an ack callback to emit with an event. + * + * @param {Number} id - packet id + * @private + */ + ack(id) { + const self = this; + let sent = false; + return function() { + if (sent) + return; + const args = Array.prototype.slice.call(arguments); + debug("sending ack %j", args); + self.packet({ + id, + type: socket_io_parser_1.PacketType.ACK, + data: args + }); + sent = true; + }; + } + /** + * Called upon ack packet. + * + * @private + */ + onack(packet) { + const ack = this.acks.get(packet.id); + if ("function" == typeof ack) { + debug("calling ack %s with %j", packet.id, packet.data); + ack.apply(this, packet.data); + this.acks.delete(packet.id); + } else { + debug("bad ack %s", packet.id); + } + } + /** + * Called upon client disconnect packet. + * + * @private + */ + ondisconnect() { + debug("got disconnect packet"); + this._onclose("client namespace disconnect"); + } + /** + * Handles a client error. + * + * @private + */ + _onerror(err) { + this.emitReserved("error", err); + } + /** + * Called upon closing. Called by `Client`. + * + * @param {String} reason + * @param description + * @throw {Error} optional error object + * + * @private + */ + _onclose(reason, description) { + if (!this.connected) + return this; + debug("closing socket - reason %s", reason); + this.emitReserved("disconnecting", reason, description); + if (this.server._opts.connectionStateRecovery && RECOVERABLE_DISCONNECT_REASONS.has(reason)) { + debug("connection state recovery is enabled for sid %s", this.id); + this.adapter.persistSession({ + sid: this.id, + pid: this.pid, + rooms: [...this.rooms], + data: this.data + }); + } + this._cleanup(); + this.client._remove(this); + this.connected = false; + this.emitReserved("disconnect", reason, description); + return; + } + /** + * Makes the socket leave all the rooms it was part of and prevents it from joining any other room + * + * @private + */ + _cleanup() { + this.leaveAll(); + this.nsp._remove(this); + this.join = noop; + } + /** + * Produces an `error` packet. + * + * @param {Object} err - error object + * + * @private + */ + _error(err) { + this.packet({ type: socket_io_parser_1.PacketType.CONNECT_ERROR, data: err }); + } + /** + * Disconnects this client. + * + * @example + * io.on("connection", (socket) => { + * // disconnect this socket (the connection might be kept alive for other namespaces) + * socket.disconnect(); + * + * // disconnect this socket and close the underlying connection + * socket.disconnect(true); + * }) + * + * @param {Boolean} close - if `true`, closes the underlying connection + * @return self + */ + disconnect(close = false) { + if (!this.connected) + return this; + if (close) { + this.client._disconnect(); + } else { + this.packet({ type: socket_io_parser_1.PacketType.DISCONNECT }); + this._onclose("server namespace disconnect"); + } + return this; + } + /** + * Sets the compress flag. + * + * @example + * io.on("connection", (socket) => { + * socket.compress(false).emit("hello"); + * }); + * + * @param {Boolean} compress - if `true`, compresses the sending data + * @return {Socket} self + */ + compress(compress) { + this.flags.compress = compress; + return this; + } + /** + * Sets a modifier for a subsequent event emission that the event data may be lost if the client is not ready to + * receive messages (because of network slowness or other issues, or because they’re connected through long polling + * and is in the middle of a request-response cycle). + * + * @example + * io.on("connection", (socket) => { + * socket.volatile.emit("hello"); // the client may or may not receive it + * }); + * + * @return {Socket} self + */ + get volatile() { + this.flags.volatile = true; + return this; + } + /** + * Sets a modifier for a subsequent event emission that the event data will only be broadcast to every sockets but the + * sender. + * + * @example + * io.on("connection", (socket) => { + * // the “foo” event will be broadcast to all connected clients, except this socket + * socket.broadcast.emit("foo", "bar"); + * }); + * + * @return a new {@link BroadcastOperator} instance for chaining + */ + get broadcast() { + return this.newBroadcastOperator(); + } + /** + * Sets a modifier for a subsequent event emission that the event data will only be broadcast to the current node. + * + * @example + * io.on("connection", (socket) => { + * // the “foo” event will be broadcast to all connected clients on this node, except this socket + * socket.local.emit("foo", "bar"); + * }); + * + * @return a new {@link BroadcastOperator} instance for chaining + */ + get local() { + return this.newBroadcastOperator().local; + } + /** + * Sets a modifier for a subsequent event emission that the callback will be called with an error when the + * given number of milliseconds have elapsed without an acknowledgement from the client: + * + * @example + * io.on("connection", (socket) => { + * socket.timeout(5000).emit("my-event", (err) => { + * if (err) { + * // the client did not acknowledge the event in the given delay + * } + * }); + * }); + * + * @returns self + */ + timeout(timeout) { + this.flags.timeout = timeout; + return this; + } + /** + * Dispatch incoming event to socket listeners. + * + * @param {Array} event - event that will get emitted + * @private + */ + dispatch(event) { + debug("dispatching an event %j", event); + this.run(event, (err) => { + process.nextTick(() => { + if (err) { + return this._onerror(err); + } + if (this.connected) { + super.emitUntyped.apply(this, event); + } else { + debug("ignore packet received after disconnection"); + } + }); + }); + } + /** + * Sets up socket middleware. + * + * @example + * io.on("connection", (socket) => { + * socket.use(([event, ...args], next) => { + * if (isUnauthorized(event)) { + * return next(new Error("unauthorized event")); + * } + * // do not forget to call next + * next(); + * }); + * + * socket.on("error", (err) => { + * if (err && err.message === "unauthorized event") { + * socket.disconnect(); + * } + * }); + * }); + * + * @param {Function} fn - middleware function (event, next) + * @return {Socket} self + */ + use(fn) { + this.fns.push(fn); + return this; + } + /** + * Executes the middleware for an incoming event. + * + * @param {Array} event - event that will get emitted + * @param {Function} fn - last fn call in the middleware + * @private + */ + run(event, fn) { + const fns = this.fns.slice(0); + if (!fns.length) + return fn(null); + function run(i) { + fns[i](event, function(err) { + if (err) + return fn(err); + if (!fns[i + 1]) + return fn(null); + run(i + 1); + }); + } + run(0); + } + /** + * Whether the socket is currently disconnected + */ + get disconnected() { + return !this.connected; + } + /** + * A reference to the request that originated the underlying Engine.IO Socket. + */ + get request() { + return this.client.request; + } + /** + * A reference to the underlying Client transport connection (Engine.IO Socket object). + * + * @example + * io.on("connection", (socket) => { + * console.log(socket.conn.transport.name); // prints "polling" or "websocket" + * + * socket.conn.once("upgrade", () => { + * console.log(socket.conn.transport.name); // prints "websocket" + * }); + * }); + */ + get conn() { + return this.client.conn; + } + /** + * Returns the rooms the socket is currently in. + * + * @example + * io.on("connection", (socket) => { + * console.log(socket.rooms); // Set { } + * + * socket.join("room1"); + * + * console.log(socket.rooms); // Set { , "room1" } + * }); + */ + get rooms() { + return this.adapter.socketRooms(this.id) || /* @__PURE__ */ new Set(); + } + /** + * Adds a listener that will be fired when any event is received. The event name is passed as the first argument to + * the callback. + * + * @example + * io.on("connection", (socket) => { + * socket.onAny((event, ...args) => { + * console.log(`got event ${event}`); + * }); + * }); + * + * @param listener + */ + onAny(listener) { + this._anyListeners = this._anyListeners || []; + this._anyListeners.push(listener); + return this; + } + /** + * Adds a listener that will be fired when any event is received. The event name is passed as the first argument to + * the callback. The listener is added to the beginning of the listeners array. + * + * @param listener + */ + prependAny(listener) { + this._anyListeners = this._anyListeners || []; + this._anyListeners.unshift(listener); + return this; + } + /** + * Removes the listener that will be fired when any event is received. + * + * @example + * io.on("connection", (socket) => { + * const catchAllListener = (event, ...args) => { + * console.log(`got event ${event}`); + * } + * + * socket.onAny(catchAllListener); + * + * // remove a specific listener + * socket.offAny(catchAllListener); + * + * // or remove all listeners + * socket.offAny(); + * }); + * + * @param listener + */ + offAny(listener) { + if (!this._anyListeners) { + return this; + } + if (listener) { + const listeners = this._anyListeners; + for (let i = 0; i < listeners.length; i++) { + if (listener === listeners[i]) { + listeners.splice(i, 1); + return this; + } + } + } else { + this._anyListeners = []; + } + return this; + } + /** + * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated, + * e.g. to remove listeners. + */ + listenersAny() { + return this._anyListeners || []; + } + /** + * Adds a listener that will be fired when any event is sent. The event name is passed as the first argument to + * the callback. + * + * Note: acknowledgements sent to the client are not included. + * + * @example + * io.on("connection", (socket) => { + * socket.onAnyOutgoing((event, ...args) => { + * console.log(`sent event ${event}`); + * }); + * }); + * + * @param listener + */ + onAnyOutgoing(listener) { + this._anyOutgoingListeners = this._anyOutgoingListeners || []; + this._anyOutgoingListeners.push(listener); + return this; + } + /** + * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the + * callback. The listener is added to the beginning of the listeners array. + * + * @example + * io.on("connection", (socket) => { + * socket.prependAnyOutgoing((event, ...args) => { + * console.log(`sent event ${event}`); + * }); + * }); + * + * @param listener + */ + prependAnyOutgoing(listener) { + this._anyOutgoingListeners = this._anyOutgoingListeners || []; + this._anyOutgoingListeners.unshift(listener); + return this; + } + /** + * Removes the listener that will be fired when any event is sent. + * + * @example + * io.on("connection", (socket) => { + * const catchAllListener = (event, ...args) => { + * console.log(`sent event ${event}`); + * } + * + * socket.onAnyOutgoing(catchAllListener); + * + * // remove a specific listener + * socket.offAnyOutgoing(catchAllListener); + * + * // or remove all listeners + * socket.offAnyOutgoing(); + * }); + * + * @param listener - the catch-all listener + */ + offAnyOutgoing(listener) { + if (!this._anyOutgoingListeners) { + return this; + } + if (listener) { + const listeners = this._anyOutgoingListeners; + for (let i = 0; i < listeners.length; i++) { + if (listener === listeners[i]) { + listeners.splice(i, 1); + return this; + } + } + } else { + this._anyOutgoingListeners = []; + } + return this; + } + /** + * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated, + * e.g. to remove listeners. + */ + listenersAnyOutgoing() { + return this._anyOutgoingListeners || []; + } + /** + * Notify the listeners for each packet sent (emit or broadcast) + * + * @param packet + * + * @private + */ + notifyOutgoingListeners(packet) { + if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) { + const listeners = this._anyOutgoingListeners.slice(); + for (const listener of listeners) { + listener.apply(this, packet.data); + } + } + } + newBroadcastOperator() { + const flags = Object.assign({}, this.flags); + this.flags = {}; + return new broadcast_operator_1.BroadcastOperator(this.adapter, /* @__PURE__ */ new Set(), /* @__PURE__ */ new Set([this.id]), flags); + } + }; + exports2.Socket = Socket2; + } +}); + +// node_modules/.pnpm/socket.io@4.7.2/node_modules/socket.io/dist/namespace.js +var require_namespace = __commonJS({ + "node_modules/.pnpm/socket.io@4.7.2/node_modules/socket.io/dist/namespace.js"(exports2) { + "use strict"; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Namespace = exports2.RESERVED_EVENTS = void 0; + var socket_1 = require_socket2(); + var typed_events_1 = require_typed_events(); + var debug_1 = __importDefault(require_src()); + var broadcast_operator_1 = require_broadcast_operator(); + var debug = (0, debug_1.default)("socket.io:namespace"); + exports2.RESERVED_EVENTS = /* @__PURE__ */ new Set(["connect", "connection", "new_namespace"]); + var Namespace2 = class extends typed_events_1.StrictEventEmitter { + /** + * Namespace constructor. + * + * @param server instance + * @param name + */ + constructor(server2, name) { + super(); + this.sockets = /* @__PURE__ */ new Map(); + this._fns = []; + this._ids = 0; + this.server = server2; + this.name = name; + this._initAdapter(); + } + /** + * Initializes the `Adapter` for this nsp. + * Run upon changing adapter by `Server#adapter` + * in addition to the constructor. + * + * @private + */ + _initAdapter() { + this.adapter = new (this.server.adapter())(this); + } + /** + * Registers a middleware, which is a function that gets executed for every incoming {@link Socket}. + * + * @example + * const myNamespace = io.of("/my-namespace"); + * + * myNamespace.use((socket, next) => { + * // ... + * next(); + * }); + * + * @param fn - the middleware function + */ + use(fn) { + this._fns.push(fn); + return this; + } + /** + * Executes the middleware for an incoming client. + * + * @param socket - the socket that will get added + * @param fn - last fn call in the middleware + * @private + */ + run(socket, fn) { + const fns = this._fns.slice(0); + if (!fns.length) + return fn(null); + function run(i) { + fns[i](socket, function(err) { + if (err) + return fn(err); + if (!fns[i + 1]) + return fn(null); + run(i + 1); + }); + } + run(0); + } + /** + * Targets a room when emitting. + * + * @example + * const myNamespace = io.of("/my-namespace"); + * + * // the “foo” event will be broadcast to all connected clients in the “room-101” room + * myNamespace.to("room-101").emit("foo", "bar"); + * + * // with an array of rooms (a client will be notified at most once) + * myNamespace.to(["room-101", "room-102"]).emit("foo", "bar"); + * + * // with multiple chained calls + * myNamespace.to("room-101").to("room-102").emit("foo", "bar"); + * + * @param room - a room, or an array of rooms + * @return a new {@link BroadcastOperator} instance for chaining + */ + to(room) { + return new broadcast_operator_1.BroadcastOperator(this.adapter).to(room); + } + /** + * Targets a room when emitting. Similar to `to()`, but might feel clearer in some cases: + * + * @example + * const myNamespace = io.of("/my-namespace"); + * + * // disconnect all clients in the "room-101" room + * myNamespace.in("room-101").disconnectSockets(); + * + * @param room - a room, or an array of rooms + * @return a new {@link BroadcastOperator} instance for chaining + */ + in(room) { + return new broadcast_operator_1.BroadcastOperator(this.adapter).in(room); + } + /** + * Excludes a room when emitting. + * + * @example + * const myNamespace = io.of("/my-namespace"); + * + * // the "foo" event will be broadcast to all connected clients, except the ones that are in the "room-101" room + * myNamespace.except("room-101").emit("foo", "bar"); + * + * // with an array of rooms + * myNamespace.except(["room-101", "room-102"]).emit("foo", "bar"); + * + * // with multiple chained calls + * myNamespace.except("room-101").except("room-102").emit("foo", "bar"); + * + * @param room - a room, or an array of rooms + * @return a new {@link BroadcastOperator} instance for chaining + */ + except(room) { + return new broadcast_operator_1.BroadcastOperator(this.adapter).except(room); + } + /** + * Adds a new client. + * + * @return {Socket} + * @private + */ + async _add(client, auth, fn) { + var _a; + debug("adding socket to nsp %s", this.name); + const socket = await this._createSocket(client, auth); + if ( + // @ts-ignore + ((_a = this.server.opts.connectionStateRecovery) === null || _a === void 0 ? void 0 : _a.skipMiddlewares) && socket.recovered && client.conn.readyState === "open" + ) { + return this._doConnect(socket, fn); + } + this.run(socket, (err) => { + process.nextTick(() => { + if ("open" !== client.conn.readyState) { + debug("next called after client was closed - ignoring socket"); + socket._cleanup(); + return; + } + if (err) { + debug("middleware error, sending CONNECT_ERROR packet to the client"); + socket._cleanup(); + if (client.conn.protocol === 3) { + return socket._error(err.data || err.message); + } else { + return socket._error({ + message: err.message, + data: err.data + }); + } + } + this._doConnect(socket, fn); + }); + }); + } + async _createSocket(client, auth) { + const sessionId = auth.pid; + const offset = auth.offset; + if ( + // @ts-ignore + this.server.opts.connectionStateRecovery && typeof sessionId === "string" && typeof offset === "string" + ) { + let session; + try { + session = await this.adapter.restoreSession(sessionId, offset); + } catch (e) { + debug("error while restoring session: %s", e); + } + if (session) { + debug("connection state recovered for sid %s", session.sid); + return new socket_1.Socket(this, client, auth, session); + } + } + return new socket_1.Socket(this, client, auth); + } + _doConnect(socket, fn) { + this.sockets.set(socket.id, socket); + socket._onconnect(); + if (fn) + fn(socket); + this.emitReserved("connect", socket); + this.emitReserved("connection", socket); + } + /** + * Removes a client. Called by each `Socket`. + * + * @private + */ + _remove(socket) { + if (this.sockets.has(socket.id)) { + this.sockets.delete(socket.id); + } else { + debug("ignoring remove for %s", socket.id); + } + } + /** + * Emits to all connected clients. + * + * @example + * const myNamespace = io.of("/my-namespace"); + * + * myNamespace.emit("hello", "world"); + * + * // all serializable datastructures are supported (no need to call JSON.stringify) + * myNamespace.emit("hello", 1, "2", { 3: ["4"], 5: Uint8Array.from([6]) }); + * + * // with an acknowledgement from the clients + * myNamespace.timeout(1000).emit("some-event", (err, responses) => { + * if (err) { + * // some clients did not acknowledge the event in the given delay + * } else { + * console.log(responses); // one response per client + * } + * }); + * + * @return Always true + */ + emit(ev, ...args) { + return new broadcast_operator_1.BroadcastOperator(this.adapter).emit(ev, ...args); + } + /** + * Emits an event and waits for an acknowledgement from all clients. + * + * @example + * const myNamespace = io.of("/my-namespace"); + * + * try { + * const responses = await myNamespace.timeout(1000).emitWithAck("some-event"); + * console.log(responses); // one response per client + * } catch (e) { + * // some clients did not acknowledge the event in the given delay + * } + * + * @return a Promise that will be fulfilled when all clients have acknowledged the event + */ + emitWithAck(ev, ...args) { + return new broadcast_operator_1.BroadcastOperator(this.adapter).emitWithAck(ev, ...args); + } + /** + * Sends a `message` event to all clients. + * + * This method mimics the WebSocket.send() method. + * + * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send + * + * @example + * const myNamespace = io.of("/my-namespace"); + * + * myNamespace.send("hello"); + * + * // this is equivalent to + * myNamespace.emit("message", "hello"); + * + * @return self + */ + send(...args) { + this.emit("message", ...args); + return this; + } + /** + * Sends a `message` event to all clients. Sends a `message` event. Alias of {@link send}. + * + * @return self + */ + write(...args) { + this.emit("message", ...args); + return this; + } + /** + * Sends a message to the other Socket.IO servers of the cluster. + * + * @example + * const myNamespace = io.of("/my-namespace"); + * + * myNamespace.serverSideEmit("hello", "world"); + * + * myNamespace.on("hello", (arg1) => { + * console.log(arg1); // prints "world" + * }); + * + * // acknowledgements (without binary content) are supported too: + * myNamespace.serverSideEmit("ping", (err, responses) => { + * if (err) { + * // some servers did not acknowledge the event in the given delay + * } else { + * console.log(responses); // one response per server (except the current one) + * } + * }); + * + * myNamespace.on("ping", (cb) => { + * cb("pong"); + * }); + * + * @param ev - the event name + * @param args - an array of arguments, which may include an acknowledgement callback at the end + */ + serverSideEmit(ev, ...args) { + if (exports2.RESERVED_EVENTS.has(ev)) { + throw new Error(`"${String(ev)}" is a reserved event name`); + } + args.unshift(ev); + this.adapter.serverSideEmit(args); + return true; + } + /** + * Sends a message and expect an acknowledgement from the other Socket.IO servers of the cluster. + * + * @example + * const myNamespace = io.of("/my-namespace"); + * + * try { + * const responses = await myNamespace.serverSideEmitWithAck("ping"); + * console.log(responses); // one response per server (except the current one) + * } catch (e) { + * // some servers did not acknowledge the event in the given delay + * } + * + * @param ev - the event name + * @param args - an array of arguments + * + * @return a Promise that will be fulfilled when all servers have acknowledged the event + */ + serverSideEmitWithAck(ev, ...args) { + return new Promise((resolve, reject) => { + args.push((err, responses) => { + if (err) { + err.responses = responses; + return reject(err); + } else { + return resolve(responses); + } + }); + this.serverSideEmit(ev, ...args); + }); + } + /** + * Called when a packet is received from another Socket.IO server + * + * @param args - an array of arguments, which may include an acknowledgement callback at the end + * + * @private + */ + _onServerSideEmit(args) { + super.emitUntyped.apply(this, args); + } + /** + * Gets a list of clients. + * + * @deprecated this method will be removed in the next major release, please use {@link Namespace#serverSideEmit} or + * {@link Namespace#fetchSockets} instead. + */ + allSockets() { + return new broadcast_operator_1.BroadcastOperator(this.adapter).allSockets(); + } + /** + * Sets the compress flag. + * + * @example + * const myNamespace = io.of("/my-namespace"); + * + * myNamespace.compress(false).emit("hello"); + * + * @param compress - if `true`, compresses the sending data + * @return self + */ + compress(compress) { + return new broadcast_operator_1.BroadcastOperator(this.adapter).compress(compress); + } + /** + * Sets a modifier for a subsequent event emission that the event data may be lost if the client is not ready to + * receive messages (because of network slowness or other issues, or because they’re connected through long polling + * and is in the middle of a request-response cycle). + * + * @example + * const myNamespace = io.of("/my-namespace"); + * + * myNamespace.volatile.emit("hello"); // the clients may or may not receive it + * + * @return self + */ + get volatile() { + return new broadcast_operator_1.BroadcastOperator(this.adapter).volatile; + } + /** + * Sets a modifier for a subsequent event emission that the event data will only be broadcast to the current node. + * + * @example + * const myNamespace = io.of("/my-namespace"); + * + * // the “foo” event will be broadcast to all connected clients on this node + * myNamespace.local.emit("foo", "bar"); + * + * @return a new {@link BroadcastOperator} instance for chaining + */ + get local() { + return new broadcast_operator_1.BroadcastOperator(this.adapter).local; + } + /** + * Adds a timeout in milliseconds for the next operation. + * + * @example + * const myNamespace = io.of("/my-namespace"); + * + * myNamespace.timeout(1000).emit("some-event", (err, responses) => { + * if (err) { + * // some clients did not acknowledge the event in the given delay + * } else { + * console.log(responses); // one response per client + * } + * }); + * + * @param timeout + */ + timeout(timeout) { + return new broadcast_operator_1.BroadcastOperator(this.adapter).timeout(timeout); + } + /** + * Returns the matching socket instances. + * + * Note: this method also works within a cluster of multiple Socket.IO servers, with a compatible {@link Adapter}. + * + * @example + * const myNamespace = io.of("/my-namespace"); + * + * // return all Socket instances + * const sockets = await myNamespace.fetchSockets(); + * + * // return all Socket instances in the "room1" room + * const sockets = await myNamespace.in("room1").fetchSockets(); + * + * for (const socket of sockets) { + * console.log(socket.id); + * console.log(socket.handshake); + * console.log(socket.rooms); + * console.log(socket.data); + * + * socket.emit("hello"); + * socket.join("room1"); + * socket.leave("room2"); + * socket.disconnect(); + * } + */ + fetchSockets() { + return new broadcast_operator_1.BroadcastOperator(this.adapter).fetchSockets(); + } + /** + * Makes the matching socket instances join the specified rooms. + * + * Note: this method also works within a cluster of multiple Socket.IO servers, with a compatible {@link Adapter}. + * + * @example + * const myNamespace = io.of("/my-namespace"); + * + * // make all socket instances join the "room1" room + * myNamespace.socketsJoin("room1"); + * + * // make all socket instances in the "room1" room join the "room2" and "room3" rooms + * myNamespace.in("room1").socketsJoin(["room2", "room3"]); + * + * @param room - a room, or an array of rooms + */ + socketsJoin(room) { + return new broadcast_operator_1.BroadcastOperator(this.adapter).socketsJoin(room); + } + /** + * Makes the matching socket instances leave the specified rooms. + * + * Note: this method also works within a cluster of multiple Socket.IO servers, with a compatible {@link Adapter}. + * + * @example + * const myNamespace = io.of("/my-namespace"); + * + * // make all socket instances leave the "room1" room + * myNamespace.socketsLeave("room1"); + * + * // make all socket instances in the "room1" room leave the "room2" and "room3" rooms + * myNamespace.in("room1").socketsLeave(["room2", "room3"]); + * + * @param room - a room, or an array of rooms + */ + socketsLeave(room) { + return new broadcast_operator_1.BroadcastOperator(this.adapter).socketsLeave(room); + } + /** + * Makes the matching socket instances disconnect. + * + * Note: this method also works within a cluster of multiple Socket.IO servers, with a compatible {@link Adapter}. + * + * @example + * const myNamespace = io.of("/my-namespace"); + * + * // make all socket instances disconnect (the connections might be kept alive for other namespaces) + * myNamespace.disconnectSockets(); + * + * // make all socket instances in the "room1" room disconnect and close the underlying connections + * myNamespace.in("room1").disconnectSockets(true); + * + * @param close - whether to close the underlying connection + */ + disconnectSockets(close = false) { + return new broadcast_operator_1.BroadcastOperator(this.adapter).disconnectSockets(close); + } + }; + exports2.Namespace = Namespace2; + } +}); + +// node_modules/.pnpm/socket.io@4.7.2/node_modules/socket.io/dist/parent-namespace.js +var require_parent_namespace = __commonJS({ + "node_modules/.pnpm/socket.io@4.7.2/node_modules/socket.io/dist/parent-namespace.js"(exports2) { + "use strict"; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ParentNamespace = void 0; + var namespace_1 = require_namespace(); + var debug_1 = __importDefault(require_src()); + var debug = (0, debug_1.default)("socket.io:parent-namespace"); + var ParentNamespace = class _ParentNamespace extends namespace_1.Namespace { + constructor(server2) { + super(server2, "/_" + _ParentNamespace.count++); + this.children = /* @__PURE__ */ new Set(); + } + /** + * @private + */ + _initAdapter() { + const broadcast = (packet, opts) => { + this.children.forEach((nsp) => { + nsp.adapter.broadcast(packet, opts); + }); + }; + this.adapter = { broadcast }; + } + emit(ev, ...args) { + this.children.forEach((nsp) => { + nsp.emit(ev, ...args); + }); + return true; + } + createChild(name) { + debug("creating child namespace %s", name); + const namespace = new namespace_1.Namespace(this.server, name); + namespace._fns = this._fns.slice(0); + this.listeners("connect").forEach((listener) => namespace.on("connect", listener)); + this.listeners("connection").forEach((listener) => namespace.on("connection", listener)); + this.children.add(namespace); + if (this.server._opts.cleanupEmptyChildNamespaces) { + const remove = namespace._remove; + namespace._remove = (socket) => { + remove.call(namespace, socket); + if (namespace.sockets.size === 0) { + debug("closing child namespace %s", name); + namespace.adapter.close(); + this.server._nsps.delete(namespace.name); + this.children.delete(namespace); + } + }; + } + this.server._nsps.set(name, namespace); + this.server.sockets.emitReserved("new_namespace", namespace); + return namespace; + } + fetchSockets() { + throw new Error("fetchSockets() is not supported on parent namespaces"); + } + }; + exports2.ParentNamespace = ParentNamespace; + ParentNamespace.count = 0; + } +}); + +// node_modules/.pnpm/socket.io-adapter@2.5.2/node_modules/socket.io-adapter/dist/contrib/yeast.js +var require_yeast = __commonJS({ + "node_modules/.pnpm/socket.io-adapter@2.5.2/node_modules/socket.io-adapter/dist/contrib/yeast.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.yeast = exports2.decode = exports2.encode = void 0; + var alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""); + var length = 64; + var map = {}; + var seed = 0; + var i = 0; + var prev; + function encode(num) { + let encoded = ""; + do { + encoded = alphabet[num % length] + encoded; + num = Math.floor(num / length); + } while (num > 0); + return encoded; + } + exports2.encode = encode; + function decode(str) { + let decoded = 0; + for (i = 0; i < str.length; i++) { + decoded = decoded * length + map[str.charAt(i)]; + } + return decoded; + } + exports2.decode = decode; + function yeast() { + const now = encode(+/* @__PURE__ */ new Date()); + if (now !== prev) + return seed = 0, prev = now; + return now + "." + encode(seed++); + } + exports2.yeast = yeast; + for (; i < length; i++) + map[alphabet[i]] = i; + } +}); + +// node_modules/.pnpm/socket.io-adapter@2.5.2/node_modules/socket.io-adapter/dist/index.js +var require_dist = __commonJS({ + "node_modules/.pnpm/socket.io-adapter@2.5.2/node_modules/socket.io-adapter/dist/index.js"(exports2) { + "use strict"; + var _a; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.SessionAwareAdapter = exports2.Adapter = void 0; + var events_1 = require("events"); + var yeast_1 = require_yeast(); + var WebSocket = require_ws(); + var canPreComputeFrame = typeof ((_a = WebSocket === null || WebSocket === void 0 ? void 0 : WebSocket.Sender) === null || _a === void 0 ? void 0 : _a.frame) === "function"; + var Adapter = class extends events_1.EventEmitter { + /** + * In-memory adapter constructor. + * + * @param {Namespace} nsp + */ + constructor(nsp) { + super(); + this.nsp = nsp; + this.rooms = /* @__PURE__ */ new Map(); + this.sids = /* @__PURE__ */ new Map(); + this.encoder = nsp.server.encoder; + } + /** + * To be overridden + */ + init() { + } + /** + * To be overridden + */ + close() { + } + /** + * Returns the number of Socket.IO servers in the cluster + * + * @public + */ + serverCount() { + return Promise.resolve(1); + } + /** + * Adds a socket to a list of room. + * + * @param {SocketId} id the socket id + * @param {Set} rooms a set of rooms + * @public + */ + addAll(id, rooms) { + if (!this.sids.has(id)) { + this.sids.set(id, /* @__PURE__ */ new Set()); + } + for (const room of rooms) { + this.sids.get(id).add(room); + if (!this.rooms.has(room)) { + this.rooms.set(room, /* @__PURE__ */ new Set()); + this.emit("create-room", room); + } + if (!this.rooms.get(room).has(id)) { + this.rooms.get(room).add(id); + this.emit("join-room", room, id); + } + } + } + /** + * Removes a socket from a room. + * + * @param {SocketId} id the socket id + * @param {Room} room the room name + */ + del(id, room) { + if (this.sids.has(id)) { + this.sids.get(id).delete(room); + } + this._del(room, id); + } + _del(room, id) { + const _room = this.rooms.get(room); + if (_room != null) { + const deleted = _room.delete(id); + if (deleted) { + this.emit("leave-room", room, id); + } + if (_room.size === 0 && this.rooms.delete(room)) { + this.emit("delete-room", room); + } + } + } + /** + * Removes a socket from all rooms it's joined. + * + * @param {SocketId} id the socket id + */ + delAll(id) { + if (!this.sids.has(id)) { + return; + } + for (const room of this.sids.get(id)) { + this._del(room, id); + } + this.sids.delete(id); + } + /** + * Broadcasts a packet. + * + * Options: + * - `flags` {Object} flags for this packet + * - `except` {Array} sids that should be excluded + * - `rooms` {Array} list of rooms to broadcast to + * + * @param {Object} packet the packet object + * @param {Object} opts the options + * @public + */ + broadcast(packet, opts) { + const flags = opts.flags || {}; + const packetOpts = { + preEncoded: true, + volatile: flags.volatile, + compress: flags.compress + }; + packet.nsp = this.nsp.name; + const encodedPackets = this._encode(packet, packetOpts); + this.apply(opts, (socket) => { + if (typeof socket.notifyOutgoingListeners === "function") { + socket.notifyOutgoingListeners(packet); + } + socket.client.writeToEngine(encodedPackets, packetOpts); + }); + } + /** + * Broadcasts a packet and expects multiple acknowledgements. + * + * Options: + * - `flags` {Object} flags for this packet + * - `except` {Array} sids that should be excluded + * - `rooms` {Array} list of rooms to broadcast to + * + * @param {Object} packet the packet object + * @param {Object} opts the options + * @param clientCountCallback - the number of clients that received the packet + * @param ack - the callback that will be called for each client response + * + * @public + */ + broadcastWithAck(packet, opts, clientCountCallback, ack) { + const flags = opts.flags || {}; + const packetOpts = { + preEncoded: true, + volatile: flags.volatile, + compress: flags.compress + }; + packet.nsp = this.nsp.name; + packet.id = this.nsp._ids++; + const encodedPackets = this._encode(packet, packetOpts); + let clientCount = 0; + this.apply(opts, (socket) => { + clientCount++; + socket.acks.set(packet.id, ack); + if (typeof socket.notifyOutgoingListeners === "function") { + socket.notifyOutgoingListeners(packet); + } + socket.client.writeToEngine(encodedPackets, packetOpts); + }); + clientCountCallback(clientCount); + } + _encode(packet, packetOpts) { + const encodedPackets = this.encoder.encode(packet); + if (canPreComputeFrame && encodedPackets.length === 1 && typeof encodedPackets[0] === "string") { + const data = Buffer.from("4" + encodedPackets[0]); + packetOpts.wsPreEncodedFrame = WebSocket.Sender.frame(data, { + readOnly: false, + mask: false, + rsv1: false, + opcode: 1, + fin: true + }); + } + return encodedPackets; + } + /** + * Gets a list of sockets by sid. + * + * @param {Set} rooms the explicit set of rooms to check. + */ + sockets(rooms) { + const sids = /* @__PURE__ */ new Set(); + this.apply({ rooms }, (socket) => { + sids.add(socket.id); + }); + return Promise.resolve(sids); + } + /** + * Gets the list of rooms a given socket has joined. + * + * @param {SocketId} id the socket id + */ + socketRooms(id) { + return this.sids.get(id); + } + /** + * Returns the matching socket instances + * + * @param opts - the filters to apply + */ + fetchSockets(opts) { + const sockets = []; + this.apply(opts, (socket) => { + sockets.push(socket); + }); + return Promise.resolve(sockets); + } + /** + * Makes the matching socket instances join the specified rooms + * + * @param opts - the filters to apply + * @param rooms - the rooms to join + */ + addSockets(opts, rooms) { + this.apply(opts, (socket) => { + socket.join(rooms); + }); + } + /** + * Makes the matching socket instances leave the specified rooms + * + * @param opts - the filters to apply + * @param rooms - the rooms to leave + */ + delSockets(opts, rooms) { + this.apply(opts, (socket) => { + rooms.forEach((room) => socket.leave(room)); + }); + } + /** + * Makes the matching socket instances disconnect + * + * @param opts - the filters to apply + * @param close - whether to close the underlying connection + */ + disconnectSockets(opts, close) { + this.apply(opts, (socket) => { + socket.disconnect(close); + }); + } + apply(opts, callback) { + const rooms = opts.rooms; + const except = this.computeExceptSids(opts.except); + if (rooms.size) { + const ids = /* @__PURE__ */ new Set(); + for (const room of rooms) { + if (!this.rooms.has(room)) + continue; + for (const id of this.rooms.get(room)) { + if (ids.has(id) || except.has(id)) + continue; + const socket = this.nsp.sockets.get(id); + if (socket) { + callback(socket); + ids.add(id); + } + } + } + } else { + for (const [id] of this.sids) { + if (except.has(id)) + continue; + const socket = this.nsp.sockets.get(id); + if (socket) + callback(socket); + } + } + } + computeExceptSids(exceptRooms) { + const exceptSids = /* @__PURE__ */ new Set(); + if (exceptRooms && exceptRooms.size > 0) { + for (const room of exceptRooms) { + if (this.rooms.has(room)) { + this.rooms.get(room).forEach((sid) => exceptSids.add(sid)); + } + } + } + return exceptSids; + } + /** + * Send a packet to the other Socket.IO servers in the cluster + * @param packet - an array of arguments, which may include an acknowledgement callback at the end + */ + serverSideEmit(packet) { + console.warn("this adapter does not support the serverSideEmit() functionality"); + } + /** + * Save the client session in order to restore it upon reconnection. + */ + persistSession(session) { + } + /** + * Restore the session and find the packets that were missed by the client. + * @param pid + * @param offset + */ + restoreSession(pid, offset) { + return null; + } + }; + exports2.Adapter = Adapter; + var SessionAwareAdapter = class extends Adapter { + constructor(nsp) { + super(nsp); + this.nsp = nsp; + this.sessions = /* @__PURE__ */ new Map(); + this.packets = []; + this.maxDisconnectionDuration = nsp.server.opts.connectionStateRecovery.maxDisconnectionDuration; + const timer = setInterval(() => { + const threshold = Date.now() - this.maxDisconnectionDuration; + this.sessions.forEach((session, sessionId) => { + const hasExpired = session.disconnectedAt < threshold; + if (hasExpired) { + this.sessions.delete(sessionId); + } + }); + for (let i = this.packets.length - 1; i >= 0; i--) { + const hasExpired = this.packets[i].emittedAt < threshold; + if (hasExpired) { + this.packets.splice(0, i + 1); + break; + } + } + }, 60 * 1e3); + timer.unref(); + } + persistSession(session) { + session.disconnectedAt = Date.now(); + this.sessions.set(session.pid, session); + } + restoreSession(pid, offset) { + const session = this.sessions.get(pid); + if (!session) { + return null; + } + const hasExpired = session.disconnectedAt + this.maxDisconnectionDuration < Date.now(); + if (hasExpired) { + this.sessions.delete(pid); + return null; + } + const index = this.packets.findIndex((packet) => packet.id === offset); + if (index === -1) { + return null; + } + const missedPackets = []; + for (let i = index + 1; i < this.packets.length; i++) { + const packet = this.packets[i]; + if (shouldIncludePacket(session.rooms, packet.opts)) { + missedPackets.push(packet.data); + } + } + return Promise.resolve(Object.assign(Object.assign({}, session), { missedPackets })); + } + broadcast(packet, opts) { + var _a2; + const isEventPacket = packet.type === 2; + const withoutAcknowledgement = packet.id === void 0; + const notVolatile = ((_a2 = opts.flags) === null || _a2 === void 0 ? void 0 : _a2.volatile) === void 0; + if (isEventPacket && withoutAcknowledgement && notVolatile) { + const id = (0, yeast_1.yeast)(); + packet.data.push(id); + this.packets.push({ + id, + opts, + data: packet.data, + emittedAt: Date.now() + }); + } + super.broadcast(packet, opts); + } + }; + exports2.SessionAwareAdapter = SessionAwareAdapter; + function shouldIncludePacket(sessionRooms, opts) { + const included = opts.rooms.size === 0 || sessionRooms.some((room) => opts.rooms.has(room)); + const notExcluded = sessionRooms.every((room) => !opts.except.has(room)); + return included && notExcluded; + } + } +}); + +// node_modules/.pnpm/socket.io@4.7.2/node_modules/socket.io/dist/uws.js +var require_uws = __commonJS({ + "node_modules/.pnpm/socket.io@4.7.2/node_modules/socket.io/dist/uws.js"(exports2) { + "use strict"; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.serveFile = exports2.restoreAdapter = exports2.patchAdapter = void 0; + var socket_io_adapter_1 = require_dist(); + var fs_1 = require("fs"); + var debug_1 = __importDefault(require_src()); + var debug = (0, debug_1.default)("socket.io:adapter-uws"); + var SEPARATOR = ""; + var { addAll, del, broadcast } = socket_io_adapter_1.Adapter.prototype; + function patchAdapter(app) { + socket_io_adapter_1.Adapter.prototype.addAll = function(id, rooms) { + const isNew = !this.sids.has(id); + addAll.call(this, id, rooms); + const socket = this.nsp.sockets.get(id); + if (!socket) { + return; + } + if (socket.conn.transport.name === "websocket") { + subscribe(this.nsp.name, socket, isNew, rooms); + return; + } + if (isNew) { + socket.conn.on("upgrade", () => { + const rooms2 = this.sids.get(id); + if (rooms2) { + subscribe(this.nsp.name, socket, isNew, rooms2); + } + }); + } + }; + socket_io_adapter_1.Adapter.prototype.del = function(id, room) { + del.call(this, id, room); + const socket = this.nsp.sockets.get(id); + if (socket && socket.conn.transport.name === "websocket") { + const sessionId = socket.conn.id; + const websocket = socket.conn.transport.socket; + const topic = `${this.nsp.name}${SEPARATOR}${room}`; + debug("unsubscribe connection %s from topic %s", sessionId, topic); + websocket.unsubscribe(topic); + } + }; + socket_io_adapter_1.Adapter.prototype.broadcast = function(packet, opts) { + const useFastPublish = opts.rooms.size <= 1 && opts.except.size === 0; + if (!useFastPublish) { + broadcast.call(this, packet, opts); + return; + } + const flags = opts.flags || {}; + const basePacketOpts = { + preEncoded: true, + volatile: flags.volatile, + compress: flags.compress + }; + packet.nsp = this.nsp.name; + const encodedPackets = this.encoder.encode(packet); + const topic = opts.rooms.size === 0 ? this.nsp.name : `${this.nsp.name}${SEPARATOR}${opts.rooms.keys().next().value}`; + debug("fast publish to %s", topic); + encodedPackets.forEach((encodedPacket) => { + const isBinary = typeof encodedPacket !== "string"; + app.publish(topic, isBinary ? encodedPacket : "4" + encodedPacket, isBinary); + }); + this.apply(opts, (socket) => { + if (socket.conn.transport.name !== "websocket") { + socket.client.writeToEngine(encodedPackets, basePacketOpts); + } + }); + }; + } + exports2.patchAdapter = patchAdapter; + function subscribe(namespaceName, socket, isNew, rooms) { + const sessionId = socket.conn.id; + const websocket = socket.conn.transport.socket; + if (isNew) { + debug("subscribe connection %s to topic %s", sessionId, namespaceName); + websocket.subscribe(namespaceName); + } + rooms.forEach((room) => { + const topic = `${namespaceName}${SEPARATOR}${room}`; + debug("subscribe connection %s to topic %s", sessionId, topic); + websocket.subscribe(topic); + }); + } + function restoreAdapter() { + socket_io_adapter_1.Adapter.prototype.addAll = addAll; + socket_io_adapter_1.Adapter.prototype.del = del; + socket_io_adapter_1.Adapter.prototype.broadcast = broadcast; + } + exports2.restoreAdapter = restoreAdapter; + var toArrayBuffer = (buffer) => { + const { buffer: arrayBuffer, byteOffset, byteLength } = buffer; + return arrayBuffer.slice(byteOffset, byteOffset + byteLength); + }; + function serveFile(res, filepath) { + const { size } = (0, fs_1.statSync)(filepath); + const readStream = (0, fs_1.createReadStream)(filepath); + const destroyReadStream = () => !readStream.destroyed && readStream.destroy(); + const onError = (error) => { + destroyReadStream(); + throw error; + }; + const onDataChunk = (chunk) => { + const arrayBufferChunk = toArrayBuffer(chunk); + const lastOffset = res.getWriteOffset(); + const [ok, done] = res.tryEnd(arrayBufferChunk, size); + if (!done && !ok) { + readStream.pause(); + res.onWritable((offset) => { + const [ok2, done2] = res.tryEnd(arrayBufferChunk.slice(offset - lastOffset), size); + if (!done2 && ok2) { + readStream.resume(); + } + return ok2; + }); + } + }; + res.onAborted(destroyReadStream); + readStream.on("data", onDataChunk).on("error", onError).on("end", destroyReadStream); + } + exports2.serveFile = serveFile; + } +}); + +// node_modules/.pnpm/socket.io@4.7.2/node_modules/socket.io/package.json +var require_package = __commonJS({ + "node_modules/.pnpm/socket.io@4.7.2/node_modules/socket.io/package.json"(exports2, module2) { + module2.exports = { + name: "socket.io", + version: "4.7.2", + description: "node.js realtime framework server", + keywords: [ + "realtime", + "framework", + "websocket", + "tcp", + "events", + "socket", + "io" + ], + files: [ + "dist/", + "client-dist/", + "wrapper.mjs", + "!**/*.tsbuildinfo" + ], + directories: { + doc: "docs/", + example: "example/", + lib: "lib/", + test: "test/" + }, + type: "commonjs", + main: "./dist/index.js", + exports: { + types: "./dist/index.d.ts", + import: "./wrapper.mjs", + require: "./dist/index.js" + }, + types: "./dist/index.d.ts", + license: "MIT", + repository: { + type: "git", + url: "git://github.com/socketio/socket.io" + }, + scripts: { + compile: "rimraf ./dist && tsc", + test: "npm run format:check && npm run compile && npm run test:types && npm run test:unit", + "test:types": "tsd", + "test:unit": "nyc mocha --require ts-node/register --reporter spec --slow 200 --bail --timeout 10000 test/index.ts", + "format:check": 'prettier --check "lib/**/*.ts" "test/**/*.ts"', + "format:fix": 'prettier --write "lib/**/*.ts" "test/**/*.ts"', + prepack: "npm run compile" + }, + dependencies: { + accepts: "~1.3.4", + base64id: "~2.0.0", + cors: "~2.8.5", + debug: "~4.3.2", + "engine.io": "~6.5.2", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" + }, + devDependencies: { + "@types/mocha": "^9.0.0", + "expect.js": "0.3.1", + mocha: "^10.0.0", + nyc: "^15.1.0", + prettier: "^2.3.2", + rimraf: "^3.0.2", + "socket.io-client": "4.7.2", + "socket.io-client-v2": "npm:socket.io-client@^2.4.0", + superagent: "^8.0.0", + supertest: "^6.1.6", + "ts-node": "^10.2.1", + tsd: "^0.21.0", + typescript: "^4.4.2", + "uWebSockets.js": "github:uNetworking/uWebSockets.js#v20.30.0" + }, + contributors: [ + { + name: "Guillermo Rauch", + email: "rauchg@gmail.com" + }, + { + name: "Arnout Kazemier", + email: "info@3rd-eden.com" + }, + { + name: "Vladimir Dronnikov", + email: "dronnikov@gmail.com" + }, + { + name: "Einar Otto Stangvik", + email: "einaros@gmail.com" + } + ], + engines: { + node: ">=10.2.0" + }, + tsd: { + directory: "test" + } + }; + } +}); + +// node_modules/.pnpm/socket.io@4.7.2/node_modules/socket.io/dist/index.js +var require_dist2 = __commonJS({ + "node_modules/.pnpm/socket.io@4.7.2/node_modules/socket.io/dist/index.js"(exports2, module2) { + "use strict"; + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports2 && exports2.__importStar || function(mod) { + if (mod && mod.__esModule) + return mod; + var result = {}; + if (mod != null) { + for (var k in mod) + if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) + __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Namespace = exports2.Socket = exports2.Server = void 0; + var http = require("http"); + var fs_1 = require("fs"); + var zlib_1 = require("zlib"); + var accepts = require_accepts(); + var stream_1 = require("stream"); + var path = require("path"); + var engine_io_1 = require_engine_io(); + var client_1 = require_client(); + var events_1 = require("events"); + var namespace_1 = require_namespace(); + Object.defineProperty(exports2, "Namespace", { enumerable: true, get: function() { + return namespace_1.Namespace; + } }); + var parent_namespace_1 = require_parent_namespace(); + var socket_io_adapter_1 = require_dist(); + var parser = __importStar(require_cjs2()); + var debug_1 = __importDefault(require_src()); + var socket_1 = require_socket2(); + Object.defineProperty(exports2, "Socket", { enumerable: true, get: function() { + return socket_1.Socket; + } }); + var typed_events_1 = require_typed_events(); + var uws_1 = require_uws(); + var cors_1 = __importDefault(require_lib()); + var debug = (0, debug_1.default)("socket.io:server"); + var clientVersion = require_package().version; + var dotMapRegex = /\.map/; + var Server2 = class _Server extends typed_events_1.StrictEventEmitter { + constructor(srv, opts = {}) { + super(); + this._nsps = /* @__PURE__ */ new Map(); + this.parentNsps = /* @__PURE__ */ new Map(); + this.parentNamespacesFromRegExp = /* @__PURE__ */ new Map(); + if ("object" === typeof srv && srv instanceof Object && !srv.listen) { + opts = srv; + srv = void 0; + } + this.path(opts.path || "/socket.io"); + this.connectTimeout(opts.connectTimeout || 45e3); + this.serveClient(false !== opts.serveClient); + this._parser = opts.parser || parser; + this.encoder = new this._parser.Encoder(); + this.opts = opts; + if (opts.connectionStateRecovery) { + opts.connectionStateRecovery = Object.assign({ + maxDisconnectionDuration: 2 * 60 * 1e3, + skipMiddlewares: true + }, opts.connectionStateRecovery); + this.adapter(opts.adapter || socket_io_adapter_1.SessionAwareAdapter); + } else { + this.adapter(opts.adapter || socket_io_adapter_1.Adapter); + } + opts.cleanupEmptyChildNamespaces = !!opts.cleanupEmptyChildNamespaces; + this.sockets = this.of("/"); + if (srv || typeof srv == "number") + this.attach(srv); + if (this.opts.cors) { + this._corsMiddleware = (0, cors_1.default)(this.opts.cors); + } + } + get _opts() { + return this.opts; + } + serveClient(v) { + if (!arguments.length) + return this._serveClient; + this._serveClient = v; + return this; + } + /** + * Executes the middleware for an incoming namespace not already created on the server. + * + * @param name - name of incoming namespace + * @param auth - the auth parameters + * @param fn - callback + * + * @private + */ + _checkNamespace(name, auth, fn) { + if (this.parentNsps.size === 0) + return fn(false); + const keysIterator = this.parentNsps.keys(); + const run = () => { + const nextFn = keysIterator.next(); + if (nextFn.done) { + return fn(false); + } + nextFn.value(name, auth, (err, allow) => { + if (err || !allow) { + return run(); + } + if (this._nsps.has(name)) { + debug("dynamic namespace %s already exists", name); + return fn(this._nsps.get(name)); + } + const namespace = this.parentNsps.get(nextFn.value).createChild(name); + debug("dynamic namespace %s was created", name); + fn(namespace); + }); + }; + run(); + } + path(v) { + if (!arguments.length) + return this._path; + this._path = v.replace(/\/$/, ""); + const escapedPath = this._path.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"); + this.clientPathRegex = new RegExp("^" + escapedPath + "/socket\\.io(\\.msgpack|\\.esm)?(\\.min)?\\.js(\\.map)?(?:\\?|$)"); + return this; + } + connectTimeout(v) { + if (v === void 0) + return this._connectTimeout; + this._connectTimeout = v; + return this; + } + adapter(v) { + if (!arguments.length) + return this._adapter; + this._adapter = v; + for (const nsp of this._nsps.values()) { + nsp._initAdapter(); + } + return this; + } + /** + * Attaches socket.io to a server or port. + * + * @param srv - server or port + * @param opts - options passed to engine.io + * @return self + */ + listen(srv, opts = {}) { + return this.attach(srv, opts); + } + /** + * Attaches socket.io to a server or port. + * + * @param srv - server or port + * @param opts - options passed to engine.io + * @return self + */ + attach(srv, opts = {}) { + if ("function" == typeof srv) { + const msg = "You are trying to attach socket.io to an express request handler function. Please pass a http.Server instance."; + throw new Error(msg); + } + if (Number(srv) == srv) { + srv = Number(srv); + } + if ("number" == typeof srv) { + debug("creating http server and binding to %d", srv); + const port2 = srv; + srv = http.createServer((req, res) => { + res.writeHead(404); + res.end(); + }); + srv.listen(port2); + } + Object.assign(opts, this.opts); + opts.path = opts.path || this._path; + this.initEngine(srv, opts); + return this; + } + attachApp(app, opts = {}) { + Object.assign(opts, this.opts); + opts.path = opts.path || this._path; + debug("creating uWebSockets.js-based engine with opts %j", opts); + const engine = new engine_io_1.uServer(opts); + engine.attach(app, opts); + this.bind(engine); + if (this._serveClient) { + app.get(`${this._path}/*`, (res, req) => { + if (!this.clientPathRegex.test(req.getUrl())) { + req.setYield(true); + return; + } + const filename = req.getUrl().replace(this._path, "").replace(/\?.*$/, "").replace(/^\//, ""); + const isMap = dotMapRegex.test(filename); + const type = isMap ? "map" : "source"; + const expectedEtag = '"' + clientVersion + '"'; + const weakEtag = "W/" + expectedEtag; + const etag = req.getHeader("if-none-match"); + if (etag) { + if (expectedEtag === etag || weakEtag === etag) { + debug("serve client %s 304", type); + res.writeStatus("304 Not Modified"); + res.end(); + return; + } + } + debug("serve client %s", type); + res.writeHeader("cache-control", "public, max-age=0"); + res.writeHeader("content-type", "application/" + (isMap ? "json" : "javascript") + "; charset=utf-8"); + res.writeHeader("etag", expectedEtag); + const filepath = path.join(__dirname, "../client-dist/", filename); + (0, uws_1.serveFile)(res, filepath); + }); + } + (0, uws_1.patchAdapter)(app); + } + /** + * Initialize engine + * + * @param srv - the server to attach to + * @param opts - options passed to engine.io + * @private + */ + initEngine(srv, opts) { + debug("creating engine.io instance with opts %j", opts); + this.eio = (0, engine_io_1.attach)(srv, opts); + if (this._serveClient) + this.attachServe(srv); + this.httpServer = srv; + this.bind(this.eio); + } + /** + * Attaches the static file serving. + * + * @param srv http server + * @private + */ + attachServe(srv) { + debug("attaching client serving req handler"); + const evs = srv.listeners("request").slice(0); + srv.removeAllListeners("request"); + srv.on("request", (req, res) => { + if (this.clientPathRegex.test(req.url)) { + if (this._corsMiddleware) { + this._corsMiddleware(req, res, () => { + this.serve(req, res); + }); + } else { + this.serve(req, res); + } + } else { + for (let i = 0; i < evs.length; i++) { + evs[i].call(srv, req, res); + } + } + }); + } + /** + * Handles a request serving of client source and map + * + * @param req + * @param res + * @private + */ + serve(req, res) { + const filename = req.url.replace(this._path, "").replace(/\?.*$/, ""); + const isMap = dotMapRegex.test(filename); + const type = isMap ? "map" : "source"; + const expectedEtag = '"' + clientVersion + '"'; + const weakEtag = "W/" + expectedEtag; + const etag = req.headers["if-none-match"]; + if (etag) { + if (expectedEtag === etag || weakEtag === etag) { + debug("serve client %s 304", type); + res.writeHead(304); + res.end(); + return; + } + } + debug("serve client %s", type); + res.setHeader("Cache-Control", "public, max-age=0"); + res.setHeader("Content-Type", "application/" + (isMap ? "json" : "javascript") + "; charset=utf-8"); + res.setHeader("ETag", expectedEtag); + _Server.sendFile(filename, req, res); + } + /** + * @param filename + * @param req + * @param res + * @private + */ + static sendFile(filename, req, res) { + const readStream = (0, fs_1.createReadStream)(path.join(__dirname, "../client-dist/", filename)); + const encoding = accepts(req).encodings(["br", "gzip", "deflate"]); + const onError = (err) => { + if (err) { + res.end(); + } + }; + switch (encoding) { + case "br": + res.writeHead(200, { "content-encoding": "br" }); + readStream.pipe((0, zlib_1.createBrotliCompress)()).pipe(res); + (0, stream_1.pipeline)(readStream, (0, zlib_1.createBrotliCompress)(), res, onError); + break; + case "gzip": + res.writeHead(200, { "content-encoding": "gzip" }); + (0, stream_1.pipeline)(readStream, (0, zlib_1.createGzip)(), res, onError); + break; + case "deflate": + res.writeHead(200, { "content-encoding": "deflate" }); + (0, stream_1.pipeline)(readStream, (0, zlib_1.createDeflate)(), res, onError); + break; + default: + res.writeHead(200); + (0, stream_1.pipeline)(readStream, res, onError); + } + } + /** + * Binds socket.io to an engine.io instance. + * + * @param engine engine.io (or compatible) server + * @return self + */ + bind(engine) { + this.engine = engine; + this.engine.on("connection", this.onconnection.bind(this)); + return this; + } + /** + * Called with each incoming transport connection. + * + * @param {engine.Socket} conn + * @return self + * @private + */ + onconnection(conn) { + debug("incoming connection with id %s", conn.id); + const client = new client_1.Client(this, conn); + if (conn.protocol === 3) { + client.connect("/"); + } + return this; + } + /** + * Looks up a namespace. + * + * @example + * // with a simple string + * const myNamespace = io.of("/my-namespace"); + * + * // with a regex + * const dynamicNsp = io.of(/^\/dynamic-\d+$/).on("connection", (socket) => { + * const namespace = socket.nsp; // newNamespace.name === "/dynamic-101" + * + * // broadcast to all clients in the given sub-namespace + * namespace.emit("hello"); + * }); + * + * @param name - nsp name + * @param fn optional, nsp `connection` ev handler + */ + of(name, fn) { + if (typeof name === "function" || name instanceof RegExp) { + const parentNsp = new parent_namespace_1.ParentNamespace(this); + debug("initializing parent namespace %s", parentNsp.name); + if (typeof name === "function") { + this.parentNsps.set(name, parentNsp); + } else { + this.parentNsps.set((nsp2, conn, next) => next(null, name.test(nsp2)), parentNsp); + this.parentNamespacesFromRegExp.set(name, parentNsp); + } + if (fn) { + parentNsp.on("connect", fn); + } + return parentNsp; + } + if (String(name)[0] !== "/") + name = "/" + name; + let nsp = this._nsps.get(name); + if (!nsp) { + for (const [regex, parentNamespace] of this.parentNamespacesFromRegExp) { + if (regex.test(name)) { + debug("attaching namespace %s to parent namespace %s", name, regex); + return parentNamespace.createChild(name); + } + } + debug("initializing namespace %s", name); + nsp = new namespace_1.Namespace(this, name); + this._nsps.set(name, nsp); + if (name !== "/") { + this.sockets.emitReserved("new_namespace", nsp); + } + } + if (fn) + nsp.on("connect", fn); + return nsp; + } + /** + * Closes server connection + * + * @param [fn] optional, called as `fn([err])` on error OR all conns closed + */ + close(fn) { + for (const socket of this.sockets.sockets.values()) { + socket._onclose("server shutting down"); + } + this.engine.close(); + (0, uws_1.restoreAdapter)(); + if (this.httpServer) { + this.httpServer.close(fn); + } else { + fn && fn(); + } + } + /** + * Registers a middleware, which is a function that gets executed for every incoming {@link Socket}. + * + * @example + * io.use((socket, next) => { + * // ... + * next(); + * }); + * + * @param fn - the middleware function + */ + use(fn) { + this.sockets.use(fn); + return this; + } + /** + * Targets a room when emitting. + * + * @example + * // the “foo” event will be broadcast to all connected clients in the “room-101” room + * io.to("room-101").emit("foo", "bar"); + * + * // with an array of rooms (a client will be notified at most once) + * io.to(["room-101", "room-102"]).emit("foo", "bar"); + * + * // with multiple chained calls + * io.to("room-101").to("room-102").emit("foo", "bar"); + * + * @param room - a room, or an array of rooms + * @return a new {@link BroadcastOperator} instance for chaining + */ + to(room) { + return this.sockets.to(room); + } + /** + * Targets a room when emitting. Similar to `to()`, but might feel clearer in some cases: + * + * @example + * // disconnect all clients in the "room-101" room + * io.in("room-101").disconnectSockets(); + * + * @param room - a room, or an array of rooms + * @return a new {@link BroadcastOperator} instance for chaining + */ + in(room) { + return this.sockets.in(room); + } + /** + * Excludes a room when emitting. + * + * @example + * // the "foo" event will be broadcast to all connected clients, except the ones that are in the "room-101" room + * io.except("room-101").emit("foo", "bar"); + * + * // with an array of rooms + * io.except(["room-101", "room-102"]).emit("foo", "bar"); + * + * // with multiple chained calls + * io.except("room-101").except("room-102").emit("foo", "bar"); + * + * @param room - a room, or an array of rooms + * @return a new {@link BroadcastOperator} instance for chaining + */ + except(room) { + return this.sockets.except(room); + } + /** + * Emits an event and waits for an acknowledgement from all clients. + * + * @example + * try { + * const responses = await io.timeout(1000).emitWithAck("some-event"); + * console.log(responses); // one response per client + * } catch (e) { + * // some clients did not acknowledge the event in the given delay + * } + * + * @return a Promise that will be fulfilled when all clients have acknowledged the event + */ + emitWithAck(ev, ...args) { + return this.sockets.emitWithAck(ev, ...args); + } + /** + * Sends a `message` event to all clients. + * + * This method mimics the WebSocket.send() method. + * + * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send + * + * @example + * io.send("hello"); + * + * // this is equivalent to + * io.emit("message", "hello"); + * + * @return self + */ + send(...args) { + this.sockets.emit("message", ...args); + return this; + } + /** + * Sends a `message` event to all clients. Alias of {@link send}. + * + * @return self + */ + write(...args) { + this.sockets.emit("message", ...args); + return this; + } + /** + * Sends a message to the other Socket.IO servers of the cluster. + * + * @example + * io.serverSideEmit("hello", "world"); + * + * io.on("hello", (arg1) => { + * console.log(arg1); // prints "world" + * }); + * + * // acknowledgements (without binary content) are supported too: + * io.serverSideEmit("ping", (err, responses) => { + * if (err) { + * // some servers did not acknowledge the event in the given delay + * } else { + * console.log(responses); // one response per server (except the current one) + * } + * }); + * + * io.on("ping", (cb) => { + * cb("pong"); + * }); + * + * @param ev - the event name + * @param args - an array of arguments, which may include an acknowledgement callback at the end + */ + serverSideEmit(ev, ...args) { + return this.sockets.serverSideEmit(ev, ...args); + } + /** + * Sends a message and expect an acknowledgement from the other Socket.IO servers of the cluster. + * + * @example + * try { + * const responses = await io.serverSideEmitWithAck("ping"); + * console.log(responses); // one response per server (except the current one) + * } catch (e) { + * // some servers did not acknowledge the event in the given delay + * } + * + * @param ev - the event name + * @param args - an array of arguments + * + * @return a Promise that will be fulfilled when all servers have acknowledged the event + */ + serverSideEmitWithAck(ev, ...args) { + return this.sockets.serverSideEmitWithAck(ev, ...args); + } + /** + * Gets a list of socket ids. + * + * @deprecated this method will be removed in the next major release, please use {@link Server#serverSideEmit} or + * {@link Server#fetchSockets} instead. + */ + allSockets() { + return this.sockets.allSockets(); + } + /** + * Sets the compress flag. + * + * @example + * io.compress(false).emit("hello"); + * + * @param compress - if `true`, compresses the sending data + * @return a new {@link BroadcastOperator} instance for chaining + */ + compress(compress) { + return this.sockets.compress(compress); + } + /** + * Sets a modifier for a subsequent event emission that the event data may be lost if the client is not ready to + * receive messages (because of network slowness or other issues, or because they’re connected through long polling + * and is in the middle of a request-response cycle). + * + * @example + * io.volatile.emit("hello"); // the clients may or may not receive it + * + * @return a new {@link BroadcastOperator} instance for chaining + */ + get volatile() { + return this.sockets.volatile; + } + /** + * Sets a modifier for a subsequent event emission that the event data will only be broadcast to the current node. + * + * @example + * // the “foo” event will be broadcast to all connected clients on this node + * io.local.emit("foo", "bar"); + * + * @return a new {@link BroadcastOperator} instance for chaining + */ + get local() { + return this.sockets.local; + } + /** + * Adds a timeout in milliseconds for the next operation. + * + * @example + * io.timeout(1000).emit("some-event", (err, responses) => { + * if (err) { + * // some clients did not acknowledge the event in the given delay + * } else { + * console.log(responses); // one response per client + * } + * }); + * + * @param timeout + */ + timeout(timeout) { + return this.sockets.timeout(timeout); + } + /** + * Returns the matching socket instances. + * + * Note: this method also works within a cluster of multiple Socket.IO servers, with a compatible {@link Adapter}. + * + * @example + * // return all Socket instances + * const sockets = await io.fetchSockets(); + * + * // return all Socket instances in the "room1" room + * const sockets = await io.in("room1").fetchSockets(); + * + * for (const socket of sockets) { + * console.log(socket.id); + * console.log(socket.handshake); + * console.log(socket.rooms); + * console.log(socket.data); + * + * socket.emit("hello"); + * socket.join("room1"); + * socket.leave("room2"); + * socket.disconnect(); + * } + */ + fetchSockets() { + return this.sockets.fetchSockets(); + } + /** + * Makes the matching socket instances join the specified rooms. + * + * Note: this method also works within a cluster of multiple Socket.IO servers, with a compatible {@link Adapter}. + * + * @example + * + * // make all socket instances join the "room1" room + * io.socketsJoin("room1"); + * + * // make all socket instances in the "room1" room join the "room2" and "room3" rooms + * io.in("room1").socketsJoin(["room2", "room3"]); + * + * @param room - a room, or an array of rooms + */ + socketsJoin(room) { + return this.sockets.socketsJoin(room); + } + /** + * Makes the matching socket instances leave the specified rooms. + * + * Note: this method also works within a cluster of multiple Socket.IO servers, with a compatible {@link Adapter}. + * + * @example + * // make all socket instances leave the "room1" room + * io.socketsLeave("room1"); + * + * // make all socket instances in the "room1" room leave the "room2" and "room3" rooms + * io.in("room1").socketsLeave(["room2", "room3"]); + * + * @param room - a room, or an array of rooms + */ + socketsLeave(room) { + return this.sockets.socketsLeave(room); + } + /** + * Makes the matching socket instances disconnect. + * + * Note: this method also works within a cluster of multiple Socket.IO servers, with a compatible {@link Adapter}. + * + * @example + * // make all socket instances disconnect (the connections might be kept alive for other namespaces) + * io.disconnectSockets(); + * + * // make all socket instances in the "room1" room disconnect and close the underlying connections + * io.in("room1").disconnectSockets(true); + * + * @param close - whether to close the underlying connection + */ + disconnectSockets(close = false) { + return this.sockets.disconnectSockets(close); + } + }; + exports2.Server = Server2; + var emitterMethods = Object.keys(events_1.EventEmitter.prototype).filter(function(key) { + return typeof events_1.EventEmitter.prototype[key] === "function"; + }); + emitterMethods.forEach(function(fn) { + Server2.prototype[fn] = function() { + return this.sockets[fn].apply(this.sockets, arguments); + }; + }); + module2.exports = (srv, opts) => new Server2(srv, opts); + module2.exports.Server = Server2; + module2.exports.Namespace = namespace_1.Namespace; + module2.exports.Socket = socket_1.Socket; + var socket_2 = require_socket2(); + } +}); + +// node_modules/.pnpm/socket.io@4.7.2/node_modules/socket.io/wrapper.mjs +var import_dist = __toESM(require_dist2(), 1); +var { Server, Namespace, Socket } = import_dist.default; + +// integration/server/server.ts +var import_node_http = require("http"); + +// src/utils/getPlayerIds.ts +function getPlayerIds(source2) { + const _identifiers = getPlayerIdentifiers(source2); + const identifiers = { steamId: null, discordId: null }; + for (const identifier of _identifiers) { + if (identifier.includes("steam")) { + identifiers.steamId = identifier; + } else if (identifier.includes("discord")) { + identifiers.discordId = identifier; + } + } + return identifiers; +} + +// integration/server/server.ts +var server = (0, import_node_http.createServer)(); +var port = GetConvarInt("socket_port", 30122); +var io2 = new Server(server, { + maxHttpBufferSize: 1e8, + cors: { origin: "*" } +}); +var playerData = /* @__PURE__ */ new Map(); +function getSmartSigns() { + var _a, _b; + try { + return (_b = (_a = exports.SmartSigns)["SmartSigns:GetSigns"]) == null ? void 0 : _b.call(_a); + } catch { + console.log( + "[sna-live-map][DEBUG]", + "Could not load SmartSigns signs. If you're not using SmartSigns, ignore this message." + ); + return []; + } +} +function getSmartMotorwaySigns() { + var _a, _b; + try { + return (_b = (_a = exports.SmartMotorways)["getSigns"]) == null ? void 0 : _b.call(_a); + } catch { + console.log( + "[sna-live-map][DEBUG]", + "Could not load SmartMotorway signs. If you're not using SmartMotorways, ignore this message." + ); + return []; + } +} +io2.on("connection", (socket) => { + const smartSigns = getSmartSigns(); + io2.sockets.emit("sna-live-map:smart-signs", { smartSigns }); + socket.on("sna-live-map:update-smart-sign", (data) => { + console.log( + "[sna-live-map]", + "Request received to update smart sign", + data.id, + data.defaultText + ); + emit("SmartSigns:apiUpdateSign", data.id, [ + data.defaultText.firstLine, + data.defaultText.secondLine, + data.defaultText.thirdLine + ]); + }); + const smartMotorwaySigns = getSmartMotorwaySigns(); + io2.sockets.emit("sna-live-map:smart-motorways-signs", { smartMotorwaySigns }); + socket.on("sna-live-map:update-smart-motorway-sign", (data) => { + console.log("[sna-live-map]", "Request received to update Smart Motorway sign", data.id); + emit("SmartMotorways:apiUpdateSign", data.id, data.speeds); + }); +}); +on("SmartSigns:updateSignExternal", () => { + const smartSigns = getSmartSigns(); + io2.sockets.emit("sna-live-map:smart-signs", { smartSigns }); +}); +onNet("sna-live-map-sign-smart-motorways" /* SyncSmartMotorwaysSigns */, () => { + const smartMotorwaySigns = getSmartMotorwaySigns(); + io2.sockets.emit("sna-live-map:smart-motorways-signs", { smartMotorwaySigns }); +}); +onNet("onResourceStart" /* CFXResourceStarted */, (name) => { + const playerCount = GetNumPlayerIndices(); + if (name !== GetCurrentResourceName()) + return; + if (playerCount <= 0) + return; + io2.sockets.emit("map-data", { + type: "playerData" /* UpdatePlayerData */, + payload: Array.from(playerData.values()) + }); + const smartSigns = getSmartSigns(); + io2.sockets.emit("sna-live-map:smart-signs", { smartSigns }); + const smartMotorwaySigns = getSmartMotorwaySigns(); + io2.sockets.emit("sna-live-map:smart-motorways-signs", { smartMotorwaySigns }); +}); +onNet("playerDropped" /* CFXPlayerDropped */, () => { + const playerName = GetPlayerName(source); + playerData.delete(playerName); + io2.sockets.emit("map-data", { + type: "playerLeft" /* RemovePlayer */, + payload: playerName + }); +}); +onNet("sna-live-map-player-spawned" /* PlayerSpawned */, (data) => { + const identifiers = getPlayerIds(source); + data.identifiers = identifiers; + playerData.set(data.name, data); +}); +setInterval(() => { + setImmediate(() => { + io2.sockets.emit("map-data", { + type: "playerData" /* UpdatePlayerData */, + payload: Array.from(playerData.values()) + }); + }); +}, 500); +server.listen(port, () => { + console.log("Socket server listening on %s", port); +}); +/*! Bundled license information: + +negotiator/index.js: + (*! + * negotiator + * Copyright(c) 2012 Federico Romero + * Copyright(c) 2012-2014 Isaac Z. Schlueter + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + *) + +mime-db/index.js: + (*! + * mime-db + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015-2022 Douglas Christopher Wilson + * MIT Licensed + *) + +mime-types/index.js: + (*! + * mime-types + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + *) + +accepts/index.js: + (*! + * accepts + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + *) + +base64id/lib/base64id.js: + (*! + * base64id v0.1.0 + *) + +engine.io/build/parser-v3/utf8.js: + (*! https://mths.be/utf8js v2.1.2 by @mathias *) + +cookie/index.js: + (*! + * cookie + * Copyright(c) 2012-2014 Roman Shtylman + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + *) + +object-assign/index.js: + (* + object-assign + (c) Sindre Sorhus + @license MIT + *) + +vary/index.js: + (*! + * vary + * Copyright(c) 2014-2017 Douglas Christopher Wilson + * MIT Licensed + *) +*/ diff --git a/resources/[sna]/sna-sync/client/client.js b/resources/[sna]/sna-sync/client/client.js new file mode 100644 index 0000000..2364a57 --- /dev/null +++ b/resources/[sna]/sna-sync/client/client.js @@ -0,0 +1,145 @@ +"use strict"; + +// integrations/sync/client/flows/auth.ts +var API_URL = GetConvar("snailycad_url", "null"); +emit( + "chat:addSuggestion", + `/${"sn-whoami" /* WhoAmI */}`, + "Shows your current SnailyCAD account username and ID that is connected to the game." +); +emit( + "chat:addSuggestion", + `/${"sn-auth" /* Auth */}`, + "Authenticate with your personal SnailyCAD API Token to interact with parts of it." +); +onNet("sna-sync:request-authentication-flow" /* RequestAuthFlow */, () => { + SendNuiMessage( + JSON.stringify({ action: "sna-sync:request-authentication-flow" /* RequestAuthFlow */, data: { url: API_URL, source } }) + ); + SetNuiFocus(true, true); +}); +RegisterNuiCallbackType("sna-sync-nui:authentication-flow-success" /* OnAuthenticationFlowSuccess */); +on(`__cfx_nui:${"sna-sync-nui:authentication-flow-success" /* OnAuthenticationFlowSuccess */}`, (data, cb) => { + emitNet("sna-sync:on-user-save" /* OnUserSave */, data); + cb({ ok: true }); +}); + +// integrations/sync/client/flows/unit-status.ts +var API_URL2 = GetConvar("snailycad_url", "null"); +emit( + "chat:addSuggestion", + `/${"sn-active-unit" /* ActiveUnit */}`, + "This will show your active unit's name and status." +); +emit( + "chat:addSuggestion", + `/${"sn-set-status" /* SetStatus */}`, + "This will open a menu and will allow you to select a status for your active unit.", + [{ name: "status-code", help: "The status code you want to set (Optional)." }] +); +onNet( + "sna-sync:request-set-status-flow" /* RequestSetStatusFlow */, + (unitId, source2, userApiToken, statusCodes) => { + SendNuiMessage( + JSON.stringify({ + action: "sna-sync:request-set-status-flow" /* RequestSetStatusFlow */, + data: { url: API_URL2, source: source2, unitId, userApiToken, statusCodes } + }) + ); + SetNuiFocus(true, true); + } +); + +// integrations/sync/client/flows/911-call-attach.ts +var API_URL3 = GetConvar("snailycad_url", "null"); +emit( + "chat:addSuggestion", + `/${"sn-attach" /* AttachTo911Call */}`, + "Attach your active unit to a 911 call.", + [{ name: "case-number", help: "The case number of the 911 call (Optional)." }] +); +onNet( + "sna-sync:request-call-911-attach-flow" /* RequestCall911AttachFlow */, + (unitId, source2, calls, userApiToken) => { + SendNuiMessage( + JSON.stringify({ + action: "sna-sync:request-call-911-attach-flow" /* RequestCall911AttachFlow */, + data: { url: API_URL3, userApiToken, source: source2, unitId, calls } + }) + ); + SetNuiFocus(true, true); + } +); + +// integrations/sync/client/flows/traffic-stop.ts +emit( + "chat:addSuggestion", + `/${"sn-traffic-stop" /* TrafficStop */}`, + "Create a call with your current position and be assigned as primary unit.", + [{ name: "description", help: "The description of your traffic stop" }] +); +onNet( + "sna-sync:request-traffic-stop-flow" /* RequestTrafficStopFlow */, + (data) => { + const playerPed = GetPlayerPed(-1); + const [x, y, z] = GetEntityCoords(playerPed, true); + const [lastStreet] = GetStreetNameAtCoord(x, y, z); + const lastStreetName = GetStreetNameFromHashKey(lastStreet); + const heading = GetEntityHeading(PlayerPedId()); + setImmediate(() => { + emitNet("sna-sync:on-traffic-stop-client-position" /* OnTrafficStopClientPosition */, { + ...data, + streetName: lastStreetName, + position: { x, y, z, heading } + }); + }); + } +); + +// integrations/sync/client/client.ts +var API_URL4 = GetConvar("snailycad_url", "null"); +if (API_URL4 === "null") { + console.error(` + --------------------------------------- + +[${GetCurrentResourceName()}] Failed to find the "snailycad_url" convar in your server.cfg. Please make sure you are using \`setr\` and not \`set\`: + +\`setr snailycad_url "/v1" \` + + ---------------------------------------`); +} +emit( + "chat:addSuggestion", + `/${"sn-panic-button" /* PanicButton */}`, + "Toggle the panic button state for your active unit." +); +onNet("playerSpawned", () => { + SendNuiMessage(JSON.stringify({ action: "sn:initialize", data: { url: API_URL4 } })); +}); +on( + "sna-sync:create-notification" /* CreateNotification */, + (options) => { + SendNuiMessage( + JSON.stringify({ + action: "sna-sync:create-notification" /* CreateNotification */, + data: { ...options, url: API_URL4 } + }) + ); + } +); +RegisterNuiCallbackType("sna-sync-nui:connected" /* Connected */); +on(`__cfx_nui:${"sna-sync-nui:connected" /* Connected */}`, (_data, cb) => { + console.info("Connected to SnailyCAD!"); + cb({ ok: true }); +}); +RegisterNuiCallbackType("sna-sync-nui:close-nui" /* CloseNui */); +on(`__cfx_nui:${"sna-sync-nui:close-nui" /* CloseNui */}`, (_data, cb) => { + SetNuiFocus(false, false); + cb({ ok: true }); +}); +RegisterNuiCallbackType("sna-sync-nui:connect_error" /* ConnectionError */); +on(`__cfx_nui:${"sna-sync-nui:connect_error" /* ConnectionError */}`, (data, cb) => { + console.info((data == null ? void 0 : data.message) ?? (data == null ? void 0 : data.name) ?? (String(data) || "Unknown error")); + console.info("Unable to connect to SnailyCAD. Error:", data); + cb({ ok: true }); +}); diff --git a/resources/[sna]/sna-sync/documentation.url b/resources/[sna]/sna-sync/documentation.url new file mode 100644 index 0000000..85061bf --- /dev/null +++ b/resources/[sna]/sna-sync/documentation.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://docs.snailycad.org/docs/fivem-integrations/scripts/sna-sync diff --git a/resources/[sna]/sna-sync/fxmanifest.lua b/resources/[sna]/sna-sync/fxmanifest.lua new file mode 100644 index 0000000..9cb3d28 --- /dev/null +++ b/resources/[sna]/sna-sync/fxmanifest.lua @@ -0,0 +1,15 @@ +fx_version "bodacious" +game "gta5" + +author "Casper Iversen" +description "Sync SnailyCAD with FiveM." +version "0.13.1" + +ui_page "nui/index.html" + +files { + "nui/**/*", +} + +client_scripts {"client/client.js"} +server_scripts {"server/server.js"} \ No newline at end of file diff --git a/resources/[sna]/sna-sync/nui/alert-38484668.js b/resources/[sna]/sna-sync/nui/alert-38484668.js new file mode 100644 index 0000000..88d8821 --- /dev/null +++ b/resources/[sna]/sna-sync/nui/alert-38484668.js @@ -0,0 +1 @@ +import{r as f,$ as o,j as i}from"./index-f45b8810.js";import{P as s,T as u}from"./fetch.client-5aab1c76.js";var d=["color","size","title"];function c(){return c=Object.assign||function(e){for(var n=1;n=0)&&Object.prototype.propertyIsEnumerable.call(e,t)&&(l[t]=e[t])}return l}function b(e,n){if(e==null)return{};var l={},t=Object.keys(e),r,a;for(a=0;a=0)&&(l[r]=e[r]);return l}var m=f.forwardRef(function(e,n){var l=e.color,t=e.size,r=e.title,a=x(e,d);return o.createElement("svg",c({ref:n,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:t,height:t,fill:l},a),r?o.createElement("title",null,r):null,o.createElement("path",{d:"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM8 4a.905.905 0 0 0-.9.995l.35 3.507a.552.552 0 0 0 1.1 0l.35-3.507A.905.905 0 0 0 8 4zm.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"}))});m.propTypes={color:s.string,size:s.oneOfType([s.string,s.number]),title:s.string};m.defaultProps={color:"currentColor",size:"1em",title:null};const g=m,h=u("flex flex-col p-2 px-4 text-black rounded-md shadow border",{variants:{type:{warning:"bg-orange-400 border-orange-500/80",error:"bg-red-400 border-red-500/80",success:"bg-green-400 border-green-500/80"}}});function j(e){return i.jsxs("div",{role:"alert",className:h({className:e.className,type:e.type}),children:[e.title?i.jsxs("header",{className:"flex items-center gap-2 mb-2",children:[i.jsx(g,{}),i.jsx("h5",{className:"font-semibold text-lg",children:e.title})]}):null,e.message?i.jsxs("div",{className:"flex items-center gap-2",children:[e.title?null:i.jsx(g,{}),i.jsx("p",{children:e.message})]}):null,e.children]})}export{j as A}; diff --git a/resources/[sna]/sna-sync/nui/authentication-screen-743d522a.js b/resources/[sna]/sna-sync/nui/authentication-screen-743d522a.js new file mode 100644 index 0000000..dd0508e --- /dev/null +++ b/resources/[sna]/sna-sync/nui/authentication-screen-743d522a.js @@ -0,0 +1 @@ +import{r as u,j as a,o as h,d as A,u as T,f as M,N as S,c as $}from"./index-f45b8810.js";import{$ as I,a as E,b as L,c as R,d as D,B as f,u as q,L as B,h as O}from"./fetch.client-5aab1c76.js";import{L as U,E as V}from"./label-979d47e9.js";function _(e,t){let{inputElementType:r="input",isDisabled:o=!1,isRequired:s=!1,isReadOnly:n=!1,validationState:i,isInvalid:d=!1,type:l="text",value:c,defaultValue:y,onChange:b=()=>{}}=e,{focusableProps:w}=I(e,t),{labelProps:p,fieldProps:P,descriptionProps:v,errorMessageProps:j}=E(e),C=L(e,{labelable:!0});const k={type:l,pattern:e.pattern};var m;return R(t,(m=c??y)!==null&&m!==void 0?m:"",b),{labelProps:p,inputProps:D(C,r==="input"&&k,{disabled:o,readOnly:n,"aria-required":s||void 0,"aria-invalid":d||i==="invalid"||void 0,"aria-errormessage":e["aria-errormessage"],"aria-activedescendant":e["aria-activedescendant"],"aria-autocomplete":e["aria-autocomplete"],"aria-haspopup":e["aria-haspopup"],value:e.value,defaultValue:e.value?void 0:e.defaultValue,onChange:N=>b(N.target.value),autoComplete:e.autoComplete,maxLength:e.maxLength,minLength:e.minLength,name:e.name,placeholder:e.placeholder,inputMode:e.inputMode,onCopy:e.onCopy,onCut:e.onCut,onPaste:e.onPaste,onCompositionEnd:e.onCompositionEnd,onCompositionStart:e.onCompositionStart,onCompositionUpdate:e.onCompositionUpdate,onSelect:e.onSelect,onBeforeInput:e.onBeforeInput,onInput:e.onInput,...w,...P}),descriptionProps:v,errorMessageProps:j}}const x=u.forwardRef(({errorMessage:e,...t},r)=>a.jsx("input",{ref:r,...t,className:h("w-full p-1.5 px-3 rounded-md border outline-none disabled:cursor-not-allowed disabled:opacity-80","transition-colors placeholder:opacity-50","bg-white dark:bg-secondary dark:text-white","border-gray-200 dark:border-quinary focus:border-gray-800 dark:focus:border-gray-500",e&&"border-red-500 dark:border-red-500 focus:border-red-700 dark:focus:border-red-700",t.className)}));x.displayName="Input";const g=u.forwardRef(({errorMessage:e,...t},r)=>a.jsx("textarea",{ref:r,...t,className:h("w-full p-1.5 px-3 rounded-md border outline-none disabled:cursor-not-allowed disabled:opacity-80 resize-y","min-h-[3em] transition-colors placeholder:opacity-50","bg-white dark:bg-secondary dark:text-white","border-gray-200 dark:border-quinary focus:border-gray-800 dark:focus:border-gray-500",e&&"border-red-500 dark:border-red-500 focus:border-red-700 dark:focus:border-red-700",t.className)}));g.displayName="Textarea";function F({inputRef:e}){const[t,r]=u.useState(!1),o=A.useTranslations("Common");function s(){e.current&&(e.current.type=t?"password":"text",r(n=>!n))}return a.jsx(f,{onPress:s,size:"xs",className:"absolute bg-gray-300 top-[32px] right-1 dark:bg-tertiary w-fit",children:o(t?"hide":"show")})}function z(e){const t=u.useRef(null),r=e.inputRef??t,{labelProps:o,inputProps:s,errorMessageProps:n}=_({...e,inputElementType:e.isTextarea?"textarea":"input"},r);return a.jsxs("div",{className:h("relative text-field flex flex-col mb-3",e.className),children:[a.jsx(U,{...e,labelProps:o}),e.isTextarea?a.jsx(g,{errorMessage:e.errorMessage,ref:r,...s}):a.jsx(x,{errorMessage:e.errorMessage,ref:r,...s}),e.children,e.type==="password"&&!e.isTextarea?a.jsx(F,{inputRef:r}):null,e.errorMessage&&a.jsx(V,{errorMessage:e.errorMessage,errorMessageProps:n})]})}function H(){var s;const{hide:e,data:t}=T(),r=q({mutationKey:["authentication"],onSuccess(n,i){e(),M(S.OnAuthenticationFlowSuccess,i),$({title:"Authentication Success",message:"You have successfully authenticated with SnailyCAD."})},mutationFn:async n=>{if(!(t!=null&&t.url))throw new Error("SnailyCAD API URL not provided in server.cfg.");const{data:i,error:d,errorMessage:l}=await O({url:t.url,path:"/user/api-token/validate",method:"POST",data:n});if(l||d||!i)throw l==="invalidToken"?new Error("An invalid Personal API Token was provided."):new Error("Could not verify your Personal API Token.");return i}});async function o(n){n.preventDefault();const d=n.currentTarget.elements.namedItem("api_token");d&&await r.mutateAsync({token:d.value})}return a.jsxs("div",{className:"w-[48em] rounded-md bg-primary p-8",children:[a.jsxs("header",{className:"mb-2",children:[a.jsxs("div",{className:"flex items-center justify-between mb-3",children:[a.jsx("h1",{className:"text-2xl font-bold text-white",children:"SnailyCAD Personal API Token Authentication"}),a.jsx(f,{className:"px-1 text-base",onPress:e,children:a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",fill:"currentColor",className:"bi bi-x",viewBox:"0 0 16 16",children:a.jsx("path",{d:"M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z"})})})]}),a.jsxs("p",{children:["Use your Personal API Token found at your CAD URL ","->"," Account ","->"," API Token. ",a.jsx("br",{}),"This will allow you to interact with the CAD from within FiveM."]})]}),a.jsxs("form",{onSubmit:o,className:"mt-3",children:[a.jsx(z,{id:"api_token",errorMessage:(s=r.error)==null?void 0:s.message,label:"Personal API Token",className:"mb-2",type:"password"}),r.data?a.jsx("p",{className:"text-green-400 mb-2 font-medium",children:"You have successfully authenticated with SnailyCAD. You can now close this window."}):null,a.jsxs(f,{className:"flex gap-2 items-center",type:"submit",isDisabled:r.isPending,children:[r.isPending?a.jsx(B,{}):null,"Authenticate"]})]})]})}export{H as AuthenticationScreen}; diff --git a/resources/[sna]/sna-sync/nui/call-911-attach-screen-3c912936.js b/resources/[sna]/sna-sync/nui/call-911-attach-screen-3c912936.js new file mode 100644 index 0000000..af0ce33 --- /dev/null +++ b/resources/[sna]/sna-sync/nui/call-911-attach-screen-3c912936.js @@ -0,0 +1,6 @@ +import{u as Jr,j as m,o as Zr,c as Je}from"./index-f45b8810.js";import{u as Hr,B as ye,L as Gr,h as Xr}from"./fetch.client-5aab1c76.js";import{A as Qr}from"./alert-38484668.js";/*! + * is-plain-object + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */function Ze(e){return Object.prototype.toString.call(e)==="[object Object]"}function P(e){var r,t;return Ze(e)===!1?!1:(r=e.constructor,r===void 0?!0:(t=r.prototype,!(Ze(t)===!1||t.hasOwnProperty("isPrototypeOf")===!1)))}function R(e){for(var r=arguments.length,t=Array(r>1?r-1:0),n=1;n3?r.i-4:r.i:Array.isArray(e)?1:ke(e)?2:Se(e)?3:0}function Pe(e,r){return X(e)===2?e.has(r):Object.prototype.hasOwnProperty.call(e,r)}function Yr(e,r){return X(e)===2?e.get(r):e[r]}function mr(e,r,t){var n=X(e);n===2?e.set(r,t):n===3?e.add(t):e[r]=t}function _r(e,r){return e===r?e!==0||1/e==1/r:e!=e&&r!=r}function ke(e){return nt&&e instanceof Map}function Se(e){return st&&e instanceof Set}function V(e){return e.o||e.t}function Re(e){if(Array.isArray(e))return Array.prototype.slice.call(e);var r=at(e);delete r[N];for(var t=qe(r),n=0;n1&&(e.set=e.add=e.clear=e.delete=et),Object.freeze(e),r&&te(e,function(t,n){return De(n,!0)},!0)),e}function et(){R(2)}function Be(e){return e==null||typeof e!="object"||Object.isFrozen(e)}function B(e){var r=ot[e];return r||R(18,e),r}function He(){return ne}function be(e,r){r&&(B("Patches"),e.u=[],e.s=[],e.v=r)}function fe(e){je(e),e.p.forEach(rt),e.p=null}function je(e){e===ne&&(ne=e.l)}function Ge(e){return ne={p:[],l:ne,h:e,m:!0,_:0}}function rt(e){var r=e[N];r.i===0||r.i===1?r.j():r.g=!0}function we(e,r){r._=r.p.length;var t=r.p[0],n=e!==void 0&&e!==t;return r.h.O||B("ES5").S(r,e,n),n?(t[N].P&&(fe(r),R(4)),K(e)&&(e=ce(r,e),r.l||le(r,e)),r.u&&B("Patches").M(t[N].t,e,r.u,r.s)):e=ce(r,t,[]),fe(r),r.u&&r.v(r.u,r.s),e!==pr?e:void 0}function ce(e,r,t){if(Be(r))return r;var n=r[N];if(!n)return te(r,function(f,c){return Xe(e,n,r,f,c,t)},!0),r;if(n.A!==e)return r;if(!n.P)return le(e,n.t,!0),n.t;if(!n.I){n.I=!0,n.A._--;var s=n.i===4||n.i===5?n.o=Re(n.k):n.o,i=s,a=!1;n.i===3&&(i=new Set(s),s.clear(),a=!0),te(i,function(f,c){return Xe(e,n,s,f,c,t,a)}),le(e,s,!1),t&&e.u&&B("Patches").N(n,t,e.u,e.s)}return n.o}function Xe(e,r,t,n,s,i,a){if(W(s)){var f=ce(e,s,i&&r&&r.i!==3&&!Pe(r.R,n)?i.concat(n):void 0);if(mr(t,n,f),!W(f))return;e.m=!1}else a&&t.add(s);if(K(s)&&!Be(s)){if(!e.h.D&&e._<1)return;ce(e,s),r&&r.A.l||le(e,s)}}function le(e,r,t){t===void 0&&(t=!1),!e.l&&e.h.D&&e.m&&De(r,t)}function xe(e,r){var t=e[N];return(t?V(t):e)[r]}function Qe(e,r){if(r in e)for(var t=Object.getPrototypeOf(e);t;){var n=Object.getOwnPropertyDescriptor(t,r);if(n)return n;t=Object.getPrototypeOf(t)}}function Ae(e){e.P||(e.P=!0,e.l&&Ae(e.l))}function Oe(e){e.o||(e.o=Re(e.t))}function Ee(e,r,t){var n=ke(r)?B("MapSet").F(r,t):Se(r)?B("MapSet").T(r,t):e.O?function(s,i){var a=Array.isArray(s),f={i:a?1:0,A:i?i.A:He(),P:!1,I:!1,R:{},l:i,t:s,k:null,o:null,j:null,C:!1},c=f,l=Ne;a&&(c=[f],l=ee);var d=Proxy.revocable(c,l),h=d.revoke,v=d.proxy;return f.k=v,f.j=h,v}(r,t):B("ES5").J(r,t);return(t?t.A:He()).p.push(n),n}function tt(e){return W(e)||R(22,e),function r(t){if(!K(t))return t;var n,s=t[N],i=X(t);if(s){if(!s.P&&(s.i<4||!B("ES5").K(s)))return s.t;s.I=!0,n=Ye(t,i),s.I=!1}else n=Ye(t,i);return te(n,function(a,f){s&&Yr(s.t,a)===f||mr(n,a,r(f))}),i===3?new Set(n):n}(e)}function Ye(e,r){switch(r){case 2:return new Map(e);case 3:return Array.from(e)}return Re(e)}var _e,ne,Te=typeof Symbol<"u"&&typeof Symbol("x")=="symbol",nt=typeof Map<"u",st=typeof Set<"u",er=typeof Proxy<"u"&&Proxy.revocable!==void 0&&typeof Reflect<"u",pr=Te?Symbol.for("immer-nothing"):((_e={})["immer-nothing"]=!0,_e),rr=Te?Symbol.for("immer-draftable"):"__$immer_draftable",N=Te?Symbol.for("immer-state"):"__$immer_state",it=""+Object.prototype.constructor,qe=typeof Reflect<"u"&&Reflect.ownKeys?Reflect.ownKeys:Object.getOwnPropertySymbols!==void 0?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,at=Object.getOwnPropertyDescriptors||function(e){var r={};return qe(e).forEach(function(t){r[t]=Object.getOwnPropertyDescriptor(e,t)}),r},ot={},Ne={get:function(e,r){if(r===N)return e;var t=V(e);if(!Pe(t,r))return function(s,i,a){var f,c=Qe(i,a);return c?"value"in c?c.value:(f=c.get)===null||f===void 0?void 0:f.call(s.k):void 0}(e,t,r);var n=t[r];return e.I||!K(n)?n:n===xe(e.t,r)?(Oe(e),e.o[r]=Ee(e.A.h,n,e)):n},has:function(e,r){return r in V(e)},ownKeys:function(e){return Reflect.ownKeys(V(e))},set:function(e,r,t){var n=Qe(V(e),r);if(n!=null&&n.set)return n.set.call(e.k,t),!0;if(!e.P){var s=xe(V(e),r),i=s==null?void 0:s[N];if(i&&i.t===t)return e.o[r]=t,e.R[r]=!1,!0;if(_r(t,s)&&(t!==void 0||Pe(e.t,r)))return!0;Oe(e),Ae(e)}return e.o[r]===t&&(t!==void 0||r in e.o)||Number.isNaN(t)&&Number.isNaN(e.o[r])||(e.o[r]=t,e.R[r]=!0),!0},deleteProperty:function(e,r){return xe(e.t,r)!==void 0||r in e.t?(e.R[r]=!1,Oe(e),Ae(e)):delete e.R[r],e.o&&delete e.o[r],!0},getOwnPropertyDescriptor:function(e,r){var t=V(e),n=Reflect.getOwnPropertyDescriptor(t,r);return n&&{writable:!0,configurable:e.i!==1||r!=="length",enumerable:n.enumerable,value:t[r]}},defineProperty:function(){R(11)},getPrototypeOf:function(e){return Object.getPrototypeOf(e.t)},setPrototypeOf:function(){R(12)}},ee={};te(Ne,function(e,r){ee[e]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)}}),ee.deleteProperty=function(e,r){return ee.set.call(this,e,r,void 0)},ee.set=function(e,r,t){return Ne.set.call(this,e[0],r,t,e[0])};var ft=function(){function e(t){var n=this;this.O=er,this.D=!0,this.produce=function(s,i,a){if(typeof s=="function"&&typeof i!="function"){var f=i;i=s;var c=n;return function(j){var L=this;j===void 0&&(j=f);for(var A=arguments.length,S=Array(A>1?A-1:0),U=1;U1?d-1:0),v=1;v=0;s--){var i=n[s];if(i.path.length===0&&i.op==="replace"){t=i.value;break}}s>-1&&(n=n.slice(s+1));var a=B("Patches").$;return W(t)?a(t,n):this.produce(t,function(f){return a(f,n)})},e}(),k=new ft,Le=k.produce;k.produceWithPatches.bind(k);k.setAutoFreeze.bind(k);k.setUseProxies.bind(k);k.applyPatches.bind(k);var tr=k.createDraft.bind(k),nr=k.finishDraft.bind(k),o={ancestors(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{reverse:t=!1}=r,n=o.levels(e,r);return t?n=n.slice(1):n=n.slice(0,-1),n},common(e,r){for(var t=[],n=0;nr[n])return 1}return 0},endsAfter(e,r){var t=e.length-1,n=e.slice(0,t),s=r.slice(0,t),i=e[t],a=r[t];return o.equals(n,s)&&i>a},endsAt(e,r){var t=e.length,n=e.slice(0,t),s=r.slice(0,t);return o.equals(n,s)},endsBefore(e,r){var t=e.length-1,n=e.slice(0,t),s=r.slice(0,t),i=e[t],a=r[t];return o.equals(n,s)&&it===r[n])},hasPrevious(e){return e[e.length-1]>0},isAfter(e,r){return o.compare(e,r)===1},isAncestor(e,r){return e.lengthr.length&&o.compare(e,r)===0},isParent(e,r){return e.length+1===r.length&&o.compare(e,r)===0},isPath(e){return Array.isArray(e)&&(e.length===0||typeof e[0]=="number")},isSibling(e,r){if(e.length!==r.length)return!1;var t=e.slice(0,-1),n=r.slice(0,-1),s=e[e.length-1],i=r[r.length-1];return s!==i&&o.equals(t,n)},levels(e){for(var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{reverse:t=!1}=r,n=[],s=0;s<=e.length;s++)n.push(e.slice(0,s));return t&&n.reverse(),n},next(e){if(e.length===0)throw new Error("Cannot get the next path of a root path [".concat(e,"], because it has no next index."));var r=e[e.length-1];return e.slice(0,-1).concat(r+1)},operationCanTransformPath(e){switch(e.type){case"insert_node":case"remove_node":case"merge_node":case"split_node":case"move_node":return!0;default:return!1}},parent(e){if(e.length===0)throw new Error("Cannot get the parent path of the root path [".concat(e,"]."));return e.slice(0,-1)},previous(e){if(e.length===0)throw new Error("Cannot get the previous path of a root path [".concat(e,"], because it has no previous index."));var r=e[e.length-1];if(r<=0)throw new Error("Cannot get the previous path of a first child path [".concat(e,"] because it would result in a negative index."));return e.slice(0,-1).concat(r-1)},relative(e,r){if(!o.isAncestor(r,e)&&!o.equals(e,r))throw new Error("Cannot get the relative path of [".concat(e,"] inside ancestor [").concat(r,"], because it is not above or equal to the path."));return e.slice(r.length)},transform(e,r){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!e)return null;var n=[...e],{affinity:s="forward"}=t;if(e.length===0)return n;switch(r.type){case"insert_node":{var{path:i}=r;(o.equals(i,n)||o.endsBefore(i,n)||o.isAncestor(i,n))&&(n[i.length-1]+=1);break}case"remove_node":{var{path:a}=r;if(o.equals(a,n)||o.isAncestor(a,n))return null;o.endsBefore(a,n)&&(n[a.length-1]-=1);break}case"merge_node":{var{path:f,position:c}=r;o.equals(f,n)||o.endsBefore(f,n)?n[f.length-1]-=1:o.isAncestor(f,n)&&(n[f.length-1]-=1,n[f.length]+=c);break}case"split_node":{var{path:l,position:d}=r;if(o.equals(l,n)){if(s==="forward")n[n.length-1]+=1;else if(s!=="backward")return null}else o.endsBefore(l,n)?n[l.length-1]+=1:o.isAncestor(l,n)&&e[l.length]>=d&&(n[l.length-1]+=1,n[l.length]-=d);break}case"move_node":{var{path:h,newPath:v}=r;if(o.equals(h,v))return n;if(o.isAncestor(h,n)||o.equals(h,n)){var x=v.slice();return o.endsBefore(h,v)&&h.length{switch(t.type){case"insert_node":{var{path:n,node:s}=t,i=u.parent(e,n),a=n[n.length-1];if(a>i.children.length)throw new Error('Cannot apply an "insert_node" operation at path ['.concat(n,"] because the destination is past the end of the node."));if(i.children.splice(a,0,s),r)for(var[f,c]of g.points(r))r[c]=y.transform(f,t);break}case"insert_text":{var{path:l,offset:d,text:h}=t;if(h.length===0)break;var v=u.leaf(e,l),x=v.text.slice(0,d),O=v.text.slice(d);if(v.text=x+h+O,r)for(var[j,L]of g.points(r))r[L]=y.transform(j,t);break}case"merge_node":{var{path:A}=t,S=u.get(e,A),U=o.previous(A),I=u.get(e,U),ie=u.parent(e,A),br=A[A.length-1];if(w.isText(S)&&w.isText(I))I.text+=S.text;else if(!w.isText(S)&&!w.isText(I))I.children.push(...S.children);else throw new Error('Cannot apply a "merge_node" operation at path ['.concat(A,"] to nodes of different interfaces: ").concat(D.stringify(S)," ").concat(D.stringify(I)));if(ie.children.splice(br,1),r)for(var[wr,xr]of g.points(r))r[xr]=y.transform(wr,t);break}case"move_node":{var{path:M,newPath:Ie}=t;if(o.isAncestor(M,Ie))throw new Error("Cannot move a path [".concat(M,"] to new path [").concat(Ie,"] because the destination is inside itself."));var Or=u.get(e,M),Pr=u.parent(e,M),jr=M[M.length-1];Pr.children.splice(jr,1);var ue=o.transform(M,t),Ar=u.get(e,o.parent(ue)),Er=ue[ue.length-1];if(Ar.children.splice(Er,0,Or),r)for(var[Nr,kr]of g.points(r))r[kr]=y.transform(Nr,t);break}case"remove_node":{var{path:F}=t,Sr=F[F.length-1],Rr=u.parent(e,F);if(Rr.children.splice(Sr,1),r)for(var[Y,Dr]of g.points(r)){var Me=y.transform(Y,t);if(r!=null&&Me!=null)r[Dr]=Me;else{var J=void 0,$=void 0;for(var[Fe,de]of u.texts(e))if(o.compare(de,F)===-1)J=[Fe,de];else{$=[Fe,de];break}var he=!1;J&&$&&(o.equals($[1],F)?he=!o.hasPrevious($[1]):he=o.common(J[1],F).length{for(var t in e){var n=e[t],s=r[t];if(P(n)&&P(s)){if(!yr(n,s))return!1}else if(Array.isArray(n)&&Array.isArray(s)){if(n.length!==s.length)return!1;for(var i=0;i=0)&&(t[s]=e[s]);return t}function se(e,r){if(e==null)return{};var t=ht(e,r),n,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(s=0;s=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(t[n]=e[n])}return t}var gt=["anchor","focus"];function ir(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),t.push.apply(t,n)}return t}function vt(e){for(var r=1;r1&&arguments[1]!==void 0?arguments[1]:{},{reverse:t=!1}=r,{anchor:n,focus:s}=e;return g.isBackward(e)===t?[n,s]:[s,n]},end(e){var[,r]=g.edges(e);return r},equals(e,r){return y.equals(e.anchor,r.anchor)&&y.equals(e.focus,r.focus)},includes(e,r){if(g.isRange(r)){if(g.includes(e,r.anchor)||g.includes(e,r.focus))return!0;var[t,n]=g.edges(e),[s,i]=g.edges(r);return y.isBefore(t,s)&&y.isAfter(n,i)}var[a,f]=g.edges(e),c=!1,l=!1;return y.isPoint(r)?(c=y.compare(r,a)>=0,l=y.compare(r,f)<=0):(c=o.compare(r,a.path)>=0,l=o.compare(r,f.path)<=0),c&&l},intersection(e,r){var t=se(e,gt),[n,s]=g.edges(e),[i,a]=g.edges(r),f=y.isBefore(n,i)?i:n,c=y.isBefore(s,a)?s:a;return y.isBefore(c,f)?null:vt({anchor:f,focus:c},t)},isBackward(e){var{anchor:r,focus:t}=e;return y.isAfter(r,t)},isCollapsed(e){var{anchor:r,focus:t}=e;return y.equals(r,t)},isExpanded(e){return!g.isCollapsed(e)},isForward(e){return!g.isBackward(e)},isRange(e){return P(e)&&y.isPoint(e.anchor)&&y.isPoint(e.focus)},*points(e){yield[e.anchor,"anchor"],yield[e.focus,"focus"]},start(e){var[r]=g.edges(e);return r},transform(e,r){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return Le(e,n=>{if(n===null)return null;var{affinity:s="inward"}=t,i,a;if(s==="inward"){var f=g.isCollapsed(n);g.isForward(n)?(i="forward",a=f?i:"backward"):(i="backward",a=f?i:"forward")}else s==="outward"?g.isForward(n)?(i="backward",a="forward"):(i="forward",a="backward"):(i=s,a=s);var c=y.transform(n.anchor,r,{affinity:i}),l=y.transform(n.focus,r,{affinity:a});if(!c||!l)return null;n.anchor=c,n.focus=l})}},ar=e=>P(e)&&u.isNodeList(e.children)&&!E.isEditor(e),q={isAncestor(e){return P(e)&&u.isNodeList(e.children)},isElement:ar,isElementList(e){return Array.isArray(e)&&e.every(r=>q.isElement(r))},isElementProps(e){return e.children!==void 0},isElementType:function(r,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"type";return ar(r)&&r[n]===t},matches(e,r){for(var t in r)if(t!=="children"&&e[t]!==r[t])return!1;return!0}},mt=["children"],pt=["text"],or=new WeakMap,u={ancestor(e,r){var t=u.get(e,r);if(w.isText(t))throw new Error("Cannot get the ancestor node at path [".concat(r,"] because it refers to a text node instead: ").concat(D.stringify(t)));return t},*ancestors(e,r){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};for(var n of o.ancestors(r,t)){var s=u.ancestor(e,n),i=[s,n];yield i}},child(e,r){if(w.isText(e))throw new Error("Cannot get the child of a text node: ".concat(D.stringify(e)));var t=e.children[r];if(t==null)throw new Error("Cannot get child at index `".concat(r,"` in node: ").concat(D.stringify(e)));return t},*children(e,r){for(var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},{reverse:n=!1}=t,s=u.ancestor(e,r),{children:i}=s,a=n?i.length-1:0;n?a>=0:a1&&arguments[1]!==void 0?arguments[1]:{};for(var[t,n]of u.nodes(e,r))n.length!==0&&(yield[t,n])},*elements(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};for(var[t,n]of u.nodes(e,r))q.isElement(t)&&(yield[t,n])},extractProps(e){if(q.isAncestor(e)){var r=se(e,mt);return r}else{var r=se(e,pt);return r}},first(e,r){for(var t=r.slice(),n=u.get(e,t);n&&!(w.isText(n)||n.children.length===0);)n=n.children[0],t.push(0);return[n,t]},fragment(e,r){if(w.isText(e))throw new Error("Cannot get a fragment starting from a root text node: ".concat(D.stringify(e)));var t=Le({children:e.children},n=>{var[s,i]=g.edges(r),a=u.nodes(n,{reverse:!0,pass:v=>{var[,x]=v;return!g.includes(r,x)}});for(var[,f]of a){if(!g.includes(r,f)){var c=u.parent(n,f),l=f[f.length-1];c.children.splice(l,1)}if(o.equals(f,i.path)){var d=u.leaf(n,f);d.text=d.text.slice(0,i.offset)}if(o.equals(f,s.path)){var h=u.leaf(n,f);h.text=h.text.slice(s.offset)}}E.isEditor(n)&&(n.selection=null)});return t.children},get(e,r){for(var t=e,n=0;nu.isNode(n));return or.set(e,t),t},last(e,r){for(var t=r.slice(),n=u.get(e,t);n&&!(w.isText(n)||n.children.length===0);){var s=n.children.length-1;n=n.children[s],t.push(s)}return[n,t]},leaf(e,r){var t=u.get(e,r);if(!w.isText(t))throw new Error("Cannot get the leaf node at path [".concat(r,"] because it refers to a non-leaf node: ").concat(D.stringify(t)));return t},*levels(e,r){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};for(var n of o.levels(r,t)){var s=u.get(e,n);yield[s,n]}},matches(e,r){return q.isElement(e)&&q.isElementProps(r)&&q.matches(e,r)||w.isText(e)&&w.isTextProps(r)&&w.matches(e,r)},*nodes(e){for(var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{pass:t,reverse:n=!1}=r,{from:s=[],to:i}=r,a=new Set,f=[],c=e;!(i&&(n?o.isBefore(f,i):o.isAfter(f,i)));){if(a.has(c)||(yield[c,f]),!a.has(c)&&!w.isText(c)&&c.children.length!==0&&(t==null||t([c,f])===!1)){a.add(c);var l=n?c.children.length-1:0;o.isAncestor(f,s)&&(l=s[f.length]),f=f.concat(l),c=u.get(e,f);continue}if(f.length===0)break;if(!n){var d=o.next(f);if(u.has(e,d)){f=d,c=u.get(e,f);continue}}if(n&&f[f.length-1]!==0){var h=o.previous(f);f=h,c=u.get(e,f);continue}f=o.parent(f),c=u.get(e,f),a.add(c)}},parent(e,r){var t=o.parent(r),n=u.get(e,t);if(w.isText(n))throw new Error("Cannot get the parent of path [".concat(r,"] because it does not exist in the root."));return n},string(e){return w.isText(e)?e.text:e.children.map(u.string).join("")},*texts(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};for(var[t,n]of u.nodes(e,r))w.isText(t)&&(yield[t,n])}};function fr(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),t.push.apply(t,n)}return t}function b(e){for(var r=1;rre.isOperation(r))},isSelectionOperation(e){return re.isOperation(e)&&e.type.endsWith("_selection")},isTextOperation(e){return re.isOperation(e)&&e.type.endsWith("_text")},inverse(e){switch(e.type){case"insert_node":return b(b({},e),{},{type:"remove_node"});case"insert_text":return b(b({},e),{},{type:"remove_text"});case"merge_node":return b(b({},e),{},{type:"split_node",path:o.previous(e.path)});case"move_node":{var{newPath:r,path:t}=e;if(o.equals(r,t))return e;if(o.isSibling(t,r))return b(b({},e),{},{path:r,newPath:t});var n=o.transform(t,e),s=o.transform(o.next(t),e);return b(b({},e),{},{path:n,newPath:s})}case"remove_node":return b(b({},e),{},{type:"insert_node"});case"remove_text":return b(b({},e),{},{type:"insert_text"});case"set_node":{var{properties:i,newProperties:a}=e;return b(b({},e),{},{properties:a,newProperties:i})}case"set_selection":{var{properties:f,newProperties:c}=e;return f==null?b(b({},e),{},{properties:c,newProperties:null}):c==null?b(b({},e),{},{properties:null,newProperties:f}):b(b({},e),{},{properties:c,newProperties:f})}case"split_node":return b(b({},e),{},{type:"merge_node",path:o.next(e.path)})}}},cr=new WeakMap,yt=e=>{var r=cr.get(e);if(r!==void 0)return r;if(!P(e))return!1;var t=typeof e.addMark=="function"&&typeof e.apply=="function"&&typeof e.deleteFragment=="function"&&typeof e.insertBreak=="function"&&typeof e.insertSoftBreak=="function"&&typeof e.insertFragment=="function"&&typeof e.insertNode=="function"&&typeof e.insertText=="function"&&typeof e.isElementReadOnly=="function"&&typeof e.isInline=="function"&&typeof e.isSelectable=="function"&&typeof e.isVoid=="function"&&typeof e.normalizeNode=="function"&&typeof e.onChange=="function"&&typeof e.removeMark=="function"&&typeof e.getDirtyPaths=="function"&&(e.marks===null||P(e.marks))&&(e.selection===null||g.isRange(e.selection))&&u.isNodeList(e.children)&&re.isOperationList(e.operations);return cr.set(e,t),t},E={above(e,r){return e.above(r)},addMark(e,r,t){e.addMark(r,t)},after(e,r,t){return e.after(r,t)},before(e,r,t){return e.before(r,t)},deleteBackward(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{unit:t="character"}=r;e.deleteBackward(t)},deleteForward(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{unit:t="character"}=r;e.deleteForward(t)},deleteFragment(e,r){e.deleteFragment(r)},edges(e,r){return e.edges(r)},elementReadOnly(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return e.elementReadOnly(r)},end(e,r){return e.end(r)},first(e,r){return e.first(r)},fragment(e,r){return e.fragment(r)},hasBlocks(e,r){return e.hasBlocks(r)},hasInlines(e,r){return e.hasInlines(r)},hasPath(e,r){return e.hasPath(r)},hasTexts(e,r){return e.hasTexts(r)},insertBreak(e){e.insertBreak()},insertFragment(e,r,t){e.insertFragment(r,t)},insertNode(e,r){e.insertNode(r)},insertSoftBreak(e){e.insertSoftBreak()},insertText(e,r){e.insertText(r)},isBlock(e,r){return e.isBlock(r)},isEdge(e,r,t){return e.isEdge(r,t)},isEditor(e){return yt(e)},isElementReadOnly(e,r){return e.isElementReadOnly(r)},isEmpty(e,r){return e.isEmpty(r)},isEnd(e,r,t){return e.isEnd(r,t)},isInline(e,r){return e.isInline(r)},isNormalizing(e){return e.isNormalizing()},isSelectable(e,r){return e.isSelectable(r)},isStart(e,r,t){return e.isStart(r,t)},isVoid(e,r){return e.isVoid(r)},last(e,r){return e.last(r)},leaf(e,r,t){return e.leaf(r,t)},levels(e,r){return e.levels(r)},marks(e){return e.getMarks()},next(e,r){return e.next(r)},node(e,r,t){return e.node(r,t)},nodes(e,r){return e.nodes(r)},normalize(e,r){e.normalize(r)},parent(e,r,t){return e.parent(r,t)},path(e,r,t){return e.path(r,t)},pathRef(e,r,t){return e.pathRef(r,t)},pathRefs(e){return e.pathRefs()},point(e,r,t){return e.point(r,t)},pointRef(e,r,t){return e.pointRef(r,t)},pointRefs(e){return e.pointRefs()},positions(e,r){return e.positions(r)},previous(e,r){return e.previous(r)},range(e,r,t){return e.range(r,t)},rangeRef(e,r,t){return e.rangeRef(r,t)},rangeRefs(e){return e.rangeRefs()},removeMark(e,r){e.removeMark(r)},setNormalizing(e,r){e.setNormalizing(r)},start(e,r){return e.start(r)},string(e,r,t){return e.string(r,t)},unhangRange(e,r,t){return e.unhangRange(r,t)},void(e,r){return e.void(r)},withoutNormalizing(e,r){e.withoutNormalizing(r)}};function lr(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),t.push.apply(t,n)}return t}function ur(e){for(var r=1;rr.offset?1:0:t},isAfter(e,r){return y.compare(e,r)===1},isBefore(e,r){return y.compare(e,r)===-1},equals(e,r){return e.offset===r.offset&&o.equals(e.path,r.path)},isPoint(e){return P(e)&&typeof e.offset=="number"&&o.isPath(e.path)},transform(e,r){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return Le(e,n=>{if(n===null)return null;var{affinity:s="forward"}=t,{path:i,offset:a}=n;switch(r.type){case"insert_node":case"move_node":{n.path=o.transform(i,r,t);break}case"insert_text":{o.equals(r.path,i)&&(r.offset2&&arguments[2]!==void 0?arguments[2]:{},{loose:n=!1}=t;function s(i){var a=se(i,bt);return a}return yr(n?s(e):e,n?s(r):r)},isText(e){return P(e)&&typeof e.text=="string"},isTextList(e){return Array.isArray(e)&&e.every(r=>w.isText(r))},isTextProps(e){return e.text!==void 0},matches(e,r){for(var t in r)if(t!=="text"&&(!e.hasOwnProperty(t)||e[t]!==r[t]))return!1;return!0},decorations(e,r){var t=[T({},e)];for(var n of r){var s=se(n,wt),[i,a]=g.edges(n),f=[],c=0,l=i.offset,d=a.offset;for(var h of t){var{length:v}=h.text,x=c;if(c+=v,l<=x&&c<=d){Object.assign(h,s),f.push(h);continue}if(l!==d&&(l===c||d===x)||l>c||dx){var S=l-x;j=T(T({},O),{},{text:O.text.slice(0,S)}),O=T(T({},O),{},{text:O.text.slice(S)})}Object.assign(O,s),j&&f.push(j),f.push(O),L&&f.push(L)}t=f}return t}},xt=e=>e.selection?e.selection:e.children.length>0?E.end(e,[]):[0],p;(function(e){e[e.None=0]="None",e[e.Extend=1]="Extend",e[e.ZWJ=2]="ZWJ",e[e.RI=4]="RI",e[e.Prepend=8]="Prepend",e[e.SpacingMark=16]="SpacingMark",e[e.L=32]="L",e[e.V=64]="V",e[e.T=128]="T",e[e.LV=256]="LV",e[e.LVT=512]="LVT",e[e.ExtPict=1024]="ExtPict",e[e.Any=2048]="Any"})(p||(p={}));p.L,p.L|p.V|p.LV|p.LVT,p.LV|p.V,p.V|p.T,p.LVT|p.T,p.T,p.Any,p.Extend|p.ZWJ,p.Any,p.SpacingMark,p.Prepend,p.Any,p.ZWJ,p.ExtPict,p.RI,p.RI;var Ot={delete(e,r){e.delete(r)},insertFragment(e,r,t){e.insertFragment(r,t)},insertText(e,r){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};E.withoutNormalizing(e,()=>{var{voids:n=!1}=t,{at:s=xt(e)}=t;if(o.isPath(s)&&(s=E.range(e,s)),g.isRange(s))if(g.isCollapsed(s))s=s.anchor;else{var i=g.end(s);if(!n&&E.void(e,{at:i}))return;var a=g.start(s),f=E.pointRef(e,a),c=E.pointRef(e,i);vr.delete(e,{at:s,voids:n});var l=f.unref(),d=c.unref();s=l||d,vr.setSelection(e,{anchor:s,focus:s})}if(!(!n&&E.void(e,{at:s})||E.elementReadOnly(e,{at:s}))){var{path:h,offset:v}=s;r.length>0&&e.apply({type:"insert_text",path:h,offset:v,text:r})}})}};function gr(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),t.push.apply(t,n)}return t}function oe(e){for(var r=1;ra.children).map(a=>a==null?void 0:a.text))??[];r.push(i.join(" "));continue}q.isElement(s)&&((n=s.children)==null||n.forEach(i=>{r.push(i.text.trim())}))}return r.join(" ")}function Nt(){const{hide:e,data:r}=Jr(),t=Hr({mutationKey:["attach-to-911-call"],onSuccess(n,s){e(),s.type==="assign"?Je({title:"Attached to call",message:`Successfully attached yourself to call #${n.caseNumber}.`}):Je({title:"Unattached from call",message:`Successfully unattached yourself from call #${n.caseNumber}.`})},mutationFn:async n=>{if(!(r!=null&&r.url)||!r.userApiToken)throw new Error("SnailyCAD API URL and/or Personal API Token not provided.");const{data:s,error:i,errorMessage:a}=await Xr({url:r.url,path:`/911-calls/${n.type}/${n.callId}`,method:"POST",data:{unit:r.unitId},headers:{userApiToken:r.userApiToken}});if(i||!s)throw new Error(a||"Unknown error occurred. Please see F8 console for further details.");return s}});return m.jsxs("div",{className:"w-[56em] rounded-md bg-primary p-8",children:[m.jsxs("header",{className:"mb-2",children:[m.jsxs("div",{className:"mb-3 flex items-center justify-between",children:[m.jsx("h1",{className:"text-2xl font-bold text-white",children:"Active 911 Calls"}),m.jsx(ye,{className:"px-1 text-base",onPress:e,children:m.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",fill:"currentColor",className:"bi bi-x",viewBox:"0 0 16 16",children:m.jsx("path",{d:"M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z"})})})]}),m.jsxs("p",{className:"text-neutral-200",children:["A list of all active 911 calls. Click on any of them to assign yourself to a call.",m.jsx("br",{}),"Additionally use",m.jsx("code",{className:"inline-block bg-secondary p-0.5",children:"/sn-attach "})]})]}),t.error?m.jsx(Qr,{type:"error",title:"An error occurred",message:t.error.message}):null,m.jsx("div",{className:"thin-scrollbar mt-6 block max-w-full overflow-x-auto pb-5",children:m.jsxs("table",{className:"w-full whitespace-nowrap text-white",children:[m.jsxs("thead",{children:[m.jsx("th",{className:"select-none bg-gray-200 p-2 px-3 text-left text-sm font-semibold uppercase text-neutral-700 first:rounded-tl-md last:rounded-tr-md dark:bg-secondary dark:text-gray-400 lg:table-cell",children:"Case Number"}),m.jsx("th",{className:"select-none bg-gray-200 p-2 px-3 text-left text-sm font-semibold uppercase text-neutral-700 first:rounded-tl-md last:rounded-tr-md dark:bg-secondary dark:text-gray-400 lg:table-cell",children:"Location"}),m.jsx("th",{className:"select-none bg-gray-200 p-2 px-3 text-left text-sm font-semibold uppercase text-neutral-700 first:rounded-tl-md last:rounded-tr-md dark:bg-secondary dark:text-gray-400 lg:table-cell",children:"Caller"}),m.jsx("th",{className:"select-none bg-gray-200 p-2 px-3 text-left text-sm font-semibold uppercase text-neutral-700 first:rounded-tl-md last:rounded-tr-md dark:bg-secondary dark:text-gray-400 lg:table-cell",children:"Description"}),m.jsx("th",{className:"select-none bg-gray-200 p-2 px-3 text-left text-sm font-semibold uppercase text-neutral-700 first:rounded-tl-md last:rounded-tr-md dark:bg-secondary dark:text-gray-400 lg:table-cell",children:"Actions"})]}),m.jsx("tbody",{children:r==null?void 0:r.calls.map(n=>{var f,c;const s=((f=t.variables)==null?void 0:f.callId)===n.id,i=(c=n.assignedUnits)==null?void 0:c.some(l=>{var d;return((d=l.unit)==null?void 0:d.id)===r.unitId}),a=n.descriptionData?Pt(n.descriptionData):n.description;return m.jsxs("tr",{className:Zr(i&&"bg-amber-900"),children:[m.jsxs("td",{className:"m-0 p-3 text-left",children:["#",n.caseNumber]}),m.jsx("td",{className:"m-0 p-3 text-left",children:n.location}),m.jsx("td",{className:"m-0 p-3 text-left",children:n.name}),m.jsx("td",{className:"m-0 p-3 text-left",children:a||"None"}),m.jsx("td",{className:"m-0 p-3 text-left",children:m.jsxs(ye,{className:"flex items-center gap-2",isDisabled:s&&t.isPending,onPress:()=>t.mutate({type:i?"unassign":"assign",callId:n.id}),size:"xs",children:[s&&t.isPending?m.jsx(Gr,{className:"w-4 h-4"}):null,i?"Unassign from call":"Assign to call"]})})]},n.id)})})]})}),m.jsx(ye,{onPress:e,children:"Cancel"})]})}export{Nt as Call911AttachScreen}; diff --git a/resources/[sna]/sna-sync/nui/fetch.client-5aab1c76.js b/resources/[sna]/sna-sync/nui/fetch.client-5aab1c76.js new file mode 100644 index 0000000..1b68e31 --- /dev/null +++ b/resources/[sna]/sna-sync/nui/fetch.client-5aab1c76.js @@ -0,0 +1 @@ +var Le=(e,t,r)=>{if(!t.has(e))throw TypeError("Cannot "+r)};var y=(e,t,r)=>(Le(e,t,"read from private field"),r?r.call(e):t.get(e)),V=(e,t,r)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,r)},q=(e,t,r,n)=>(Le(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r);var Q=(e,t,r)=>(Le(e,t,"access private method"),r);import{S as Vt,s as qt,g as Xt,n as mt,e as Yt,r as f,$ as C,h as Jt,i as Zt,j as yt,o as Et}from"./index-f45b8810.js";var B,N,D,H,ne,ve,le,Re,ht,Qt=(ht=class extends Vt{constructor(r,n){super();V(this,ne);V(this,le);V(this,B,void 0);V(this,N,void 0);V(this,D,void 0);V(this,H,void 0);q(this,N,void 0),q(this,B,r),this.setOptions(n),this.bindMethods(),Q(this,ne,ve).call(this)}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(r){var a;const n=this.options;this.options=y(this,B).defaultMutationOptions(r),qt(n,this.options)||y(this,B).getMutationCache().notify({type:"observerOptionsUpdated",mutation:y(this,D),observer:this}),(a=y(this,D))==null||a.setOptions(this.options)}onUnsubscribe(){var r;this.hasListeners()||(r=y(this,D))==null||r.removeObserver(this)}onMutationUpdate(r){Q(this,ne,ve).call(this),Q(this,le,Re).call(this,r)}getCurrentResult(){return y(this,N)}reset(){q(this,D,void 0),Q(this,ne,ve).call(this),Q(this,le,Re).call(this)}mutate(r,n){var a;return q(this,H,n),(a=y(this,D))==null||a.removeObserver(this),q(this,D,y(this,B).getMutationCache().build(y(this,B),this.options)),y(this,D).addObserver(this),y(this,D).execute(r)}},B=new WeakMap,N=new WeakMap,D=new WeakMap,H=new WeakMap,ne=new WeakSet,ve=function(){var n;const r=((n=y(this,D))==null?void 0:n.state)??Xt();q(this,N,{...r,isPending:r.status==="pending",isSuccess:r.status==="success",isError:r.status==="error",isIdle:r.status==="idle",mutate:this.mutate,reset:this.reset})},le=new WeakSet,Re=function(r){mt.batch(()=>{var n,a,i,o,l,u,c,b;y(this,H)&&this.hasListeners()&&((r==null?void 0:r.type)==="success"?((a=(n=y(this,H)).onSuccess)==null||a.call(n,r.data,y(this,N).variables,y(this,N).context),(o=(i=y(this,H)).onSettled)==null||o.call(i,r.data,null,y(this,N).variables,y(this,N).context)):(r==null?void 0:r.type)==="error"&&((u=(l=y(this,H)).onError)==null||u.call(l,r.error,y(this,N).variables,y(this,N).context),(b=(c=y(this,H)).onSettled)==null||b.call(c,void 0,r.error,y(this,N).variables,y(this,N).context))),this.listeners.forEach(h=>{h(y(this,N))})})},ht);function _t(e,t){return typeof e=="function"?e(...t):!!e}function Bn(e,t){const r=Yt(t),[n]=f.useState(()=>new Qt(r,e));f.useEffect(()=>{n.setOptions(e)},[n,e]);const a=f.useSyncExternalStore(f.useCallback(o=>n.subscribe(mt.batchCalls(o)),[n]),()=>n.getCurrentResult(),()=>n.getCurrentResult()),i=f.useCallback((o,l)=>{n.mutate(o,l).catch(er)},[n]);if(a.error&&_t(n.options.throwOnError,[a.error]))throw a.error;return{...a,mutate:i,mutateAsync:a.mutate}}function er(){}function zn(e,t,r){let[n,a]=f.useState(e||t),i=f.useRef(e!==void 0),o=e!==void 0;f.useEffect(()=>{let c=i.current;c!==o&&console.warn(`WARN: A component changed from ${c?"controlled":"uncontrolled"} to ${o?"controlled":"uncontrolled"}.`),i.current=o},[o]);let l=o?e:n,u=f.useCallback((c,...b)=>{let h=(v,...g)=>{r&&(Object.is(l,v)||r(v,...g)),o||(l=v)};typeof c=="function"?(console.warn("We can not support a function callback. See Github Issues for details https://github.com/adobe/react-spectrum/issues/2320"),a((g,...E)=>{let T=c(o?l:g,...E);return h(T,...b),o?g:T})):(o||a(c),h(c,...b))},[o,l,r]);return[l,u]}function tr(e,t=-1/0,r=1/0){return Math.min(Math.max(e,t),r)}const ge={prefix:String(Math.round(Math.random()*1e10)),current:0},Pt=C.createContext(ge),rr=C.createContext(!1);let nr=!!(typeof window<"u"&&window.document&&window.document.createElement),Ce=new WeakMap;function ar(e=!1){let t=f.useContext(Pt),r=f.useRef(null);if(r.current===null&&!e){var n,a;let i=(n=C.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED)===null||n===void 0||(a=n.ReactCurrentOwner)===null||a===void 0?void 0:a.current;if(i){let o=Ce.get(i);o==null?Ce.set(i,{id:t.current,state:i.memoizedState}):i.memoizedState!==o.state&&(t.current=o.id,Ce.delete(i))}r.current=++t.current}return r.current}function or(e){let t=f.useContext(Pt);t===ge&&!nr&&console.warn("When server rendering, you must wrap your application in an to ensure consistent ids are generated between the client and server.");let r=ar(!!e),n=`react-aria${t.prefix}`;return e||`${n}-${r}`}function ir(e){let t=C.useId(),[r]=f.useState(Tt()),n=r?"react-aria":`react-aria${ge.prefix}`;return e||`${n}-${t}`}const sr=typeof C.useId=="function"?ir:or;function lr(){return!1}function ur(){return!0}function cr(e){return()=>{}}function Tt(){return typeof C.useSyncExternalStore=="function"?C.useSyncExternalStore(cr,lr,ur):f.useContext(rr)}function wt(e){var t,r,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e))for(t=0;t{};function R(e){const t=f.useRef(null);return k(()=>{t.current=e},[e]),f.useCallback((...r)=>{const n=t.current;return n(...r)},[])}function fr(e){let[t,r]=f.useState(e),n=f.useRef(null),a=R(()=>{let o=n.current.next();if(o.done){n.current=null;return}t===o.value?a():r(o.value)});k(()=>{n.current&&a()});let i=R(o=>{n.current=o(t),a()});return[t,i]}let he=new Map;function me(e){let[t,r]=f.useState(e),n=f.useRef(null),a=sr(t),i=f.useCallback(o=>{n.current=o},[]);return he.set(a,i),k(()=>{let o=a;return()=>{he.delete(o)}},[a]),f.useEffect(()=>{let o=n.current;o&&(n.current=null,r(o))}),a}function pr(e,t){if(e===t)return e;let r=he.get(e);if(r)return r(t),t;let n=he.get(t);return n?(n(e),e):t}function Je(e=[]){let t=me(),[r,n]=fr(t),a=f.useCallback(()=>{n(function*(){yield t,yield document.getElementById(t)?t:void 0})},[t,n]);return k(a,[t,a,...e]),r}function br(...e){return(...t)=>{for(let r of e)typeof r=="function"&&r(...t)}}function K(...e){let t={...e[0]};for(let r=1;r=65&&a.charCodeAt(2)<=90?t[a]=br(i,o):(a==="className"||a==="UNSAFE_className")&&typeof i=="string"&&typeof o=="string"?t[a]=dr(i,o):a==="id"&&i&&o?t.id=pr(i,o):t[a]=o!==void 0?o:i}}return t}const vr=new Set(["id"]),$r=new Set(["aria-label","aria-labelledby","aria-describedby","aria-details"]),gr=new Set(["href","target","rel","download","ping","referrerPolicy"]),hr=/^(data-.*)$/;function xt(e,t={}){let{labelable:r,isLink:n,propNames:a}=t,i={};for(const o in e)Object.prototype.hasOwnProperty.call(e,o)&&(vr.has(o)||r&&$r.has(o)||n&&gr.has(o)||a!=null&&a.has(o)||hr.test(o))&&(i[o]=e[o]);return i}function X(e){if(mr())e.focus({preventScroll:!0});else{let t=yr(e);e.focus(),Er(t)}}let ce=null;function mr(){if(ce==null){ce=!1;try{var e=document.createElement("div");e.focus({get preventScroll(){return ce=!0,!0}})}catch{}}return ce}function yr(e){for(var t=e.parentNode,r=[],n=document.scrollingElement||document.documentElement;t instanceof HTMLElement&&t!==n;)(t.offsetHeight"u"||window.navigator==null?!1:((t=window.navigator.userAgentData)===null||t===void 0?void 0:t.brands.some(r=>e.test(r.brand)))||e.test(window.navigator.userAgent)}function ze(e){var t;return typeof window<"u"&&window.navigator!=null?e.test(((t=window.navigator.userAgentData)===null||t===void 0?void 0:t.platform)||window.navigator.platform):!1}function ae(){return ze(/^Mac/i)}function Pr(){return ze(/^iPhone/i)}function St(){return ze(/^iPad/i)||ae()&&navigator.maxTouchPoints>1}function Ge(){return Pr()||St()}function Gn(){return ae()||Ge()}function Tr(){return xe(/AppleWebKit/i)&&!wr()}function wr(){return xe(/Chrome/i)}function Lt(){return xe(/Android/i)}function xr(){return xe(/Firefox/i)}const Sr=f.createContext({isNative:!0,open:Cr});function Vn(){return f.useContext(Sr)}function oe(e,t,r=!0){var n,a;let{metaKey:i,ctrlKey:o,altKey:l,shiftKey:u}=t;xr()&&(!((n=window.event)===null||n===void 0||(a=n.type)===null||a===void 0)&&a.startsWith("key"))&&e.target==="_blank"&&(ae()?i=!0:o=!0);let c=Tr()&&ae()&&!St()?new KeyboardEvent("keydown",{keyIdentifier:"Enter",metaKey:i,ctrlKey:o,altKey:l,shiftKey:u}):new MouseEvent("click",{metaKey:i,ctrlKey:o,altKey:l,shiftKey:u,bubbles:!0,cancelable:!0});oe.isOpening=r,X(e),e.dispatchEvent(c),oe.isOpening=!1}oe.isOpening=!1;function Lr(e,t){if(e instanceof HTMLAnchorElement)t(e);else if(e.hasAttribute("data-href")){let r=document.createElement("a");r.href=e.getAttribute("data-href"),e.hasAttribute("data-target")&&(r.target=e.getAttribute("data-target")),e.hasAttribute("data-rel")&&(r.rel=e.getAttribute("data-rel")),e.hasAttribute("data-download")&&(r.download=e.getAttribute("data-download")),e.hasAttribute("data-ping")&&(r.ping=e.getAttribute("data-ping")),e.hasAttribute("data-referrer-policy")&&(r.referrerPolicy=e.getAttribute("data-referrer-policy")),e.appendChild(r),t(r),e.removeChild(r)}}function Cr(e,t){Lr(e,r=>oe(r,t))}let te=new Map,Ie=new Set;function Ze(){if(typeof window>"u")return;let e=r=>{let n=te.get(r.target);n||(n=new Set,te.set(r.target,n),r.target.addEventListener("transitioncancel",t)),n.add(r.propertyName)},t=r=>{let n=te.get(r.target);if(n&&(n.delete(r.propertyName),n.size===0&&(r.target.removeEventListener("transitioncancel",t),te.delete(r.target)),te.size===0)){for(let a of Ie)a();Ie.clear()}};document.body.addEventListener("transitionrun",e),document.body.addEventListener("transitionend",t)}typeof document<"u"&&(document.readyState!=="loading"?Ze():document.addEventListener("DOMContentLoaded",Ze));function Ct(e){requestAnimationFrame(()=>{te.size===0?e():Ie.add(e)})}function kt(){let e=f.useRef(new Map),t=f.useCallback((a,i,o,l)=>{let u=l!=null&&l.once?(...c)=>{e.current.delete(o),o(...c)}:o;e.current.set(o,{type:i,eventTarget:a,fn:u,options:l}),a.addEventListener(i,o,l)},[]),r=f.useCallback((a,i,o,l)=>{var u;let c=((u=e.current.get(o))===null||u===void 0?void 0:u.fn)||o;a.removeEventListener(i,c,l),e.current.delete(o)},[]),n=f.useCallback(()=>{e.current.forEach((a,i)=>{r(a.eventTarget,a.type,i,a.options)})},[r]);return f.useEffect(()=>n,[n]),{addGlobalListener:t,removeGlobalListener:r,removeAllGlobalListeners:n}}function kr(e,t){let{id:r,"aria-label":n,"aria-labelledby":a}=e;return r=me(r),a&&n?a=[...new Set([r,...a.trim().split(/\s+/)])].join(" "):a&&(a=a.trim().split(/\s+/).join(" ")),!n&&!a&&t&&(n=t),{id:r,"aria-label":n,"aria-labelledby":a}}function Mr(){return typeof window.ResizeObserver<"u"}function qn(e){const{ref:t,onResize:r}=e;f.useEffect(()=>{let n=t==null?void 0:t.current;if(n)if(Mr()){const a=new window.ResizeObserver(i=>{i.length&&r()});return a.observe(n),()=>{n&&a.unobserve(n)}}else return window.addEventListener("resize",r,!1),()=>{window.removeEventListener("resize",r,!1)}},[r,t])}function Mt(e,t){k(()=>{if(e&&e.ref&&t)return e.ref.current=t.current,()=>{e.ref.current=null}})}function Qe(e){for(_e(e)&&(e=e.parentElement);e&&!_e(e);)e=e.parentElement;return e||document.scrollingElement||document.documentElement}function _e(e){let t=window.getComputedStyle(e);return/(auto|scroll)/.test(t.overflow+t.overflowX+t.overflowY)}let Nr=0;const ke=new Map;function Fr(e){let[t,r]=f.useState(void 0);return k(()=>{if(!e)return;let n=ke.get(e);if(n)r(n.element.id);else{let a=`react-aria-description-${Nr++}`;r(a);let i=document.createElement("div");i.id=a,i.style.display="none",i.textContent=e,document.body.appendChild(i),n={refCount:0,element:i},ke.set(e,n)}return n.refCount++,()=>{--n.refCount===0&&(n.element.remove(),ke.delete(e))}},[e]),{"aria-describedby":e?t:void 0}}function Xn(e,t,r,n){let a=R(r),i=r==null;f.useEffect(()=>{if(i)return;let o=e.current;return o.addEventListener(t,a,n),()=>{o.removeEventListener(t,a,n)}},[e,t,n,i,a])}function Or(e,t){let r=et(e,t,"left"),n=et(e,t,"top"),a=t.offsetWidth,i=t.offsetHeight,o=e.scrollLeft,l=e.scrollTop,{borderTopWidth:u,borderLeftWidth:c}=getComputedStyle(e),b=e.scrollLeft+parseInt(c,10),h=e.scrollTop+parseInt(u,10),v=b+e.clientWidth,g=h+e.clientHeight;r<=o?o=r-parseInt(c,10):r+a>v&&(o+=r+a-v),n<=h?l=n-parseInt(u,10):n+i>g&&(l+=n+i-g),e.scrollLeft=o,e.scrollTop=l}function et(e,t,r){const n=r==="left"?"offsetLeft":"offsetTop";let a=0;for(;t.offsetParent&&(a+=t[n],t.offsetParent!==e);){if(t.offsetParent.contains(e)){a-=e[n];break}t=t.offsetParent}return a}function Yn(e,t){if(document.contains(e)){let o=document.scrollingElement||document.documentElement;if(window.getComputedStyle(o).overflow==="hidden"){let u=Qe(e);for(;e&&u&&e!==o&&u!==o;)Or(u,e),e=u,u=Qe(e)}else{var r;let{left:u,top:c}=e.getBoundingClientRect();e==null||(r=e.scrollIntoView)===null||r===void 0||r.call(e,{block:"nearest"});let{left:b,top:h}=e.getBoundingClientRect();if(Math.abs(u-b)>1||Math.abs(c-h)>1){var n,a,i;t==null||(n=t.containingElement)===null||n===void 0||(a=n.scrollIntoView)===null||a===void 0||a.call(n,{block:"center",inline:"center"}),(i=e.scrollIntoView)===null||i===void 0||i.call(e,{block:"nearest"})}}}}function Ke(e){return e.mozInputSource===0&&e.isTrusted?!0:Lt()&&e.pointerType?e.type==="click"&&e.buttons===1:e.detail===0&&!e.pointerType}function Dr(e){return!Lt()&&e.width===0&&e.height===0||e.width===1&&e.height===1&&e.pressure===0&&e.detail===0&&e.pointerType==="mouse"}function Jn(e,t,r){let n=f.useRef(t),a=R(()=>{r&&r(n.current)});f.useEffect(()=>{var i;let o=e==null||(i=e.current)===null||i===void 0?void 0:i.form;return o==null||o.addEventListener("reset",a),()=>{o==null||o.removeEventListener("reset",a)}},[e,a])}class Rr{getStringForLocale(t,r){let n=this.strings[r];n||(n=Ir(r,this.strings,this.defaultLocale),this.strings[r]=n);let a=n[t];if(!a)throw new Error(`Could not find intl message ${t} in ${r} locale`);return a}constructor(t,r="en-US"){this.strings={...t},this.defaultLocale=r}}function Ir(e,t,r="en-US"){if(t[e])return t[e];let n=Kr(e);if(t[n])return t[n];for(let a in t)if(a.startsWith(n+"-"))return t[a];return t[r]}function Kr(e){return Intl.Locale?new Intl.Locale(e).language:e.split("-")[0]}const tt=new Map,rt=new Map;class Ar{format(t,r){let n=this.strings.getStringForLocale(t,this.locale);return typeof n=="function"?n(r,this):n}plural(t,r,n="cardinal"){let a=r["="+t];if(a)return typeof a=="function"?a():a;let i=this.locale+":"+n,o=tt.get(i);o||(o=new Intl.PluralRules(this.locale,{type:n}),tt.set(i,o));let l=o.select(t);return a=r[l]||r.other,typeof a=="function"?a():a}number(t){let r=rt.get(this.locale);return r||(r=new Intl.NumberFormat(this.locale),rt.set(this.locale,r)),r.format(t)}select(t,r){let n=t[r]||t.other;return typeof n=="function"?n():n}constructor(t,r){this.locale=t,this.strings=r}}function Hr(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function Wr(e,t,r){Hr(e,t),t.set(e,r)}let Me=new Map,Ae=!1;try{Ae=new Intl.NumberFormat("de-DE",{signDisplay:"exceptZero"}).resolvedOptions().signDisplay==="exceptZero"}catch{}let ye=!1;try{ye=new Intl.NumberFormat("de-DE",{style:"unit",unit:"degree"}).resolvedOptions().style==="unit"}catch{}const Nt={degree:{narrow:{default:"°","ja-JP":" 度","zh-TW":"度","sl-SI":" °"}}};class jr{format(t){let r="";if(!Ae&&this.options.signDisplay!=null?r=Br(this.numberFormatter,this.options.signDisplay,t):r=this.numberFormatter.format(t),this.options.style==="unit"&&!ye){var n;let{unit:a,unitDisplay:i="short",locale:o}=this.resolvedOptions(),l=(n=Nt[a])===null||n===void 0?void 0:n[i];r+=l[o]||l.default}return r}formatToParts(t){return this.numberFormatter.formatToParts(t)}formatRange(t,r){if(typeof this.numberFormatter.formatRange=="function")return this.numberFormatter.formatRange(t,r);if(r= start date");return`${this.format(t)} – ${this.format(r)}`}formatRangeToParts(t,r){if(typeof this.numberFormatter.formatRangeToParts=="function")return this.numberFormatter.formatRangeToParts(t,r);if(r= start date");let n=this.numberFormatter.formatToParts(t),a=this.numberFormatter.formatToParts(r);return[...n.map(i=>({...i,source:"startRange"})),{type:"literal",value:" – ",source:"shared"},...a.map(i=>({...i,source:"endRange"}))]}resolvedOptions(){let t=this.numberFormatter.resolvedOptions();return!Ae&&this.options.signDisplay!=null&&(t={...t,signDisplay:this.options.signDisplay}),!ye&&this.options.style==="unit"&&(t={...t,style:"unit",unit:this.options.unit,unitDisplay:this.options.unitDisplay}),t}constructor(t,r={}){this.numberFormatter=Ur(t,r),this.options=r}}function Ur(e,t={}){let{numberingSystem:r}=t;if(r&&e.indexOf("-u-nu-")===-1&&(e=`${e}-u-nu-${r}`),t.style==="unit"&&!ye){var n;let{unit:o,unitDisplay:l="short"}=t;if(!o)throw new Error('unit option must be provided with style: "unit"');if(!(!((n=Nt[o])===null||n===void 0)&&n[l]))throw new Error(`Unsupported unit ${o} with unitDisplay = ${l}`);t={...t,style:"decimal"}}let a=e+(t?Object.entries(t).sort((o,l)=>o[0]0||Object.is(r,0):t==="exceptZero"&&(Object.is(r,-0)||Object.is(r,0)?r=Math.abs(r):n=r>0),n){let a=e.format(-r),i=e.format(r),o=a.replace(i,"").replace(/\u200e|\u061C/,"");return[...o].length!==1&&console.warn("@react-aria/i18n polyfill for NumberFormat signDisplay: Unsupported case"),a.replace(i,"!!!").replace(o,"+").replace("!!!",i)}else return e.format(r)}}const zr=new Set(["Arab","Syrc","Samr","Mand","Thaa","Mend","Nkoo","Adlm","Rohg","Hebr"]),Gr=new Set(["ae","ar","arc","bcc","bqi","ckb","dv","fa","glk","he","ku","mzn","nqo","pnb","ps","sd","ug","ur","yi"]);function Vr(e){if(Intl.Locale){let r=new Intl.Locale(e).maximize().script;return zr.has(r)}let t=e.split("-")[0];return Gr.has(t)}function Ft(){let e=typeof navigator<"u"&&(navigator.language||navigator.userLanguage)||"en-US";try{Intl.DateTimeFormat.supportedLocalesOf([e])}catch{e="en-US"}return{locale:e,direction:Vr(e)?"rtl":"ltr"}}let He=Ft(),ie=new Set;function nt(){He=Ft();for(let e of ie)e(He)}function qr(){let e=Tt(),[t,r]=f.useState(He);return f.useEffect(()=>(ie.size===0&&window.addEventListener("languagechange",nt),ie.add(r),()=>{ie.delete(r),ie.size===0&&window.removeEventListener("languagechange",nt)}),[]),e?{locale:"en-US",direction:"ltr"}:t}const Xr=C.createContext(null);function Ve(){let e=qr();return f.useContext(Xr)||e}const at=new WeakMap;function Yr(e){let t=at.get(e);return t||(t=new Rr(e),at.set(e,t)),t}function Zn(e){let{locale:t}=Ve(),r=f.useMemo(()=>Yr(e),[e]);return f.useMemo(()=>new Ar(t,r),[t,r])}function Jr(e={}){let{locale:t}=Ve();return f.useMemo(()=>new jr(t,e),[t,e])}let Ne=new Map;function Qn(e){let{locale:t}=Ve(),r=t+(e?Object.entries(e).sort((a,i)=>a[0]{Ct(()=>{re==="restoring"&&(document.documentElement.style.webkitUserSelect==="none"&&(document.documentElement.style.webkitUserSelect=We||""),We="",re="default")})},300)}else if((e instanceof HTMLElement||e instanceof SVGElement)&&e&&$e.has(e)){let t=$e.get(e);e.style.userSelect==="none"&&(e.style.userSelect=t),e.getAttribute("style")===""&&e.removeAttribute("style"),$e.delete(e)}}const Dt=C.createContext(null);Dt.displayName="PressResponderContext";function en(e){let t=f.useContext(Dt);if(t){let{register:r,...n}=t;e=K(n,e),r()}return Mt(t,e.ref),e}var fe=new WeakMap;class pe{continuePropagation(){ot(this,fe,!1)}get shouldStopPropagation(){return Qr(this,fe)}constructor(t,r,n){Wr(this,fe,{writable:!0,value:void 0}),ot(this,fe,!0),this.type=t,this.pointerType=r,this.target=n.currentTarget,this.shiftKey=n.shiftKey,this.metaKey=n.metaKey,this.ctrlKey=n.ctrlKey,this.altKey=n.altKey}}const st=Symbol("linkClicked");function Rt(e){let{onPress:t,onPressChange:r,onPressStart:n,onPressEnd:a,onPressUp:i,isDisabled:o,isPressed:l,preventFocusOnPress:u,shouldCancelOnPointerExit:c,allowTextSelectionOnPress:b,ref:h,...v}=en(e),[g,E]=f.useState(!1),T=f.useRef({isPressed:!1,ignoreEmulatedMouseEvents:!1,ignoreClickAfterPress:!1,didFirePressStart:!1,isTriggeringEvent:!1,activePointerId:null,target:null,isOverTarget:!1,pointerType:null}),{addGlobalListener:F,removeAllGlobalListeners:j}=kt(),O=R((s,m)=>{let I=T.current;if(o||I.didFirePressStart)return;let $=!0;if(I.isTriggeringEvent=!0,n){let w=new pe("pressstart",m,s);n(w),$=w.shouldStopPropagation}return r&&r(!0),I.isTriggeringEvent=!1,I.didFirePressStart=!0,E(!0),$}),M=R((s,m,I=!0)=>{let $=T.current;if(!$.didFirePressStart)return;$.ignoreClickAfterPress=!0,$.didFirePressStart=!1,$.isTriggeringEvent=!0;let w=!0;if(a){let d=new pe("pressend",m,s);a(d),w=d.shouldStopPropagation}if(r&&r(!1),E(!1),t&&I&&!o){let d=new pe("press",m,s);t(d),w&&(w=d.shouldStopPropagation)}return $.isTriggeringEvent=!1,w}),U=R((s,m)=>{let I=T.current;if(!o){if(i){I.isTriggeringEvent=!0;let $=new pe("pressup",m,s);return i($),I.isTriggeringEvent=!1,$.shouldStopPropagation}return!0}}),G=R(s=>{let m=T.current;m.isPressed&&(m.isOverTarget&&M(A(m.target,s),m.pointerType,!1),m.isPressed=!1,m.isOverTarget=!1,m.activePointerId=null,m.pointerType=null,j(),b||de(m.target))}),ue=R(s=>{c&&G(s)}),Gt=f.useMemo(()=>{let s=T.current,m={onKeyDown($){if(Fe($.nativeEvent,$.currentTarget)&&$.currentTarget.contains($.target)){ut($.target,$.key)&&$.preventDefault();let w=!0;!s.isPressed&&!$.repeat&&(s.target=$.currentTarget,s.isPressed=!0,w=O($,"keyboard"),F(document,"keyup",I,!1)),w&&$.stopPropagation(),$.metaKey&&ae()&&s.metaKeyEvents.set($.key,$.nativeEvent)}else $.key==="Meta"&&(s.metaKeyEvents=new Map)},onKeyUp($){Fe($.nativeEvent,$.currentTarget)&&!$.repeat&&$.currentTarget.contains($.target)&&U(A(s.target,$),"keyboard")},onClick($){if(!($&&!$.currentTarget.contains($.target))&&$&&$.button===0&&!s.isTriggeringEvent&&!oe.isOpening){let w=!0;if(o&&$.preventDefault(),!s.ignoreClickAfterPress&&!s.ignoreEmulatedMouseEvents&&!s.isPressed&&(s.pointerType==="virtual"||Ke($.nativeEvent))){!o&&!u&&X($.currentTarget);let d=O($,"virtual"),p=U($,"virtual"),S=M($,"virtual");w=d&&p&&S}s.ignoreEmulatedMouseEvents=!1,s.ignoreClickAfterPress=!1,w&&$.stopPropagation()}}},I=$=>{var w;if(s.isPressed&&Fe($,s.target)){var d;ut($.target,$.key)&&$.preventDefault();let p=$.target,S=M(A(s.target,$),"keyboard",s.target.contains(p));j(),S&&$.stopPropagation(),$.key!=="Enter"&&qe(s.target)&&s.target.contains(p)&&!$[st]&&($[st]=!0,oe(s.target,$,!1)),s.isPressed=!1,(d=s.metaKeyEvents)===null||d===void 0||d.delete($.key)}else if($.key==="Meta"&&(!((w=s.metaKeyEvents)===null||w===void 0)&&w.size)){let p=s.metaKeyEvents;s.metaKeyEvents=null;for(let S of p.values())s.target.dispatchEvent(new KeyboardEvent("keyup",S))}};if(typeof PointerEvent<"u"){m.onPointerDown=p=>{if(p.button!==0||!p.currentTarget.contains(p.target))return;if(Dr(p.nativeEvent)){s.pointerType="virtual";return}Oe(p.currentTarget)&&p.preventDefault(),s.pointerType=p.pointerType;let S=!0;s.isPressed||(s.isPressed=!0,s.isOverTarget=!0,s.activePointerId=p.pointerId,s.target=p.currentTarget,!o&&!u&&X(p.currentTarget),b||it(s.target),S=O(p,s.pointerType),F(document,"pointermove",$,!1),F(document,"pointerup",w,!1),F(document,"pointercancel",d,!1)),S&&p.stopPropagation()},m.onMouseDown=p=>{p.currentTarget.contains(p.target)&&p.button===0&&(Oe(p.currentTarget)&&p.preventDefault(),p.stopPropagation())},m.onPointerUp=p=>{!p.currentTarget.contains(p.target)||s.pointerType==="virtual"||p.button===0&&_(p,p.currentTarget)&&U(p,s.pointerType||p.pointerType)};let $=p=>{p.pointerId===s.activePointerId&&(_(p,s.target)?s.isOverTarget||(s.isOverTarget=!0,O(A(s.target,p),s.pointerType)):s.isOverTarget&&(s.isOverTarget=!1,M(A(s.target,p),s.pointerType,!1),ue(p)))},w=p=>{p.pointerId===s.activePointerId&&s.isPressed&&p.button===0&&(_(p,s.target)?M(A(s.target,p),s.pointerType):s.isOverTarget&&M(A(s.target,p),s.pointerType,!1),s.isPressed=!1,s.isOverTarget=!1,s.activePointerId=null,s.pointerType=null,j(),b||de(s.target))},d=p=>{G(p)};m.onDragStart=p=>{p.currentTarget.contains(p.target)&&G(p)}}else{m.onMouseDown=d=>{if(d.button!==0||!d.currentTarget.contains(d.target))return;if(Oe(d.currentTarget)&&d.preventDefault(),s.ignoreEmulatedMouseEvents){d.stopPropagation();return}s.isPressed=!0,s.isOverTarget=!0,s.target=d.currentTarget,s.pointerType=Ke(d.nativeEvent)?"virtual":"mouse",!o&&!u&&X(d.currentTarget),O(d,s.pointerType)&&d.stopPropagation(),F(document,"mouseup",$,!1)},m.onMouseEnter=d=>{if(!d.currentTarget.contains(d.target))return;let p=!0;s.isPressed&&!s.ignoreEmulatedMouseEvents&&(s.isOverTarget=!0,p=O(d,s.pointerType)),p&&d.stopPropagation()},m.onMouseLeave=d=>{if(!d.currentTarget.contains(d.target))return;let p=!0;s.isPressed&&!s.ignoreEmulatedMouseEvents&&(s.isOverTarget=!1,p=M(d,s.pointerType,!1),ue(d)),p&&d.stopPropagation()},m.onMouseUp=d=>{d.currentTarget.contains(d.target)&&!s.ignoreEmulatedMouseEvents&&d.button===0&&U(d,s.pointerType||"mouse")};let $=d=>{if(d.button===0){if(s.isPressed=!1,j(),s.ignoreEmulatedMouseEvents){s.ignoreEmulatedMouseEvents=!1;return}_(d,s.target)?M(A(s.target,d),s.pointerType):s.isOverTarget&&M(A(s.target,d),s.pointerType,!1),s.isOverTarget=!1}};m.onTouchStart=d=>{if(!d.currentTarget.contains(d.target))return;let p=tn(d.nativeEvent);if(!p)return;s.activePointerId=p.identifier,s.ignoreEmulatedMouseEvents=!0,s.isOverTarget=!0,s.isPressed=!0,s.target=d.currentTarget,s.pointerType="touch",!o&&!u&&X(d.currentTarget),b||it(s.target),O(d,s.pointerType)&&d.stopPropagation(),F(window,"scroll",w,!0)},m.onTouchMove=d=>{if(!d.currentTarget.contains(d.target))return;if(!s.isPressed){d.stopPropagation();return}let p=lt(d.nativeEvent,s.activePointerId),S=!0;p&&_(p,d.currentTarget)?s.isOverTarget||(s.isOverTarget=!0,S=O(d,s.pointerType)):s.isOverTarget&&(s.isOverTarget=!1,S=M(d,s.pointerType,!1),ue(d)),S&&d.stopPropagation()},m.onTouchEnd=d=>{if(!d.currentTarget.contains(d.target))return;if(!s.isPressed){d.stopPropagation();return}let p=lt(d.nativeEvent,s.activePointerId),S=!0;p&&_(p,d.currentTarget)?(U(d,s.pointerType),S=M(d,s.pointerType)):s.isOverTarget&&(S=M(d,s.pointerType,!1)),S&&d.stopPropagation(),s.isPressed=!1,s.activePointerId=null,s.isOverTarget=!1,s.ignoreEmulatedMouseEvents=!0,b||de(s.target),j()},m.onTouchCancel=d=>{d.currentTarget.contains(d.target)&&(d.stopPropagation(),s.isPressed&&G(d))};let w=d=>{s.isPressed&&d.target.contains(s.target)&&G({currentTarget:s.target,shiftKey:!1,ctrlKey:!1,metaKey:!1,altKey:!1})};m.onDragStart=d=>{d.currentTarget.contains(d.target)&&G(d)}}return m},[F,o,u,j,b,G,ue,M,O,U]);return f.useEffect(()=>()=>{b||de(T.current.target)},[b]),{isPressed:l||g,pressProps:K(v,Gt)}}function qe(e){return e.tagName==="A"&&e.hasAttribute("href")}function Fe(e,t){const{key:r,code:n}=e,a=t,i=a.getAttribute("role");return(r==="Enter"||r===" "||r==="Spacebar"||n==="Space")&&!(a instanceof HTMLInputElement&&!It(a,r)||a instanceof HTMLTextAreaElement||a.isContentEditable)&&!((i==="link"||!i&&qe(a))&&r!=="Enter")}function tn(e){const{targetTouches:t}=e;return t.length>0?t[0]:null}function lt(e,t){const r=e.changedTouches;for(let n=0;nt.right||t.left>e.right||e.top>t.bottom||t.top>e.bottom)}function _(e,t){let r=t.getBoundingClientRect(),n=rn(e);return nn(r,n)}function Oe(e){return!(e instanceof HTMLElement)||!e.hasAttribute("draggable")}function ut(e,t){return e instanceof HTMLInputElement?!It(e,t):e instanceof HTMLButtonElement?e.type!=="submit"&&e.type!=="reset":!qe(e)}const an=new Set(["checkbox","radio","range","color","file","image","button","submit","reset"]);function It(e,t){return e.type==="checkbox"||e.type==="radio"?t===" ":an.has(e.type)}class on{isDefaultPrevented(){return this.nativeEvent.defaultPrevented}preventDefault(){this.defaultPrevented=!0,this.nativeEvent.preventDefault()}stopPropagation(){this.nativeEvent.stopPropagation(),this.isPropagationStopped=()=>!0}isPropagationStopped(){return!1}persist(){}constructor(t,r){this.nativeEvent=r,this.target=r.target,this.currentTarget=r.currentTarget,this.relatedTarget=r.relatedTarget,this.bubbles=r.bubbles,this.cancelable=r.cancelable,this.defaultPrevented=r.defaultPrevented,this.eventPhase=r.eventPhase,this.isTrusted=r.isTrusted,this.timeStamp=r.timeStamp,this.type=t}}function Kt(e){let t=f.useRef({isFocused:!1,observer:null});k(()=>{const n=t.current;return()=>{n.observer&&(n.observer.disconnect(),n.observer=null)}},[]);let r=R(n=>{e==null||e(n)});return f.useCallback(n=>{if(n.target instanceof HTMLButtonElement||n.target instanceof HTMLInputElement||n.target instanceof HTMLTextAreaElement||n.target instanceof HTMLSelectElement){t.current.isFocused=!0;let a=n.target,i=o=>{t.current.isFocused=!1,a.disabled&&r(new on("blur",o)),t.current.observer&&(t.current.observer.disconnect(),t.current.observer=null)};a.addEventListener("focusout",i,{once:!0}),t.current.observer=new MutationObserver(()=>{if(t.current.isFocused&&a.disabled){t.current.observer.disconnect();let o=a===document.activeElement?null:document.activeElement;a.dispatchEvent(new FocusEvent("blur",{relatedTarget:o})),a.dispatchEvent(new FocusEvent("focusout",{bubbles:!0,relatedTarget:o}))}}),t.current.observer.observe(a,{attributes:!0,attributeFilter:["disabled"]})}},[r])}function sn(e){let{isDisabled:t,onFocus:r,onBlur:n,onFocusChange:a}=e;const i=f.useCallback(u=>{if(u.target===u.currentTarget)return n&&n(u),a&&a(!1),!0},[n,a]),o=Kt(i),l=f.useCallback(u=>{u.target===u.currentTarget&&document.activeElement===u.target&&(r&&r(u),a&&a(!0),o(u))},[a,r,o]);return{focusProps:{onFocus:!t&&(r||a||n)?l:void 0,onBlur:!t&&(n||a)?i:void 0}}}let Z=null,ln=new Set,ct=!1,J=!1,je=!1;function Se(e,t){for(let r of ln)r(e,t)}function un(e){return!(e.metaKey||!ae()&&e.altKey||e.ctrlKey||e.key==="Control"||e.key==="Shift"||e.key==="Meta")}function dt(e){J=!0,un(e)&&(Z="keyboard",Se("keyboard",e))}function ee(e){Z="pointer",(e.type==="mousedown"||e.type==="pointerdown")&&(J=!0,Se("pointer",e))}function cn(e){Ke(e)&&(J=!0,Z="virtual")}function dn(e){e.target===window||e.target===document||(!J&&!je&&(Z="virtual",Se("virtual",e)),J=!1,je=!1)}function fn(){J=!1,je=!0}function ft(){if(typeof window>"u"||ct)return;let e=HTMLElement.prototype.focus;HTMLElement.prototype.focus=function(){J=!0,e.apply(this,arguments)},document.addEventListener("keydown",dt,!0),document.addEventListener("keyup",dt,!0),document.addEventListener("click",cn,!0),window.addEventListener("focus",dn,!0),window.addEventListener("blur",fn,!1),typeof PointerEvent<"u"?(document.addEventListener("pointerdown",ee,!0),document.addEventListener("pointermove",ee,!0),document.addEventListener("pointerup",ee,!0)):(document.addEventListener("mousedown",ee,!0),document.addEventListener("mousemove",ee,!0),document.addEventListener("mouseup",ee,!0)),ct=!0}typeof document<"u"&&(document.readyState!=="loading"?ft():document.addEventListener("DOMContentLoaded",ft));function _n(){return Z!=="pointer"}function pn(){return Z}function ea(e){Z=e,Se(e,null)}function ta(e){let{isDisabled:t,onBlurWithin:r,onFocusWithin:n,onFocusWithinChange:a}=e,i=f.useRef({isFocusWithin:!1}),o=f.useCallback(c=>{i.current.isFocusWithin&&!c.currentTarget.contains(c.relatedTarget)&&(i.current.isFocusWithin=!1,r&&r(c),a&&a(!1))},[r,a,i]),l=Kt(o),u=f.useCallback(c=>{!i.current.isFocusWithin&&document.activeElement===c.target&&(n&&n(c),a&&a(!0),i.current.isFocusWithin=!0,l(c))},[n,a,l]);return t?{focusWithinProps:{onFocus:null,onBlur:null}}:{focusWithinProps:{onFocus:u,onBlur:o}}}let Ee=!1,De=0;function Ue(){Ee=!0,setTimeout(()=>{Ee=!1},50)}function pt(e){e.pointerType==="touch"&&Ue()}function bn(){if(!(typeof document>"u"))return typeof PointerEvent<"u"?document.addEventListener("pointerup",pt):document.addEventListener("touchend",Ue),De++,()=>{De--,!(De>0)&&(typeof PointerEvent<"u"?document.removeEventListener("pointerup",pt):document.removeEventListener("touchend",Ue))}}function ra(e){let{onHoverStart:t,onHoverChange:r,onHoverEnd:n,isDisabled:a}=e,[i,o]=f.useState(!1),l=f.useRef({isHovered:!1,ignoreEmulatedMouseEvents:!1,pointerType:"",target:null}).current;f.useEffect(bn,[]);let{hoverProps:u,triggerHoverEnd:c}=f.useMemo(()=>{let b=(g,E)=>{if(l.pointerType=E,a||E==="touch"||l.isHovered||!g.currentTarget.contains(g.target))return;l.isHovered=!0;let T=g.currentTarget;l.target=T,t&&t({type:"hoverstart",target:T,pointerType:E}),r&&r(!0),o(!0)},h=(g,E)=>{if(l.pointerType="",l.target=null,E==="touch"||!l.isHovered)return;l.isHovered=!1;let T=g.currentTarget;n&&n({type:"hoverend",target:T,pointerType:E}),r&&r(!1),o(!1)},v={};return typeof PointerEvent<"u"?(v.onPointerEnter=g=>{Ee&&g.pointerType==="mouse"||b(g,g.pointerType)},v.onPointerLeave=g=>{!a&&g.currentTarget.contains(g.target)&&h(g,g.pointerType)}):(v.onTouchStart=()=>{l.ignoreEmulatedMouseEvents=!0},v.onMouseEnter=g=>{!l.ignoreEmulatedMouseEvents&&!Ee&&b(g,"mouse"),l.ignoreEmulatedMouseEvents=!1},v.onMouseLeave=g=>{!a&&g.currentTarget.contains(g.target)&&h(g,"mouse")}),{hoverProps:v,triggerHoverEnd:h}},[t,r,n,a,l]);return f.useEffect(()=>{a&&c({currentTarget:l.target},l.pointerType)},[a]),{hoverProps:u,isHovered:i}}function na(e){let{ref:t,onInteractOutside:r,isDisabled:n,onInteractOutsideStart:a}=e,i=f.useRef({isPointerDown:!1,ignoreEmulatedMouseEvents:!1}),o=R(u=>{r&&be(u,t)&&(a&&a(u),i.current.isPointerDown=!0)}),l=R(u=>{r&&r(u)});f.useEffect(()=>{let u=i.current;if(!n)if(typeof PointerEvent<"u"){let c=b=>{u.isPointerDown&&be(b,t)&&l(b),u.isPointerDown=!1};return document.addEventListener("pointerdown",o,!0),document.addEventListener("pointerup",c,!0),()=>{document.removeEventListener("pointerdown",o,!0),document.removeEventListener("pointerup",c,!0)}}else{let c=h=>{u.ignoreEmulatedMouseEvents?u.ignoreEmulatedMouseEvents=!1:u.isPointerDown&&be(h,t)&&l(h),u.isPointerDown=!1},b=h=>{u.ignoreEmulatedMouseEvents=!0,u.isPointerDown&&be(h,t)&&l(h),u.isPointerDown=!1};return document.addEventListener("mousedown",o,!0),document.addEventListener("mouseup",c,!0),document.addEventListener("touchstart",o,!0),document.addEventListener("touchend",b,!0),()=>{document.removeEventListener("mousedown",o,!0),document.removeEventListener("mouseup",c,!0),document.removeEventListener("touchstart",o,!0),document.removeEventListener("touchend",b,!0)}}},[t,n,o,l])}function be(e,t){if(e.button>0)return!1;if(e.target){const r=e.target.ownerDocument;if(!r||!r.documentElement.contains(e.target)||e.target.closest("[data-react-aria-top-layer]"))return!1}return t.current&&!t.current.contains(e.target)}function bt(e){if(!e)return;let t=!0;return r=>{let n={...r,preventDefault(){r.preventDefault()},isDefaultPrevented(){return r.isDefaultPrevented()},stopPropagation(){console.error("stopPropagation is now the default behavior for events in React Spectrum. You can use continuePropagation() to revert this behavior.")},continuePropagation(){t=!1}};e(n),t&&r.stopPropagation()}}function vn(e){return{keyboardProps:e.isDisabled?{}:{onKeyDown:bt(e.onKeyDown),onKeyUp:bt(e.onKeyUp)}}}const $n=500;function aa(e){let{isDisabled:t,onLongPressStart:r,onLongPressEnd:n,onLongPress:a,threshold:i=$n,accessibilityDescription:o}=e;const l=f.useRef(null);let{addGlobalListener:u,removeGlobalListener:c}=kt(),{pressProps:b}=Rt({isDisabled:t,onPressStart(v){if(v.continuePropagation(),(v.pointerType==="mouse"||v.pointerType==="touch")&&(r&&r({...v,type:"longpressstart"}),l.current=setTimeout(()=>{v.target.dispatchEvent(new PointerEvent("pointercancel",{bubbles:!0})),a&&a({...v,type:"longpress"}),l.current=null},i),v.pointerType==="touch")){let g=E=>{E.preventDefault()};u(v.target,"contextmenu",g,{once:!0}),u(window,"pointerup",()=>{setTimeout(()=>{c(v.target,"contextmenu",g)},30)},{once:!0})}},onPressEnd(v){l.current&&clearTimeout(l.current),n&&(v.pointerType==="mouse"||v.pointerType==="touch")&&n({...v,type:"longpressend"})}}),h=Fr(a&&!t?o:null);return{longPressProps:K(b,h)}}function At(e){if(pn()==="virtual"){let t=document.activeElement;Ct(()=>{document.activeElement===t&&document.contains(e)&&X(e)})}else X(e)}function gn(e){if(!(e instanceof HTMLElement)&&!(e instanceof SVGElement))return!1;let{display:t,visibility:r}=e.style,n=t!=="none"&&r!=="hidden"&&r!=="collapse";if(n){const{getComputedStyle:a}=e.ownerDocument.defaultView;let{display:i,visibility:o}=a(e);n=i!=="none"&&o!=="hidden"&&o!=="collapse"}return n}function hn(e,t){return!e.hasAttribute("hidden")&&(e.nodeName==="DETAILS"&&t&&t.nodeName!=="SUMMARY"?e.hasAttribute("open"):!0)}function Ht(e,t){return e.nodeName!=="#comment"&&gn(e)&&hn(e,t)&&(!e.parentElement||Ht(e.parentElement,e))}const vt=C.createContext(null);let P=null;function oa(e){let{children:t,contain:r,restoreFocus:n,autoFocus:a}=e,i=f.useRef(),o=f.useRef(),l=f.useRef([]),{parentNode:u}=f.useContext(vt)||{},c=f.useMemo(()=>new Be({scopeRef:l}),[l]);k(()=>{let v=u||x.root;if(x.getTreeNode(v.scopeRef)&&P&&!Te(P,v.scopeRef)){let g=x.getTreeNode(P);g&&(v=g)}v.addChild(c),x.addNode(c)},[c,u]),k(()=>{let v=x.getTreeNode(l);v.contain=r},[r]),k(()=>{let v=i.current.nextSibling,g=[];for(;v&&v!==o.current;)g.push(v),v=v.nextSibling;l.current=g},[t]),wn(l,n,r),Pn(l,r),Sn(l,n,r),Tn(l,a),f.useEffect(()=>{if(l){let v=document.activeElement,g=null;if(L(v,l.current)){for(let E of x.traverse())L(v,E.scopeRef.current)&&(g=E);g===x.getTreeNode(l)&&(P=g.scopeRef)}return()=>{let E=x.getTreeNode(l).parent.scopeRef;(l===P||Te(l,P))&&(!E||x.getTreeNode(E))&&(P=E),x.removeTreeNode(l)}}},[l]);let b=f.useMemo(()=>mn(l),[]),h=f.useMemo(()=>({focusManager:b,parentNode:c}),[c,b]);return C.createElement(vt.Provider,{value:h},C.createElement("span",{"data-focus-scope-start":!0,hidden:!0,ref:i}),t,C.createElement("span",{"data-focus-scope-end":!0,hidden:!0,ref:o}))}function mn(e){return{focusNext(t={}){let r=e.current,{from:n,tabbable:a,wrap:i,accept:o}=t,l=n||document.activeElement,u=r[0].previousElementSibling,c=z(Y(r),{tabbable:a,accept:o},r);c.currentNode=L(l,r)?l:u;let b=c.nextNode();return!b&&i&&(c.currentNode=u,b=c.nextNode()),b&&W(b,!0),b},focusPrevious(t={}){let r=e.current,{from:n,tabbable:a,wrap:i,accept:o}=t,l=n||document.activeElement,u=r[r.length-1].nextElementSibling,c=z(Y(r),{tabbable:a,accept:o},r);c.currentNode=L(l,r)?l:u;let b=c.previousNode();return!b&&i&&(c.currentNode=u,b=c.previousNode()),b&&W(b,!0),b},focusFirst(t={}){let r=e.current,{tabbable:n,accept:a}=t,i=z(Y(r),{tabbable:n,accept:a},r);i.currentNode=r[0].previousElementSibling;let o=i.nextNode();return o&&W(o,!0),o},focusLast(t={}){let r=e.current,{tabbable:n,accept:a}=t,i=z(Y(r),{tabbable:n,accept:a},r);i.currentNode=r[r.length-1].nextElementSibling;let o=i.previousNode();return o&&W(o,!0),o}}}const Xe=["input:not([disabled]):not([type=hidden])","select:not([disabled])","textarea:not([disabled])","button:not([disabled])","a[href]","area[href]","summary","iframe","object","embed","audio[controls]","video[controls]","[contenteditable]"],yn=Xe.join(":not([hidden]),")+",[tabindex]:not([disabled]):not([hidden])";Xe.push('[tabindex]:not([tabindex="-1"]):not([disabled])');const En=Xe.join(':not([hidden]):not([tabindex="-1"]),');function Y(e){return e[0].parentElement}function se(e){let t=x.getTreeNode(P);for(;t&&t.scopeRef!==e;){if(t.contain)return!1;t=t.parent}return!0}function Pn(e,t){let r=f.useRef(),n=f.useRef(null);k(()=>{let a=e.current;if(!t){n.current&&(cancelAnimationFrame(n.current),n.current=null);return}let i=u=>{if(u.key!=="Tab"||u.altKey||u.ctrlKey||u.metaKey||!se(e))return;let c=document.activeElement,b=e.current;if(!L(c,b))return;let h=z(Y(b),{tabbable:!0},b);h.currentNode=c;let v=u.shiftKey?h.previousNode():h.nextNode();v||(h.currentNode=u.shiftKey?b[b.length-1].nextElementSibling:b[0].previousElementSibling,v=u.shiftKey?h.previousNode():h.nextNode()),u.preventDefault(),v&&W(v,!0)},o=u=>{(!P||Te(P,e))&&L(u.target,e.current)?(P=e,r.current=u.target):se(e)&&!Pe(u.target,e)?r.current?r.current.focus():P&&we(P.current):se(e)&&(r.current=u.target)},l=u=>{n.current&&cancelAnimationFrame(n.current),n.current=requestAnimationFrame(()=>{se(e)&&!Pe(document.activeElement,e)&&(P=e,document.body.contains(u.target)?(r.current=u.target,r.current.focus()):P&&we(P.current))})};return document.addEventListener("keydown",i,!1),document.addEventListener("focusin",o,!1),a.forEach(u=>u.addEventListener("focusin",o,!1)),a.forEach(u=>u.addEventListener("focusout",l,!1)),()=>{document.removeEventListener("keydown",i,!1),document.removeEventListener("focusin",o,!1),a.forEach(u=>u.removeEventListener("focusin",o,!1)),a.forEach(u=>u.removeEventListener("focusout",l,!1))}},[e,t]),k(()=>()=>{n.current&&cancelAnimationFrame(n.current)},[n])}function Wt(e){return Pe(e)}function L(e,t){return t.some(r=>r.contains(e))}function Pe(e,t=null){if(e instanceof Element&&e.closest("[data-react-aria-top-layer]"))return!0;for(let{scopeRef:r}of x.traverse(x.getTreeNode(t)))if(L(e,r.current))return!0;return!1}function ia(e){return Pe(e,P)}function Te(e,t){var r;let n=(r=x.getTreeNode(t))===null||r===void 0?void 0:r.parent;for(;n;){if(n.scopeRef===e)return!0;n=n.parent}return!1}function W(e,t=!1){if(e!=null&&!t)try{At(e)}catch{}else if(e!=null)try{e.focus()}catch{}}function we(e,t=!0){let r=e[0].previousElementSibling,n=z(Y(e),{tabbable:t},e);n.currentNode=r;let a=n.nextNode();t&&!a&&(n=z(Y(e),{tabbable:!1},e),n.currentNode=r,a=n.nextNode()),W(a)}function Tn(e,t){const r=C.useRef(t);f.useEffect(()=>{r.current&&(P=e,L(document.activeElement,P.current)||we(e.current)),r.current=!1},[e])}function wn(e,t,r){k(()=>{if(t||r)return;let n=e.current,a=i=>{let o=i.target;L(o,e.current)?P=e:Wt(o)||(P=null)};return document.addEventListener("focusin",a,!1),n.forEach(i=>i.addEventListener("focusin",a,!1)),()=>{document.removeEventListener("focusin",a,!1),n.forEach(i=>i.removeEventListener("focusin",a,!1))}},[e,t,r])}function xn(e){let t=x.getTreeNode(P);for(;t&&t.scopeRef!==e;){if(t.nodeToRestore)return!1;t=t.parent}return(t==null?void 0:t.scopeRef)===e}function Sn(e,t,r){const n=f.useRef(typeof document<"u"?document.activeElement:null);k(()=>{let a=e.current;if(!t||r)return;let i=()=>{(!P||Te(P,e))&&L(document.activeElement,e.current)&&(P=e)};return document.addEventListener("focusin",i,!1),a.forEach(o=>o.addEventListener("focusin",i,!1)),()=>{document.removeEventListener("focusin",i,!1),a.forEach(o=>o.removeEventListener("focusin",i,!1))}},[e,r]),k(()=>{if(!t)return;let a=i=>{if(i.key!=="Tab"||i.altKey||i.ctrlKey||i.metaKey||!se(e))return;let o=document.activeElement;if(!L(o,e.current))return;let l=x.getTreeNode(e).nodeToRestore,u=z(document.body,{tabbable:!0});u.currentNode=o;let c=i.shiftKey?u.previousNode():u.nextNode();if((!document.body.contains(l)||l===document.body)&&(l=null,x.getTreeNode(e).nodeToRestore=null),(!c||!L(c,e.current))&&l){u.currentNode=l;do c=i.shiftKey?u.previousNode():u.nextNode();while(L(c,e.current));i.preventDefault(),i.stopPropagation(),c?W(c,!0):Wt(l)?W(l,!0):o.blur()}};return r||document.addEventListener("keydown",a,!0),()=>{r||document.removeEventListener("keydown",a,!0)}},[e,t,r]),k(()=>{if(t)return x.getTreeNode(e).nodeToRestore=n.current,()=>{let a=x.getTreeNode(e).nodeToRestore;if(t&&a&&(L(document.activeElement,e.current)||document.activeElement===document.body&&xn(e))){let i=x.clone();requestAnimationFrame(()=>{if(document.activeElement===document.body){let o=i.getTreeNode(e);for(;o;){if(o.nodeToRestore&&document.body.contains(o.nodeToRestore)){W(o.nodeToRestore);return}o=o.parent}for(o=i.getTreeNode(e);o;){if(o.scopeRef&&x.getTreeNode(o.scopeRef)){we(o.scopeRef.current,!0);return}o=o.parent}}})}}},[e,t])}function z(e,t,r){let n=t!=null&&t.tabbable?En:yn,a=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode(i){var o;return!(t==null||(o=t.from)===null||o===void 0)&&o.contains(i)?NodeFilter.FILTER_REJECT:i.matches(n)&&Ht(i)&&(!r||L(i,r))&&(!(t!=null&&t.accept)||t.accept(i))?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});return t!=null&&t.from&&(a.currentNode=t.from),a}class Ye{get size(){return this.fastMap.size}getTreeNode(t){return this.fastMap.get(t)}addTreeNode(t,r,n){let a=this.fastMap.get(r??null),i=new Be({scopeRef:t});a.addChild(i),i.parent=a,this.fastMap.set(t,i),n&&(i.nodeToRestore=n)}addNode(t){this.fastMap.set(t.scopeRef,t)}removeTreeNode(t){if(t===null)return;let r=this.fastMap.get(t),n=r.parent;for(let i of this.traverse())i!==r&&r.nodeToRestore&&i.nodeToRestore&&r.scopeRef.current&&L(i.nodeToRestore,r.scopeRef.current)&&(i.nodeToRestore=r.nodeToRestore);let a=r.children;n.removeChild(r),a.size>0&&a.forEach(i=>n.addChild(i)),this.fastMap.delete(r.scopeRef)}*traverse(t=this.root){if(t.scopeRef!=null&&(yield t),t.children.size>0)for(let r of t.children)yield*this.traverse(r)}clone(){let t=new Ye;for(let r of this.traverse())t.addTreeNode(r.scopeRef,r.parent.scopeRef,r.nodeToRestore);return t}constructor(){this.fastMap=new Map,this.root=new Be({scopeRef:null}),this.fastMap.set(null,this.root)}}class Be{addChild(t){this.children.add(t),t.parent=this}removeChild(t){this.children.delete(t),t.parent=void 0}constructor(t){this.children=new Set,this.contain=!1,this.scopeRef=t.scopeRef}}let x=new Ye,Ln=C.createContext(null);function Cn(e){let t=f.useContext(Ln)||{};Mt(t,e);let{ref:r,...n}=t;return n}function kn(e,t){let{focusProps:r}=sn(e),{keyboardProps:n}=vn(e),a=K(r,n),i=Cn(t),o=e.isDisabled?{}:i,l=f.useRef(e.autoFocus);return f.useEffect(()=>{l.current&&t.current&&At(t.current),l.current=!1},[t]),{focusableProps:K({...a,tabIndex:e.excludeFromTabOrder&&!e.isDisabled?-1:void 0},o)}}function jt(e){let{id:t,label:r,"aria-labelledby":n,"aria-label":a,labelElementType:i="label"}=e;t=me(t);let o=me(),l={};r?(n=n?`${o} ${n}`:o,l={id:o,htmlFor:i==="label"?t:void 0}):!n&&!a&&console.warn("If you do not provide a visible label, you must specify an aria-label or aria-labelledby attribute for accessibility");let u=kr({id:t,"aria-label":a,"aria-labelledby":n});return{labelProps:l,fieldProps:u}}function sa(e){let{description:t,errorMessage:r,isInvalid:n,validationState:a}=e,{labelProps:i,fieldProps:o}=jt(e),l=Je([!!t,!!r,n,a]),u=Je([!!t,!!r,n,a]);return o=K(o,{"aria-describedby":[l,u,e["aria-describedby"]].filter(Boolean).join(" ")||void 0}),{labelProps:i,fieldProps:o,descriptionProps:{id:l},errorMessageProps:{id:u}}}var Ut={exports:{}},Mn="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",Nn=Mn,Fn=Nn;function Bt(){}function zt(){}zt.resetWarningCache=Bt;var On=function(){function e(n,a,i,o,l,u){if(u!==Fn){var c=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw c.name="Invariant Violation",c}}e.isRequired=e;function t(){return e}var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:zt,resetWarningCache:Bt};return r.PropTypes=r,r};Ut.exports=On();var Dn=Ut.exports;const la=Jt(Dn);function Rn(e,t){let{elementType:r="button",isDisabled:n,onPress:a,onPressStart:i,onPressEnd:o,onPressChange:l,preventFocusOnPress:u,allowFocusWhenDisabled:c,onClick:b,href:h,target:v,rel:g,type:E="button"}=e,T;r==="button"?T={type:E,disabled:n}:T={role:"button",tabIndex:n?void 0:0,href:r==="a"&&n?void 0:h,target:r==="a"?v:void 0,type:r==="input"?E:void 0,disabled:r==="input"?n:void 0,"aria-disabled":!n||r==="input"?void 0:n,rel:r==="a"?g:void 0};let{pressProps:F,isPressed:j}=Rt({onPressStart:i,onPressEnd:o,onPressChange:l,onPress:a,isDisabled:n,preventFocusOnPress:u,ref:t}),{focusableProps:O}=kn(e,t);c&&(O.tabIndex=n?-1:O.tabIndex);let M=K(O,F,xt(e,{labelable:!0}));return{isPressed:j,buttonProps:K(T,M,{"aria-haspopup":e["aria-haspopup"],"aria-expanded":e["aria-expanded"],"aria-controls":e["aria-controls"],"aria-pressed":e["aria-pressed"],onClick:U=>{b&&(b(U),console.warn("onClick is deprecated, please use onPress"))}})}}const $t=e=>typeof e=="boolean"?"".concat(e):e===0?"0":e,gt=Zt,In=(e,t)=>r=>{var n;if((t==null?void 0:t.variants)==null)return gt(e,r==null?void 0:r.class,r==null?void 0:r.className);const{variants:a,defaultVariants:i}=t,o=Object.keys(a).map(c=>{const b=r==null?void 0:r[c],h=i==null?void 0:i[c];if(b===null)return null;const v=$t(b)||$t(h);return a[c][v]}),l=r&&Object.entries(r).reduce((c,b)=>{let[h,v]=b;return v===void 0||(c[h]=v),c},{}),u=t==null||(n=t.compoundVariants)===null||n===void 0?void 0:n.reduce((c,b)=>{let{class:h,className:v,...g}=b;return Object.entries(g).every(E=>{let[T,F]=E;return Array.isArray(F)?F.includes({...i,...l}[T]):{...i,...l}[T]===F})?[...c,h,v]:c},[]);return gt(e,o,u,r==null?void 0:r.class,r==null?void 0:r.className)},Kn=In("rounded-md disabled:opacity-60 disabled:cursor-not-allowed transition-colors cursor-pointer",{variants:{variant:{default:"bg-gray-300 hover:bg-gray-400 text-black dark:hover:brightness-150 dark:bg-secondary dark:text-white border border-gray-400 dark:border-quinary",cancel:"bg-transparent hover:bg-transparent text-gray-800 dark:text-gray-200",danger:"bg-red-500 hover:bg-red-600 border border-red-800 text-black",success:"bg-emerald-500 hover:bg-emerald-600 border border-emerald-800 text-black",transparent:"bg-transparent text-black dark:text-white",link:"bg-transparent hover:bg-transparent text-gray-800 dark:text-gray-200 px-0 p-1 underline",blue:"bg-blue-500 dark:bg-blue-500 hover:bg-blue-600 dark:hover:bg-blue-600 dark:border dark:border-blue-800 text-black",amber:"text-black bg-orange-500 dark:bg-orange-500 border border-amber-800 hover:bg-orange-600 dark:hover:bg-orange-600"},size:{xs:"p-0.5 px-2",sm:"p-1 px-4",md:"p-1.5 px-4",lg:"p-2 px-6"}},defaultVariants:{variant:"default",size:"sm"}}),An=f.forwardRef(({variant:e,size:t,className:r,isDisabled:n,disabled:a,onPress:i,onPressChange:o,onPressStart:l,onPressEnd:u,onPressUp:c,excludeFromTabOrder:b,...h},v)=>{const{buttonProps:g}=Rn({onPress:i,onPressChange:o,onPressStart:l,onPressEnd:u,onPressUp:c,isDisabled:n??a,excludeFromTabOrder:b,...h},v);return yt.jsx("button",{className:Et(Kn({variant:e,size:t,className:r})),...K(h,g),ref:v})});An.displayName="Button";function Hn(e){let{value:t=0,minValue:r=0,maxValue:n=100,valueLabel:a,isIndeterminate:i,formatOptions:o={style:"percent"}}=e,l=xt(e,{labelable:!0}),{labelProps:u,fieldProps:c}=jt({...e,labelElementType:"span"});t=tr(t,r,n);let b=(t-r)/(n-r),h=Jr(o);if(!i&&!a){let v=o.style==="percent"?b:t;a=h.format(v)}return{progressBarProps:K(l,{...c,"aria-valuenow":i?void 0:t,"aria-valuemin":r,"aria-valuemax":n,"aria-valuetext":i?void 0:a,role:"progressbar"}),labelProps:u}}function ua(e){const{progressBarProps:t}=Hn({label:"loading..."});return yt.jsx("div",{...t,style:{borderTopColor:"transparent"},className:Et("w-5 h-5 border-2 border-gray-800 dark:border-gray-400 border-solid rounded-full animate-spin",e.className)})}async function ca(e){var t;try{const r=(t=e.headers)!=null&&t.userApiToken?{"snaily-cad-user-api-token":e.headers.userApiToken}:void 0,n=await fetch(`${e.url}${e.path}`,{method:e.method,body:e.data?JSON.stringify(e.data):void 0,headers:{"is-from-dispatch":"true","content-type":"application/json",...r}});if(!n.ok){const o=await n.text().catch(()=>"Unknown error");return{errorMessage:o,error:new Error(o),data:null}}const a=await n.json();return a.status>400&&a.status<600?(console.log(JSON.stringify(a,null,2)),{errorMessage:a.message,error:new Error(a),data:null}):{data:a}}catch(r){const n=r instanceof Error?r:new Error("Unknown error");return console.error("SnailyCAD API error:",n.message,JSON.stringify(r,null,2)),{data:null,error:n,errorMessage:n.message}}}export{kn as $,aa as A,An as B,oe as C,_e as D,pn as E,Gn as F,ae as G,z as H,X as I,jt as J,Tr as K,ua as L,ra as M,_n as N,Kn as O,la as P,zn as Q,ea as R,Rn as S,In as T,sa as a,xt as b,Jn as c,K as d,ta as e,Ve as f,k as g,ca as h,qn as i,na as j,ia as k,Tt as l,Zn as m,kr as n,me as o,tr as p,Je as q,At as r,oa as s,Qn as t,Bn as u,Vn as v,Xn as w,Or as x,Yn as y,Rt as z}; diff --git a/resources/[sna]/sna-sync/nui/index-093e64e9.css b/resources/[sna]/sna-sync/nui/index-093e64e9.css new file mode 100644 index 0000000..29a65e8 --- /dev/null +++ b/resources/[sna]/sna-sync/nui/index-093e64e9.css @@ -0,0 +1 @@ +*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-5{top:1.25rem;right:1.25rem;bottom:1.25rem;left:1.25rem}.bottom-0{bottom:0}.right-0{right:0}.right-1{right:.25rem}.right-11{right:2.75rem}.right-12{right:3rem}.right-20{right:5rem}.right-\[82px\]{right:82px}.top-0{top:0}.top-\[32px\]{top:32px}.top-\[56px\]{top:56px}.top-full{top:100%}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-50{z-index:50}.z-\[999\]{z-index:999}.m-0{margin:0}.-mx-\[1\.5px\]{margin-left:-1.5px;margin-right:-1.5px}.-mx-\[1px\]{margin-left:-1px;margin-right:-1px}.mx-1{margin-left:.25rem;margin-right:.25rem}.my-0{margin-top:0;margin-bottom:0}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.-ml-\[1\.5px\]{margin-left:-1.5px}.-ml-\[1px\]{margin-left:-1px}.-mr-\[1px\]{margin-right:-1px}.-mr-\[2px\]{margin-right:-2px}.-mt-1{margin-top:-.25rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.ml-0{margin-left:0}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-3{margin-left:.75rem}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1{height:.25rem}.h-10{height:2.5rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-\[2px\]{height:2px}.h-\[306px\]{height:306px}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.max-h-72{max-height:18rem}.max-h-\[25rem\]{max-height:25rem}.min-h-\[39px\]{min-height:39px}.min-h-\[3em\]{min-height:3em}.w-0{width:0px}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-40{width:10rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-\[48em\]{width:48em}.w-\[56em\]{width:56em}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-screen{width:100vw}.min-w-\[15rem\]{min-width:15rem}.min-w-\[28rem\]{min-width:28rem}.min-w-\[44px\]{min-width:44px}.min-w-fit{min-width:-moz-fit-content;min-width:fit-content}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.flex-1{flex:1 1 0%}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes enter{0%{transform:translateY(-4px);opacity:0}to{transform:translateY(0);opacity:1}}.animate-enter{animation:enter .2s ease-out}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.\!cursor-not-allowed{cursor:not-allowed!important}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-y{resize:vertical}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-y-2{row-gap:.5rem}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.\!rounded-none{border-radius:0!important}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.\!rounded-r-none{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.border{border-width:1px}.border-2{border-width:2px}.border-b-2{border-bottom-width:2px}.border-r-0{border-right-width:0px}.border-solid{border-style:solid}.\!border-gray-500{--tw-border-opacity: 1 !important;border-color:rgb(107 114 128 / var(--tw-border-opacity))!important}.\!border-gray-800{--tw-border-opacity: 1 !important;border-color:rgb(31 41 55 / var(--tw-border-opacity))!important}.\!border-red-500{--tw-border-opacity: 1 !important;border-color:rgb(239 68 68 / var(--tw-border-opacity))!important}.border-amber-800{--tw-border-opacity: 1;border-color:rgb(146 64 14 / var(--tw-border-opacity))}.border-emerald-800{--tw-border-opacity: 1;border-color:rgb(6 95 70 / var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.border-gray-400{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity))}.border-gray-800{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity))}.border-green-500\/80{border-color:#22c55ecc}.border-orange-500\/80{border-color:#f97316cc}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity))}.border-red-500\/80{border-color:#ef4444cc}.border-red-800{--tw-border-opacity: 1;border-color:rgb(153 27 27 / var(--tw-border-opacity))}.border-secondary{--tw-border-opacity: 1;border-color:rgb(53 52 60 / var(--tw-border-opacity))}.border-transparent{border-color:transparent}.\!bg-white{--tw-bg-opacity: 1 !important;background-color:rgb(255 255 255 / var(--tw-bg-opacity))!important}.bg-amber-900{--tw-bg-opacity: 1;background-color:rgb(120 53 15 / var(--tw-bg-opacity))}.bg-blue-400{--tw-bg-opacity: 1;background-color:rgb(96 165 250 / var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.bg-emerald-500{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity))}.bg-green-400{--tw-bg-opacity: 1;background-color:rgb(74 222 128 / var(--tw-bg-opacity))}.bg-neutral-600{--tw-bg-opacity: 1;background-color:rgb(82 82 82 / var(--tw-bg-opacity))}.bg-orange-400{--tw-bg-opacity: 1;background-color:rgb(251 146 60 / var(--tw-bg-opacity))}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity))}.bg-primary{--tw-bg-opacity: 1;background-color:rgb(22 21 26 / var(--tw-bg-opacity))}.bg-red-300{--tw-bg-opacity: 1;background-color:rgb(252 165 165 / var(--tw-bg-opacity))}.bg-red-400{--tw-bg-opacity: 1;background-color:rgb(248 113 113 / var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity))}.bg-secondary{--tw-bg-opacity: 1;background-color:rgb(53 52 60 / var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.fill-blue-400{fill:#60a5fa}.fill-gray-200{fill:#e5e7eb}.fill-secondary{fill:#35343c}.fill-white{fill:#fff}.stroke-none{stroke:none}.stroke-secondary{stroke:#35343c}.stroke-2{stroke-width:2}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-8{padding:2rem}.\!px-0{padding-left:0!important;padding-right:0!important}.\!px-0\.5{padding-left:.125rem!important;padding-right:.125rem!important}.\!px-1{padding-left:.25rem!important;padding-right:.25rem!important}.\!px-1\.5{padding-left:.375rem!important;padding-right:.375rem!important}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.pb-0{padding-bottom:0}.pb-2{padding-bottom:.5rem}.pb-4{padding-bottom:1rem}.pb-5{padding-bottom:1.25rem}.pl-0{padding-left:0}.pr-1{padding-right:.25rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[1\.05em\]{font-size:1.05em}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity))}.text-neutral-200{--tw-text-opacity: 1;color:rgb(229 229 229 / var(--tw-text-opacity))}.text-neutral-300{--tw-text-opacity: 1;color:rgb(212 212 212 / var(--tw-text-opacity))}.text-neutral-500{--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity))}.text-neutral-600{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity))}.text-neutral-700{--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity))}.text-neutral-800{--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.no-underline{text-decoration-line:none}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.outline-2{outline-width:2px}.outline-offset-\[5px\]{outline-offset:5px}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-black{--tw-ring-opacity: 1;--tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity))}.ring-blue-600{--tw-ring-opacity: 1;--tw-ring-color: rgb(37 99 235 / var(--tw-ring-opacity))}.ring-opacity-5{--tw-ring-opacity: .05}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.\!transition-all{transition-property:all!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important;transition-duration:.15s!important}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}:root{font-size:calc(.35*(1.5vh + 1.1vw))}html,body{background-color:transparent;font-family:Assistant,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}li{list-style-type:none}.placeholder\:opacity-50::-moz-placeholder{opacity:.5}.placeholder\:opacity-50::placeholder{opacity:.5}.first\:rounded-tl-md:first-child{border-top-left-radius:.375rem}.last\:rounded-tr-md:last-child{border-top-right-radius:.375rem}.hover\:rounded-md:hover{border-radius:.375rem}.hover\:\!bg-gray-400:hover{--tw-bg-opacity: 1 !important;background-color:rgb(156 163 175 / var(--tw-bg-opacity))!important}.hover\:bg-blue-400:hover{--tw-bg-opacity: 1;background-color:rgb(96 165 250 / var(--tw-bg-opacity))}.hover\:bg-blue-600:hover{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.hover\:bg-emerald-600:hover{--tw-bg-opacity: 1;background-color:rgb(5 150 105 / var(--tw-bg-opacity))}.hover\:bg-gray-300:hover{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity))}.hover\:bg-gray-400:hover{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity))}.hover\:bg-orange-600:hover{--tw-bg-opacity: 1;background-color:rgb(234 88 12 / var(--tw-bg-opacity))}.hover\:bg-red-600:hover{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity))}.hover\:bg-transparent:hover{background-color:transparent}.hover\:text-blue-600:hover{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity))}.hover\:text-neutral-800:hover{--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity))}.focus\:\!border-red-700:focus{--tw-border-opacity: 1 !important;border-color:rgb(185 28 28 / var(--tw-border-opacity))!important}.focus\:border-gray-800:focus{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity))}.focus\:border-red-700:focus{--tw-border-opacity: 1;border-color:rgb(185 28 28 / var(--tw-border-opacity))}.focus\:bg-blue-600:focus{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.focus\:bg-gray-300:focus{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity))}.focus\:bg-gray-400:focus{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity))}.focus\:text-white:focus{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity))}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-60:disabled{opacity:.6}.disabled\:opacity-80:disabled{opacity:.8}.group:hover .group-hover\:\!border-gray-500{--tw-border-opacity: 1 !important;border-color:rgb(107 114 128 / var(--tw-border-opacity))!important}.group:focus .group-focus\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}:is(.dark .dark\:border){border-width:1px}:is(.dark .dark\:\!border-gray-500){--tw-border-opacity: 1 !important;border-color:rgb(107 114 128 / var(--tw-border-opacity))!important}:is(.dark .dark\:border-blue-800){--tw-border-opacity: 1;border-color:rgb(30 64 175 / var(--tw-border-opacity))}:is(.dark .dark\:border-gray-400){--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity))}:is(.dark .dark\:border-gray-500){--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity))}:is(.dark .dark\:border-quinary){--tw-border-opacity: 1;border-color:rgb(69 67 73 / var(--tw-border-opacity))}:is(.dark .dark\:border-red-500){--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity))}:is(.dark .dark\:border-secondary){--tw-border-opacity: 1;border-color:rgb(53 52 60 / var(--tw-border-opacity))}:is(.dark .dark\:\!bg-secondary){--tw-bg-opacity: 1 !important;background-color:rgb(53 52 60 / var(--tw-bg-opacity))!important}:is(.dark .dark\:bg-blue-500){--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-200){--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-400){--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity))}:is(.dark .dark\:bg-orange-500){--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity))}:is(.dark .dark\:bg-primary){--tw-bg-opacity: 1;background-color:rgb(22 21 26 / var(--tw-bg-opacity))}:is(.dark .dark\:bg-quinary){--tw-bg-opacity: 1;background-color:rgb(69 67 73 / var(--tw-bg-opacity))}:is(.dark .dark\:bg-secondary){--tw-bg-opacity: 1;background-color:rgb(53 52 60 / var(--tw-bg-opacity))}:is(.dark .dark\:bg-tertiary){--tw-bg-opacity: 1;background-color:rgb(31 30 38 / var(--tw-bg-opacity))}:is(.dark .dark\:fill-gray-200){fill:#e5e7eb}:is(.dark .dark\:fill-secondary){fill:#35343c}:is(.dark .dark\:fill-white){fill:#fff}:is(.dark .dark\:text-gray-100){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity))}:is(.dark .dark\:text-gray-200){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity))}:is(.dark .dark\:text-gray-300){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}:is(.dark .dark\:text-gray-300\/75){color:#d1d5dbbf}:is(.dark .dark\:text-gray-400){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}:is(.dark .dark\:text-white){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}:is(.dark .dark\:shadow-primary){--tw-shadow-color: #16151a;--tw-shadow: var(--tw-shadow-colored)}:is(.dark .dark\:ring-offset-gray-800){--tw-ring-offset-color: #1f2937}:is(.dark .dark\:hover\:\!bg-primary:hover){--tw-bg-opacity: 1 !important;background-color:rgb(22 21 26 / var(--tw-bg-opacity))!important}:is(.dark .dark\:hover\:bg-blue-600:hover){--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-orange-600:hover){--tw-bg-opacity: 1;background-color:rgb(234 88 12 / var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-secondary:hover){--tw-bg-opacity: 1;background-color:rgb(53 52 60 / var(--tw-bg-opacity))}:is(.dark .hover\:dark\:\!bg-secondary):hover{--tw-bg-opacity: 1 !important;background-color:rgb(53 52 60 / var(--tw-bg-opacity))!important}:is(.dark .dark\:hover\:brightness-150:hover){--tw-brightness: brightness(1.5);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}:is(.dark .hover\:dark\:\!brightness-100):hover{--tw-brightness: brightness(1) !important;filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}:is(.dark .dark\:focus\:\!border-red-700:focus){--tw-border-opacity: 1 !important;border-color:rgb(185 28 28 / var(--tw-border-opacity))!important}:is(.dark .dark\:focus\:border-gray-500:focus){--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity))}:is(.dark .dark\:focus\:border-red-700:focus){--tw-border-opacity: 1;border-color:rgb(185 28 28 / var(--tw-border-opacity))}:is(.dark .dark\:focus\:bg-secondary:focus){--tw-bg-opacity: 1;background-color:rgb(53 52 60 / var(--tw-bg-opacity))}:is(.dark .dark\:focus\:ring-blue-600:focus){--tw-ring-opacity: 1;--tw-ring-color: rgb(37 99 235 / var(--tw-ring-opacity))}.group:hover :is(.dark .group-hover\:dark\:\!border-gray-500){--tw-border-opacity: 1 !important;border-color:rgb(107 114 128 / var(--tw-border-opacity))!important}@media (min-width: 640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:px-0{padding-left:0;padding-right:0}}@media (min-width: 1024px){.lg\:table-cell{display:table-cell}}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))} diff --git a/resources/[sna]/sna-sync/nui/index-f45b8810.js b/resources/[sna]/sna-sync/nui/index-f45b8810.js new file mode 100644 index 0000000..1485ae1 --- /dev/null +++ b/resources/[sna]/sna-sync/nui/index-f45b8810.js @@ -0,0 +1,61 @@ +var Ma=(e,t,r)=>{if(!t.has(e))throw TypeError("Cannot "+r)};var T=(e,t,r)=>(Ma(e,t,"read from private field"),r?r.call(e):t.get(e)),ie=(e,t,r)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,r)},q=(e,t,r,n)=>(Ma(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r);var No=(e,t,r,n)=>({set _(i){q(e,t,i,r)},get _(){return T(e,t,n)}}),Ue=(e,t,r)=>(Ma(e,t,"access private method"),r);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))n(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const s of o.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&n(s)}).observe(document,{childList:!0,subtree:!0});function r(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function n(i){if(i.ep)return;i.ep=!0;const o=r(i);fetch(i.href,o)}})();const cr=Object.create(null);cr.open="0";cr.close="1";cr.ping="2";cr.pong="3";cr.message="4";cr.upgrade="5";cr.noop="6";const ms=Object.create(null);Object.keys(cr).forEach(e=>{ms[cr[e]]=e});const du={type:"error",data:"parser error"},um=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",cm=typeof ArrayBuffer=="function",fm=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,Oc=({type:e,data:t},r,n)=>um&&t instanceof Blob?r?n(t):id(t,n):cm&&(t instanceof ArrayBuffer||fm(t))?r?n(t):id(new Blob([t]),n):n(cr[e]+(t||"")),id=(e,t)=>{const r=new FileReader;return r.onload=function(){const n=r.result.split(",")[1];t("b"+(n||""))},r.readAsDataURL(e)};function od(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let Ba;function Bv(e,t){if(um&&e.data instanceof Blob)return e.data.arrayBuffer().then(od).then(t);if(cm&&(e.data instanceof ArrayBuffer||fm(e.data)))return t(od(e.data));Oc(e,!1,r=>{Ba||(Ba=new TextEncoder),t(Ba.encode(r))})}const sd="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Mi=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let e=0;e{let t=e.length*.75,r=e.length,n,i=0,o,s,a,l;e[e.length-1]==="="&&(t--,e[e.length-2]==="="&&t--);const u=new ArrayBuffer(t),d=new Uint8Array(u);for(n=0;n>4,d[i++]=(s&15)<<4|a>>2,d[i++]=(a&3)<<6|l&63;return u},Hv=typeof ArrayBuffer=="function",Ac=(e,t)=>{if(typeof e!="string")return{type:"message",data:dm(e,t)};const r=e.charAt(0);return r==="b"?{type:"message",data:Uv(e.substring(1),t)}:ms[r]?e.length>1?{type:ms[r],data:e.substring(1)}:{type:ms[r]}:du},Uv=(e,t)=>{if(Hv){const r=Dv(e);return dm(r,t)}else return{base64:!0,data:e}},dm=(e,t)=>{switch(t){case"blob":return e instanceof Blob?e:new Blob([e]);case"arraybuffer":default:return e instanceof ArrayBuffer?e:e.buffer}},hm=String.fromCharCode(30),Fv=(e,t)=>{const r=e.length,n=new Array(r);let i=0;e.forEach((o,s)=>{Oc(o,!1,a=>{n[s]=a,++i===r&&t(n.join(hm))})})},jv=(e,t)=>{const r=e.split(hm),n=[];for(let i=0;i{const n=r.length;let i;if(n<126)i=new Uint8Array(1),new DataView(i.buffer).setUint8(0,n);else if(n<65536){i=new Uint8Array(3);const o=new DataView(i.buffer);o.setUint8(0,126),o.setUint16(1,n)}else{i=new Uint8Array(9);const o=new DataView(i.buffer);o.setUint8(0,127),o.setBigUint64(1,BigInt(n))}e.data&&typeof e.data!="string"&&(i[0]|=128),t.enqueue(i),t.enqueue(r)})}})}let Da;function Oo(e){return e.reduce((t,r)=>t+r.length,0)}function Ao(e,t){if(e[0].length===t)return e.shift();const r=new Uint8Array(t);let n=0;for(let i=0;iMath.pow(2,53-32)-1){a.enqueue(du);break}i=d*Math.pow(2,32)+u.getUint32(4),n=3}else{if(Oo(r)e){a.enqueue(du);break}}}})}const pm=4;function Be(e){if(e)return Gv(e)}function Gv(e){for(var t in Be.prototype)e[t]=Be.prototype[t];return e}Be.prototype.on=Be.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this};Be.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this};Be.prototype.off=Be.prototype.removeListener=Be.prototype.removeAllListeners=Be.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var r=this._callbacks["$"+e];if(!r)return this;if(arguments.length==1)return delete this._callbacks["$"+e],this;for(var n,i=0;itypeof self<"u"?self:typeof window<"u"?window:Function("return this")())();function mm(e,...t){return t.reduce((r,n)=>(e.hasOwnProperty(n)&&(r[n]=e[n]),r),{})}const Vv=Lt.setTimeout,Wv=Lt.clearTimeout;function la(e,t){t.useNativeTimers?(e.setTimeoutFn=Vv.bind(Lt),e.clearTimeoutFn=Wv.bind(Lt)):(e.setTimeoutFn=Lt.setTimeout.bind(Lt),e.clearTimeoutFn=Lt.clearTimeout.bind(Lt))}const $v=1.33;function Qv(e){return typeof e=="string"?Xv(e):Math.ceil((e.byteLength||e.size)*$v)}function Xv(e){let t=0,r=0;for(let n=0,i=e.length;n=57344?r+=3:(n++,r+=4);return r}function Kv(e){let t="";for(let r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t}function Yv(e){let t={},r=e.split("&");for(let n=0,i=r.length;n0);return t}function ym(){const e=ud(+new Date);return e!==ld?(ad=0,ld=e):e+"."+ud(ad++)}for(;Lo{this.readyState="paused",t()};if(this.polling||!this.writable){let n=0;this.polling&&(n++,this.once("pollComplete",function(){--n||r()})),this.writable||(n++,this.once("drain",function(){--n||r()}))}else r()}poll(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(t){const r=n=>{if(this.readyState==="opening"&&n.type==="open"&&this.onOpen(),n.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(n)};jv(t,this.socket.binaryType).forEach(r),this.readyState!=="closed"&&(this.polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this.poll())}doClose(){const t=()=>{this.write([{type:"close"}])};this.readyState==="open"?t():this.once("open",t)}write(t){this.writable=!1,Fv(t,r=>{this.doWrite(r,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const t=this.opts.secure?"https":"http",r=this.query||{};return this.opts.timestampRequests!==!1&&(r[this.opts.timestampParam]=ym()),!this.supportsBinary&&!r.sid&&(r.b64=1),this.createUri(t,r)}request(t={}){return Object.assign(t,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new ar(this.uri(),t)}doWrite(t,r){const n=this.request({method:"POST",data:t});n.on("success",r),n.on("error",(i,o)=>{this.onError("xhr post error",i,o)})}doPoll(){const t=this.request();t.on("data",this.onData.bind(this)),t.on("error",(r,n)=>{this.onError("xhr poll error",r,n)}),this.pollXhr=t}}class ar extends Be{constructor(t,r){super(),la(this,r),this.opts=r,this.method=r.method||"GET",this.uri=t,this.data=r.data!==void 0?r.data:null,this.create()}create(){var t;const r=mm(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");r.xdomain=!!this.opts.xd;const n=this.xhr=new _m(r);try{n.open(this.method,this.uri,!0);try{if(this.opts.extraHeaders){n.setDisableHeaderCheck&&n.setDisableHeaderCheck(!0);for(let i in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(i)&&n.setRequestHeader(i,this.opts.extraHeaders[i])}}catch{}if(this.method==="POST")try{n.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{n.setRequestHeader("Accept","*/*")}catch{}(t=this.opts.cookieJar)===null||t===void 0||t.addCookies(n),"withCredentials"in n&&(n.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(n.timeout=this.opts.requestTimeout),n.onreadystatechange=()=>{var i;n.readyState===3&&((i=this.opts.cookieJar)===null||i===void 0||i.parseCookies(n)),n.readyState===4&&(n.status===200||n.status===1223?this.onLoad():this.setTimeoutFn(()=>{this.onError(typeof n.status=="number"?n.status:0)},0))},n.send(this.data)}catch(i){this.setTimeoutFn(()=>{this.onError(i)},0);return}typeof document<"u"&&(this.index=ar.requestsCount++,ar.requests[this.index]=this)}onError(t){this.emitReserved("error",t,this.xhr),this.cleanup(!0)}cleanup(t){if(!(typeof this.xhr>"u"||this.xhr===null)){if(this.xhr.onreadystatechange=t0,t)try{this.xhr.abort()}catch{}typeof document<"u"&&delete ar.requests[this.index],this.xhr=null}}onLoad(){const t=this.xhr.responseText;t!==null&&(this.emitReserved("data",t),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}ar.requestsCount=0;ar.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",cd);else if(typeof addEventListener=="function"){const e="onpagehide"in Lt?"pagehide":"unload";addEventListener(e,cd,!1)}}function cd(){for(let e in ar.requests)ar.requests.hasOwnProperty(e)&&ar.requests[e].abort()}const kc=(()=>typeof Promise=="function"&&typeof Promise.resolve=="function"?t=>Promise.resolve().then(t):(t,r)=>r(t,0))(),ko=Lt.WebSocket||Lt.MozWebSocket,fd=!0,i0="arraybuffer",dd=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class o0 extends Lc{constructor(t){super(t),this.supportsBinary=!t.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const t=this.uri(),r=this.opts.protocols,n=dd?{}:mm(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(n.headers=this.opts.extraHeaders);try{this.ws=fd&&!dd?r?new ko(t,r):new ko(t):new ko(t,r,n)}catch(i){return this.emitReserved("error",i)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=t=>this.onClose({description:"websocket connection closed",context:t}),this.ws.onmessage=t=>this.onData(t.data),this.ws.onerror=t=>this.onError("websocket error",t)}write(t){this.writable=!1;for(let r=0;r{const s={};try{fd&&this.ws.send(o)}catch{}i&&kc(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.close(),this.ws=null)}uri(){const t=this.opts.secure?"wss":"ws",r=this.query||{};return this.opts.timestampRequests&&(r[this.opts.timestampParam]=ym()),this.supportsBinary||(r.b64=1),this.createUri(t,r)}check(){return!!ko}}class s0 extends Lc{get name(){return"webtransport"}doOpen(){typeof WebTransport=="function"&&(this.transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name]),this.transport.closed.then(()=>{this.onClose()}).catch(t=>{this.onError("webtransport error",t)}),this.transport.ready.then(()=>{this.transport.createBidirectionalStream().then(t=>{const r=qv(Number.MAX_SAFE_INTEGER,this.socket.binaryType),n=t.readable.pipeThrough(r).getReader(),i=zv();i.readable.pipeTo(t.writable),this.writer=i.writable.getWriter();const o=()=>{n.read().then(({done:a,value:l})=>{a||(this.onPacket(l),o())}).catch(a=>{})};o();const s={type:"open"};this.query.sid&&(s.data=`{"sid":"${this.query.sid}"}`),this.writer.write(s).then(()=>this.onOpen())})}))}write(t){this.writable=!1;for(let r=0;r{i&&kc(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var t;(t=this.transport)===null||t===void 0||t.close()}}const a0={websocket:o0,webtransport:s0,polling:n0},l0=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,u0=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function pu(e){const t=e,r=e.indexOf("["),n=e.indexOf("]");r!=-1&&n!=-1&&(e=e.substring(0,r)+e.substring(r,n).replace(/:/g,";")+e.substring(n,e.length));let i=l0.exec(e||""),o={},s=14;for(;s--;)o[u0[s]]=i[s]||"";return r!=-1&&n!=-1&&(o.source=t,o.host=o.host.substring(1,o.host.length-1).replace(/;/g,":"),o.authority=o.authority.replace("[","").replace("]","").replace(/;/g,":"),o.ipv6uri=!0),o.pathNames=c0(o,o.path),o.queryKey=f0(o,o.query),o}function c0(e,t){const r=/\/{2,9}/g,n=t.replace(r,"/").split("/");return(t.slice(0,1)=="/"||t.length===0)&&n.splice(0,1),t.slice(-1)=="/"&&n.splice(n.length-1,1),n}function f0(e,t){const r={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(n,i,o){i&&(r[i]=o)}),r}let wm=class Ln extends Be{constructor(t,r={}){super(),this.binaryType=i0,this.writeBuffer=[],t&&typeof t=="object"&&(r=t,t=null),t?(t=pu(t),r.hostname=t.host,r.secure=t.protocol==="https"||t.protocol==="wss",r.port=t.port,t.query&&(r.query=t.query)):r.host&&(r.hostname=pu(r.host).host),la(this,r),this.secure=r.secure!=null?r.secure:typeof location<"u"&&location.protocol==="https:",r.hostname&&!r.port&&(r.port=this.secure?"443":"80"),this.hostname=r.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=r.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=r.transports||["polling","websocket","webtransport"],this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},r),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=Yv(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,typeof addEventListener=="function"&&(this.opts.closeOnBeforeunload&&(this.beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(t){const r=Object.assign({},this.opts.query);r.EIO=pm,r.transport=t,this.id&&(r.sid=this.id);const n=Object.assign({},this.opts,{query:r,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[t]);return new a0[t](n)}open(){let t;if(this.opts.rememberUpgrade&&Ln.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1)t="websocket";else if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}else t=this.transports[0];this.readyState="opening";try{t=this.createTransport(t)}catch{this.transports.shift(),this.open();return}t.open(),this.setTransport(t)}setTransport(t){this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",r=>this.onClose("transport close",r))}probe(t){let r=this.createTransport(t),n=!1;Ln.priorWebsocketSuccess=!1;const i=()=>{n||(r.send([{type:"ping",data:"probe"}]),r.once("packet",p=>{if(!n)if(p.type==="pong"&&p.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",r),!r)return;Ln.priorWebsocketSuccess=r.name==="websocket",this.transport.pause(()=>{n||this.readyState!=="closed"&&(d(),this.setTransport(r),r.send([{type:"upgrade"}]),this.emitReserved("upgrade",r),r=null,this.upgrading=!1,this.flush())})}else{const g=new Error("probe error");g.transport=r.name,this.emitReserved("upgradeError",g)}}))};function o(){n||(n=!0,d(),r.close(),r=null)}const s=p=>{const g=new Error("probe error: "+p);g.transport=r.name,o(),this.emitReserved("upgradeError",g)};function a(){s("transport closed")}function l(){s("socket closed")}function u(p){r&&p.name!==r.name&&o()}const d=()=>{r.removeListener("open",i),r.removeListener("error",s),r.removeListener("close",a),this.off("close",l),this.off("upgrading",u)};r.once("open",i),r.once("error",s),r.once("close",a),this.once("close",l),this.once("upgrading",u),this.upgrades.indexOf("webtransport")!==-1&&t!=="webtransport"?this.setTimeoutFn(()=>{n||r.open()},200):r.open()}onOpen(){if(this.readyState="open",Ln.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush(),this.readyState==="open"&&this.opts.upgrade){let t=0;const r=this.upgrades.length;for(;t{this.onClose("ping timeout")},this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const t=this.getWritablePackets();this.transport.send(t),this.prevBufferLen=t.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let r=1;for(let n=0;n0&&r>this.maxPayload)return this.writeBuffer.slice(0,n);r+=2}return this.writeBuffer}write(t,r,n){return this.sendPacket("message",t,r,n),this}send(t,r,n){return this.sendPacket("message",t,r,n),this}sendPacket(t,r,n,i){if(typeof r=="function"&&(i=r,r=void 0),typeof n=="function"&&(i=n,n=null),this.readyState==="closing"||this.readyState==="closed")return;n=n||{},n.compress=n.compress!==!1;const o={type:t,data:r,options:n};this.emitReserved("packetCreate",o),this.writeBuffer.push(o),i&&this.once("flush",i),this.flush()}close(){const t=()=>{this.onClose("forced close"),this.transport.close()},r=()=>{this.off("upgrade",r),this.off("upgradeError",r),t()},n=()=>{this.once("upgrade",r),this.once("upgradeError",r)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?n():t()}):this.upgrading?n():t()),this}onError(t){Ln.priorWebsocketSuccess=!1,this.emitReserved("error",t),this.onClose("transport error",t)}onClose(t,r){(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")&&(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),typeof removeEventListener=="function"&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",t,r),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(t){const r=[];let n=0;const i=t.length;for(;ntypeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,Em=Object.prototype.toString,m0=typeof Blob=="function"||typeof Blob<"u"&&Em.call(Blob)==="[object BlobConstructor]",g0=typeof File=="function"||typeof File<"u"&&Em.call(File)==="[object FileConstructor]";function Ic(e){return h0&&(e instanceof ArrayBuffer||p0(e))||m0&&e instanceof Blob||g0&&e instanceof File}function gs(e,t){if(!e||typeof e!="object")return!1;if(Array.isArray(e)){for(let r=0,n=e.length;r=0&&e.num{delete this.acks[t];for(let s=0;s{this.io.clearTimeoutFn(o),r.apply(this,[null,...s])}}emitWithAck(t,...r){const n=this.flags.timeout!==void 0||this._opts.ackTimeout!==void 0;return new Promise((i,o)=>{r.push((s,a)=>n?s?o(s):i(a):i(s)),this.emit(t,...r)})}_addToQueue(t){let r;typeof t[t.length-1]=="function"&&(r=t.pop());const n={id:this._queueSeq++,tryCount:0,pending:!1,args:t,flags:Object.assign({fromQueue:!0},this.flags)};t.push((i,...o)=>n!==this._queue[0]?void 0:(i!==null?n.tryCount>this._opts.retries&&(this._queue.shift(),r&&r(i)):(this._queue.shift(),r&&r(null,...o)),n.pending=!1,this._drainQueue())),this._queue.push(n),this._drainQueue()}_drainQueue(t=!1){if(!this.connected||this._queue.length===0)return;const r=this._queue[0];r.pending&&!t||(r.pending=!0,r.tryCount++,this.flags=r.flags,this.emit.apply(this,r.args))}packet(t){t.nsp=this.nsp,this.io._packet(t)}onopen(){typeof this.auth=="function"?this.auth(t=>{this._sendConnectPacket(t)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(t){this.packet({type:se.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},t):t})}onerror(t){this.connected||this.emitReserved("connect_error",t)}onclose(t,r){this.connected=!1,delete this.id,this.emitReserved("disconnect",t,r)}onpacket(t){if(t.nsp===this.nsp)switch(t.type){case se.CONNECT:t.data&&t.data.sid?this.onconnect(t.data.sid,t.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case se.EVENT:case se.BINARY_EVENT:this.onevent(t);break;case se.ACK:case se.BINARY_ACK:this.onack(t);break;case se.DISCONNECT:this.ondisconnect();break;case se.CONNECT_ERROR:this.destroy();const n=new Error(t.data.message);n.data=t.data.data,this.emitReserved("connect_error",n);break}}onevent(t){const r=t.data||[];t.id!=null&&r.push(this.ack(t.id)),this.connected?this.emitEvent(r):this.receiveBuffer.push(Object.freeze(r))}emitEvent(t){if(this._anyListeners&&this._anyListeners.length){const r=this._anyListeners.slice();for(const n of r)n.apply(this,t)}super.emit.apply(this,t),this._pid&&t.length&&typeof t[t.length-1]=="string"&&(this._lastOffset=t[t.length-1])}ack(t){const r=this;let n=!1;return function(...i){n||(n=!0,r.packet({type:se.ACK,id:t,data:i}))}}onack(t){const r=this.acks[t.id];typeof r=="function"&&(r.apply(this,t.data),delete this.acks[t.id])}onconnect(t,r){this.id=t,this.recovered=r&&this._pid===r,this._pid=r,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach(t=>this.emitEvent(t)),this.receiveBuffer=[],this.sendBuffer.forEach(t=>{this.notifyOutgoingListeners(t),this.packet(t)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(t=>t()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:se.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(t){return this.flags.compress=t,this}get volatile(){return this.flags.volatile=!0,this}timeout(t){return this.flags.timeout=t,this}onAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(t),this}prependAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(t),this}offAny(t){if(!this._anyListeners)return this;if(t){const r=this._anyListeners;for(let n=0;n0&&e.jitter<=1?e.jitter:0,this.attempts=0}_i.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),r=Math.floor(t*this.jitter*e);e=Math.floor(t*10)&1?e+r:e-r}return Math.min(e,this.max)|0};_i.prototype.reset=function(){this.attempts=0};_i.prototype.setMin=function(e){this.ms=e};_i.prototype.setMax=function(e){this.max=e};_i.prototype.setJitter=function(e){this.jitter=e};class yu extends Be{constructor(t,r){var n;super(),this.nsps={},this.subs=[],t&&typeof t=="object"&&(r=t,t=void 0),r=r||{},r.path=r.path||"/socket.io",this.opts=r,la(this,r),this.reconnection(r.reconnection!==!1),this.reconnectionAttempts(r.reconnectionAttempts||1/0),this.reconnectionDelay(r.reconnectionDelay||1e3),this.reconnectionDelayMax(r.reconnectionDelayMax||5e3),this.randomizationFactor((n=r.randomizationFactor)!==null&&n!==void 0?n:.5),this.backoff=new _i({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(r.timeout==null?2e4:r.timeout),this._readyState="closed",this.uri=t;const i=r.parser||P0;this.encoder=new i.Encoder,this.decoder=new i.Decoder,this._autoConnect=r.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(t){return arguments.length?(this._reconnection=!!t,this):this._reconnection}reconnectionAttempts(t){return t===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}reconnectionDelay(t){var r;return t===void 0?this._reconnectionDelay:(this._reconnectionDelay=t,(r=this.backoff)===null||r===void 0||r.setMin(t),this)}randomizationFactor(t){var r;return t===void 0?this._randomizationFactor:(this._randomizationFactor=t,(r=this.backoff)===null||r===void 0||r.setJitter(t),this)}reconnectionDelayMax(t){var r;return t===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,(r=this.backoff)===null||r===void 0||r.setMax(t),this)}timeout(t){return arguments.length?(this._timeout=t,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(t){if(~this._readyState.indexOf("open"))return this;this.engine=new wm(this.uri,this.opts);const r=this.engine,n=this;this._readyState="opening",this.skipReconnect=!1;const i=Wt(r,"open",function(){n.onopen(),t&&t()}),o=a=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",a),t?t(a):this.maybeReconnectOnOpen()},s=Wt(r,"error",o);if(this._timeout!==!1){const a=this._timeout,l=this.setTimeoutFn(()=>{i(),o(new Error("timeout")),r.close()},a);this.opts.autoUnref&&l.unref(),this.subs.push(()=>{this.clearTimeoutFn(l)})}return this.subs.push(i),this.subs.push(s),this}connect(t){return this.open(t)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const t=this.engine;this.subs.push(Wt(t,"ping",this.onping.bind(this)),Wt(t,"data",this.ondata.bind(this)),Wt(t,"error",this.onerror.bind(this)),Wt(t,"close",this.onclose.bind(this)),Wt(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(t){try{this.decoder.add(t)}catch(r){this.onclose("parse error",r)}}ondecoded(t){kc(()=>{this.emitReserved("packet",t)},this.setTimeoutFn)}onerror(t){this.emitReserved("error",t)}socket(t,r){let n=this.nsps[t];return n?this._autoConnect&&!n.active&&n.connect():(n=new Sm(this,t,r),this.nsps[t]=n),n}_destroy(t){const r=Object.keys(this.nsps);for(const n of r)if(this.nsps[n].active)return;this._close()}_packet(t){const r=this.encoder.encode(t);for(let n=0;nt()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(t,r){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",t,r),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const t=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const r=this.backoff.duration();this._reconnecting=!0;const n=this.setTimeoutFn(()=>{t.skipReconnect||(this.emitReserved("reconnect_attempt",t.backoff.attempts),!t.skipReconnect&&t.open(i=>{i?(t._reconnecting=!1,t.reconnect(),this.emitReserved("reconnect_error",i)):t.onreconnect()}))},r);this.opts.autoUnref&&n.unref(),this.subs.push(()=>{this.clearTimeoutFn(n)})}}onreconnect(){const t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}const xi={};function ys(e,t){typeof e=="object"&&(t=e,e=void 0),t=t||{};const r=d0(e,t.path||"/socket.io"),n=r.source,i=r.id,o=r.path,s=xi[i]&&o in xi[i].nsps,a=t.forceNew||t["force new connection"]||t.multiplex===!1||s;let l;return a?l=new yu(n,t):(xi[i]||(xi[i]=new yu(n,t)),l=xi[i]),r.query&&!t.query&&(t.query=r.queryKey),l.socket(r.path,t)}Object.assign(ys,{Manager:yu,Socket:Sm,io:ys,connect:ys});var Pm=(e=>(e.Call911="sn-call911",e.CallTow="sn-calltow",e.CallTaxi="sn-calltaxi",e.WhoAmI="sn-whoami",e.Logout="sn-logout",e.Auth="sn-auth",e.ActiveUnit="sn-active-unit",e.SetStatus="sn-set-status",e.PanicButton="sn-panic-button",e.AttachTo911Call="sn-attach",e.TrafficStop="sn-traffic-stop",e))(Pm||{}),ji=(e=>(e.RequestAuthFlow="sna-sync:request-authentication-flow",e.RequestSetStatusFlow="sna-sync:request-set-status-flow",e.RequestCall911AttachFlow="sna-sync:request-call-911-attach-flow",e.RequestTrafficStopFlow="sna-sync:request-traffic-stop-flow",e.CreateNotification="sna-sync:create-notification",e))(ji||{}),ks=(e=>(e.CloseNui="sna-sync-nui:close-nui",e.OnAuthenticationFlowSuccess="sna-sync-nui:authentication-flow-success",e.Connected="sna-sync-nui:connected",e.ConnectionError="sna-sync-nui:connect_error",e.Signal100="sna-sync-nui:signal100",e.UpdateAreaOfPlay="sna-sync-nui:update-area-of-play",e))(ks||{});const pd=document.getElementById("notification-portal"),R0=1e4;function kn(e){if(!pd)throw new Error("Notification portal not found");const r=` +
    +
    +
    +
    +

    ${T0(new Date)}

    +

    SnailyCAD

    +
    +

    ${e.title}

    +
    ${e.message}
    +
    +
    +
    +`,n=document.createElement("div");n.innerHTML=r,pd.appendChild(n);const i=e.timeout??R0;setTimeout(()=>{n.remove()},i)}function T0(e){return e.toLocaleTimeString("en-US",{hour12:!1,hour:"numeric",minute:"numeric",second:"numeric"})}var Bi=(e=>(e.CreateTowCall="CreateTowCall",e.UpdateTowCall="UpdateTowCall",e.EndTowCall="EndTowCall",e.CreateTaxiCall="CreateTaxiCall",e.UpdateTaxiCall="UpdateTaxiCall",e.EndTaxiCall="EndTaxiCall",e.Create911Call="Create911Call",e.Update911Call="Update911Call",e.End911Call="End911Call",e.CreateBolo="CreateBolo",e.UpdateBolo="UpdateBolo",e.DeleteBolo="DeleteBolo",e.UpdateAreaOfPlay="UpdateAreaOfPlay",e.UpdateOfficerStatus="UpdateOfficerStatus",e.UpdateEmsFdStatus="UpdateEmsFdStatus",e.UpdateDispatchersState="UpdateDispatchersState",e.SetUnitOffDuty="SetUnitOffDuty",e.UpdateUnitStatus="UpdateUnitStatus",e.UserBanned="UserBanned",e.UserDeleted="UserDeleted",e.Signal100="Signal100",e.PANIC_BUTTON_ON="PANIC_BUTTON_ON",e.PANIC_BUTTON_OFF="PANIC_BUTTON_OFF",e.CreateActiveIncident="CreateActiveIncident",e.UpdateActiveIncident="UpdateActiveIncident",e.CreateActiveWarrant="CreateActiveWarrant",e.UpdateActiveWarrant="UpdateActiveWarrant",e.RoleplayStopped="RoleplayStopped",e.Tones="Tones",e.PrivateMessage="PrivateMessage",e))(Bi||{});window.addEventListener("message",e=>{var r,n,i,o;const t=(r=e.data.data)==null?void 0:r.url;if(t)switch(e.data.action){case"sn:initialize":{C0(t);break}case ji.CreateNotification:{const s=(n=e.data.data)==null?void 0:n.title,a=(i=e.data.data)==null?void 0:i.message,l=(o=e.data.data)==null?void 0:o.timeout;s&&a&&kn({timeout:l,title:s,message:a});break}}});let Tr;function C0(e){Tr??(Tr=ys(e.replace("/v1",""))),Tr.on("connect",()=>vu(ks.Connected,{socketId:Tr.id})),Tr.on("connect_error",t=>vu(ks.ConnectionError,{error:t})),Tr.on(Bi.Create911Call,t=>{kn({message:`A new 911 call has been created with case number: #${t.caseNumber}. To assign yourself to the call, use /${Pm.AttachTo911Call} ${t.caseNumber}`,title:"Incoming 911 Call",timeout:15e3})}),Tr.on(Bi.Signal100,t=>{kn(t?{message:"Signal 100 is now enabled.",title:"Signal 100 Enabled"}:{message:"Signal 100 is now disabled.",title:"Signal 100 Disabled"})}),Tr.on(Bi.UpdateAreaOfPlay,t=>kn({message:`Area of play has been updated to: ${t??"None"}`,title:"AOP Changed"})),Tr.on(Bi.PANIC_BUTTON_ON,t=>{kn({message:`${t.formattedUnitData} has pressed their panic button.`,title:"Panic Button Enabled"})})}async function vu(e,t={}){var r;try{const n={method:"POST",headers:{"Content-Type":"application/json; charset=UTF-8"},body:JSON.stringify(t)},i=((r=window.GetCurrentResourceName)==null?void 0:r.call(window))??"sna-sync",o=await fetch(`https://${i}/${e}`,n);return console.log("[`sna-sync-nui`][outgoing]:",e),o}catch(n){return console.error(n),null}}function xm(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Rm(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var r=function n(){return this instanceof n?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(n){var i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(r,n,i.get?i:{enumerable:!0,get:function(){return e[n]}})}),r}var Tm={exports:{}},ua={},Cm={exports:{}},ne={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Eo=Symbol.for("react.element"),b0=Symbol.for("react.portal"),N0=Symbol.for("react.fragment"),O0=Symbol.for("react.strict_mode"),A0=Symbol.for("react.profiler"),L0=Symbol.for("react.provider"),k0=Symbol.for("react.context"),I0=Symbol.for("react.forward_ref"),M0=Symbol.for("react.suspense"),B0=Symbol.for("react.memo"),D0=Symbol.for("react.lazy"),md=Symbol.iterator;function H0(e){return e===null||typeof e!="object"?null:(e=md&&e[md]||e["@@iterator"],typeof e=="function"?e:null)}var bm={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Nm=Object.assign,Om={};function wi(e,t,r){this.props=e,this.context=t,this.refs=Om,this.updater=r||bm}wi.prototype.isReactComponent={};wi.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};wi.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Am(){}Am.prototype=wi.prototype;function Bc(e,t,r){this.props=e,this.context=t,this.refs=Om,this.updater=r||bm}var Dc=Bc.prototype=new Am;Dc.constructor=Bc;Nm(Dc,wi.prototype);Dc.isPureReactComponent=!0;var gd=Array.isArray,Lm=Object.prototype.hasOwnProperty,Hc={current:null},km={key:!0,ref:!0,__self:!0,__source:!0};function Im(e,t,r){var n,i={},o=null,s=null;if(t!=null)for(n in t.ref!==void 0&&(s=t.ref),t.key!==void 0&&(o=""+t.key),t)Lm.call(t,n)&&!km.hasOwnProperty(n)&&(i[n]=t[n]);var a=arguments.length-2;if(a===1)i.children=r;else if(1>>1,pe=B[V];if(0>>1;Vi(Cn,F))Uti(rn,Cn)?(B[V]=rn,B[Ut]=F,V=Ut):(B[V]=Cn,B[fr]=F,V=fr);else if(Uti(rn,F))B[V]=rn,B[Ut]=F,V=Ut;else break e}}return D}function i(B,D){var F=B.sortIndex-D.sortIndex;return F!==0?F:B.id-D.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var s=Date,a=s.now();e.unstable_now=function(){return s.now()-a}}var l=[],u=[],d=1,p=null,g=3,m=!1,y=!1,h=!1,E=typeof setTimeout=="function"?setTimeout:null,c=typeof clearTimeout=="function"?clearTimeout:null,f=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function v(B){for(var D=r(u);D!==null;){if(D.callback===null)n(u);else if(D.startTime<=B)n(u),D.sortIndex=D.expirationTime,t(l,D);else break;D=r(u)}}function _(B){if(h=!1,v(B),!y)if(r(l)!==null)y=!0,_e(w);else{var D=r(u);D!==null&&he(_,D.startTime-B)}}function w(B,D){y=!1,h&&(h=!1,c(x),x=-1),m=!0;var F=g;try{for(v(D),p=r(l);p!==null&&(!(p.expirationTime>D)||B&&!A());){var V=p.callback;if(typeof V=="function"){p.callback=null,g=p.priorityLevel;var pe=V(p.expirationTime<=D);D=e.unstable_now(),typeof pe=="function"?p.callback=pe:p===r(l)&&n(l),v(D)}else n(l);p=r(l)}if(p!==null)var me=!0;else{var fr=r(u);fr!==null&&he(_,fr.startTime-D),me=!1}return me}finally{p=null,g=F,m=!1}}var S=!1,P=null,x=-1,O=5,b=-1;function A(){return!(e.unstable_now()-bB||125V?(B.sortIndex=F,t(u,B),r(l)===null&&B===r(u)&&(h?(c(x),x=-1):h=!0,he(_,F-V))):(B.sortIndex=pe,t(l,B),y||m||(y=!0,_e(w))),B},e.unstable_shouldYield=A,e.unstable_wrapCallback=function(B){var D=g;return function(){var F=g;g=D;try{return B.apply(this,arguments)}finally{g=F}}}})(Um);Hm.exports=Um;var X0=Hm.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Fm=le,Rt=X0;function k(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;r"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),wu=Object.prototype.hasOwnProperty,K0=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,vd={},_d={};function Y0(e){return wu.call(_d,e)?!0:wu.call(vd,e)?!1:K0.test(e)?_d[e]=!0:(vd[e]=!0,!1)}function Z0(e,t,r,n){if(r!==null&&r.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return n?!1:r!==null?!r.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function J0(e,t,r,n){if(t===null||typeof t>"u"||Z0(e,t,r,n))return!0;if(n)return!1;if(r!==null)switch(r.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function st(e,t,r,n,i,o,s){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=n,this.attributeNamespace=i,this.mustUseProperty=r,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=s}var Xe={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Xe[e]=new st(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Xe[t]=new st(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Xe[e]=new st(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Xe[e]=new st(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Xe[e]=new st(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Xe[e]=new st(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Xe[e]=new st(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Xe[e]=new st(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Xe[e]=new st(e,5,!1,e.toLowerCase(),null,!1,!1)});var Fc=/[\-:]([a-z])/g;function jc(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(Fc,jc);Xe[t]=new st(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(Fc,jc);Xe[t]=new st(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(Fc,jc);Xe[t]=new st(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Xe[e]=new st(e,1,!1,e.toLowerCase(),null,!1,!1)});Xe.xlinkHref=new st("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Xe[e]=new st(e,1,!1,e.toLowerCase(),null,!0,!0)});function zc(e,t,r,n){var i=Xe.hasOwnProperty(t)?Xe[t]:null;(i!==null?i.type!==0:n||!(2a||i[s]!==o[a]){var l=` +`+i[s].replace(" at new "," at ");return e.displayName&&l.includes("")&&(l=l.replace("",e.displayName)),l}while(1<=s&&0<=a);break}}}finally{Fa=!1,Error.prepareStackTrace=r}return(e=e?e.displayName||e.name:"")?Di(e):""}function e_(e){switch(e.tag){case 5:return Di(e.type);case 16:return Di("Lazy");case 13:return Di("Suspense");case 19:return Di("SuspenseList");case 0:case 2:case 15:return e=ja(e.type,!1),e;case 11:return e=ja(e.type.render,!1),e;case 1:return e=ja(e.type,!0),e;default:return""}}function xu(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Mn:return"Fragment";case In:return"Portal";case Eu:return"Profiler";case qc:return"StrictMode";case Su:return"Suspense";case Pu:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case qm:return(e.displayName||"Context")+".Consumer";case zm:return(e._context.displayName||"Context")+".Provider";case Gc:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Vc:return t=e.displayName||null,t!==null?t:xu(e.type)||"Memo";case Or:t=e._payload,e=e._init;try{return xu(e(t))}catch{}}return null}function t_(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return xu(t);case 8:return t===qc?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function Kr(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Vm(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function r_(e){var t=Vm(e)?"checked":"value",r=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),n=""+e[t];if(!e.hasOwnProperty(t)&&typeof r<"u"&&typeof r.get=="function"&&typeof r.set=="function"){var i=r.get,o=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(s){n=""+s,o.call(this,s)}}),Object.defineProperty(e,t,{enumerable:r.enumerable}),{getValue:function(){return n},setValue:function(s){n=""+s},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Bo(e){e._valueTracker||(e._valueTracker=r_(e))}function Wm(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var r=t.getValue(),n="";return e&&(n=Vm(e)?e.checked?"true":"false":e.value),e=n,e!==r?(t.setValue(e),!0):!1}function Is(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Ru(e,t){var r=t.checked;return Ae({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:r??e._wrapperState.initialChecked})}function Ed(e,t){var r=t.defaultValue==null?"":t.defaultValue,n=t.checked!=null?t.checked:t.defaultChecked;r=Kr(t.value!=null?t.value:r),e._wrapperState={initialChecked:n,initialValue:r,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function $m(e,t){t=t.checked,t!=null&&zc(e,"checked",t,!1)}function Tu(e,t){$m(e,t);var r=Kr(t.value),n=t.type;if(r!=null)n==="number"?(r===0&&e.value===""||e.value!=r)&&(e.value=""+r):e.value!==""+r&&(e.value=""+r);else if(n==="submit"||n==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Cu(e,t.type,r):t.hasOwnProperty("defaultValue")&&Cu(e,t.type,Kr(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Sd(e,t,r){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var n=t.type;if(!(n!=="submit"&&n!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,r||t===e.value||(e.value=t),e.defaultValue=t}r=e.name,r!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,r!==""&&(e.name=r)}function Cu(e,t,r){(t!=="number"||Is(e.ownerDocument)!==e)&&(r==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+r&&(e.defaultValue=""+r))}var Hi=Array.isArray;function Wn(e,t,r,n){if(e=e.options,t){t={};for(var i=0;i"+t.valueOf().toString()+"",t=Do.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Zi(e,t){if(t){var r=e.firstChild;if(r&&r===e.lastChild&&r.nodeType===3){r.nodeValue=t;return}}e.textContent=t}var zi={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},n_=["Webkit","ms","Moz","O"];Object.keys(zi).forEach(function(e){n_.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),zi[t]=zi[e]})});function Ym(e,t,r){return t==null||typeof t=="boolean"||t===""?"":r||typeof t!="number"||t===0||zi.hasOwnProperty(e)&&zi[e]?(""+t).trim():t+"px"}function Zm(e,t){e=e.style;for(var r in t)if(t.hasOwnProperty(r)){var n=r.indexOf("--")===0,i=Ym(r,t[r],n);r==="float"&&(r="cssFloat"),n?e.setProperty(r,i):e[r]=i}}var i_=Ae({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Ou(e,t){if(t){if(i_[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(k(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(k(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(k(61))}if(t.style!=null&&typeof t.style!="object")throw Error(k(62))}}function Au(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Lu=null;function Wc(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var ku=null,$n=null,Qn=null;function Rd(e){if(e=xo(e)){if(typeof ku!="function")throw Error(k(280));var t=e.stateNode;t&&(t=pa(t),ku(e.stateNode,e.type,t))}}function Jm(e){$n?Qn?Qn.push(e):Qn=[e]:$n=e}function eg(){if($n){var e=$n,t=Qn;if(Qn=$n=null,Rd(e),t)for(e=0;e>>=0,e===0?32:31-(m_(e)/g_|0)|0}var Ho=64,Uo=4194304;function Ui(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Hs(e,t){var r=e.pendingLanes;if(r===0)return 0;var n=0,i=e.suspendedLanes,o=e.pingedLanes,s=r&268435455;if(s!==0){var a=s&~i;a!==0?n=Ui(a):(o&=s,o!==0&&(n=Ui(o)))}else s=r&~i,s!==0?n=Ui(s):o!==0&&(n=Ui(o));if(n===0)return 0;if(t!==0&&t!==n&&!(t&i)&&(i=n&-n,o=t&-t,i>=o||i===16&&(o&4194240)!==0))return t;if(n&4&&(n|=r&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=n;0r;r++)t.push(e);return t}function So(e,t,r){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Kt(t),e[t]=r}function w_(e,t){var r=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var n=e.eventTimes;for(e=e.expirationTimes;0=Gi),Id=String.fromCharCode(32),Md=!1;function wg(e,t){switch(e){case"keyup":return Q_.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Eg(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Bn=!1;function K_(e,t){switch(e){case"compositionend":return Eg(t);case"keypress":return t.which!==32?null:(Md=!0,Id);case"textInput":return e=t.data,e===Id&&Md?null:e;default:return null}}function Y_(e,t){if(Bn)return e==="compositionend"||!ef&&wg(e,t)?(e=vg(),Es=Yc=Fr=null,Bn=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=Ud(r)}}function Rg(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Rg(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Tg(){for(var e=window,t=Is();t instanceof e.HTMLIFrameElement;){try{var r=typeof t.contentWindow.location.href=="string"}catch{r=!1}if(r)e=t.contentWindow;else break;t=Is(e.document)}return t}function tf(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function sw(e){var t=Tg(),r=e.focusedElem,n=e.selectionRange;if(t!==r&&r&&r.ownerDocument&&Rg(r.ownerDocument.documentElement,r)){if(n!==null&&tf(r)){if(t=n.start,e=n.end,e===void 0&&(e=t),"selectionStart"in r)r.selectionStart=t,r.selectionEnd=Math.min(e,r.value.length);else if(e=(t=r.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var i=r.textContent.length,o=Math.min(n.start,i);n=n.end===void 0?o:Math.min(n.end,i),!e.extend&&o>n&&(i=n,n=o,o=i),i=Fd(r,o);var s=Fd(r,n);i&&s&&(e.rangeCount!==1||e.anchorNode!==i.node||e.anchorOffset!==i.offset||e.focusNode!==s.node||e.focusOffset!==s.offset)&&(t=t.createRange(),t.setStart(i.node,i.offset),e.removeAllRanges(),o>n?(e.addRange(t),e.extend(s.node,s.offset)):(t.setEnd(s.node,s.offset),e.addRange(t)))}}for(t=[],e=r;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof r.focus=="function"&&r.focus(),r=0;r=document.documentMode,Dn=null,Uu=null,Wi=null,Fu=!1;function jd(e,t,r){var n=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;Fu||Dn==null||Dn!==Is(n)||(n=Dn,"selectionStart"in n&&tf(n)?n={start:n.selectionStart,end:n.selectionEnd}:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection(),n={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}),Wi&&io(Wi,n)||(Wi=n,n=js(Uu,"onSelect"),0Fn||(e.current=Wu[Fn],Wu[Fn]=null,Fn--)}function we(e,t){Fn++,Wu[Fn]=e.current,e.current=t}var Yr={},Je=Jr(Yr),mt=Jr(!1),_n=Yr;function ci(e,t){var r=e.type.contextTypes;if(!r)return Yr;var n=e.stateNode;if(n&&n.__reactInternalMemoizedUnmaskedChildContext===t)return n.__reactInternalMemoizedMaskedChildContext;var i={},o;for(o in r)i[o]=t[o];return n&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function gt(e){return e=e.childContextTypes,e!=null}function qs(){xe(mt),xe(Je)}function Qd(e,t,r){if(Je.current!==Yr)throw Error(k(168));we(Je,t),we(mt,r)}function Mg(e,t,r){var n=e.stateNode;if(t=t.childContextTypes,typeof n.getChildContext!="function")return r;n=n.getChildContext();for(var i in n)if(!(i in t))throw Error(k(108,t_(e)||"Unknown",i));return Ae({},r,n)}function Gs(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Yr,_n=Je.current,we(Je,e),we(mt,mt.current),!0}function Xd(e,t,r){var n=e.stateNode;if(!n)throw Error(k(169));r?(e=Mg(e,t,_n),n.__reactInternalMemoizedMergedChildContext=e,xe(mt),xe(Je),we(Je,e)):xe(mt),we(mt,r)}var pr=null,ma=!1,tl=!1;function Bg(e){pr===null?pr=[e]:pr.push(e)}function vw(e){ma=!0,Bg(e)}function en(){if(!tl&&pr!==null){tl=!0;var e=0,t=ye;try{var r=pr;for(ye=1;e>=s,i-=s,mr=1<<32-Kt(t)+i|r<x?(O=P,P=null):O=P.sibling;var b=g(c,P,v[x],_);if(b===null){P===null&&(P=O);break}e&&P&&b.alternate===null&&t(c,P),f=o(b,f,x),S===null?w=b:S.sibling=b,S=b,P=O}if(x===v.length)return r(c,P),be&&an(c,x),w;if(P===null){for(;xx?(O=P,P=null):O=P.sibling;var A=g(c,P,b.value,_);if(A===null){P===null&&(P=O);break}e&&P&&A.alternate===null&&t(c,P),f=o(A,f,x),S===null?w=A:S.sibling=A,S=A,P=O}if(b.done)return r(c,P),be&&an(c,x),w;if(P===null){for(;!b.done;x++,b=v.next())b=p(c,b.value,_),b!==null&&(f=o(b,f,x),S===null?w=b:S.sibling=b,S=b);return be&&an(c,x),w}for(P=n(c,P);!b.done;x++,b=v.next())b=m(P,c,x,b.value,_),b!==null&&(e&&b.alternate!==null&&P.delete(b.key===null?x:b.key),f=o(b,f,x),S===null?w=b:S.sibling=b,S=b);return e&&P.forEach(function(M){return t(c,M)}),be&&an(c,x),w}function E(c,f,v,_){if(typeof v=="object"&&v!==null&&v.type===Mn&&v.key===null&&(v=v.props.children),typeof v=="object"&&v!==null){switch(v.$$typeof){case Mo:e:{for(var w=v.key,S=f;S!==null;){if(S.key===w){if(w=v.type,w===Mn){if(S.tag===7){r(c,S.sibling),f=i(S,v.props.children),f.return=c,c=f;break e}}else if(S.elementType===w||typeof w=="object"&&w!==null&&w.$$typeof===Or&&rh(w)===S.type){r(c,S.sibling),f=i(S,v.props),f.ref=Oi(c,S,v),f.return=c,c=f;break e}r(c,S);break}else t(c,S);S=S.sibling}v.type===Mn?(f=vn(v.props.children,c.mode,_,v.key),f.return=c,c=f):(_=Ns(v.type,v.key,v.props,null,c.mode,_),_.ref=Oi(c,f,v),_.return=c,c=_)}return s(c);case In:e:{for(S=v.key;f!==null;){if(f.key===S)if(f.tag===4&&f.stateNode.containerInfo===v.containerInfo&&f.stateNode.implementation===v.implementation){r(c,f.sibling),f=i(f,v.children||[]),f.return=c,c=f;break e}else{r(c,f);break}else t(c,f);f=f.sibling}f=ul(v,c.mode,_),f.return=c,c=f}return s(c);case Or:return S=v._init,E(c,f,S(v._payload),_)}if(Hi(v))return y(c,f,v,_);if(Ri(v))return h(c,f,v,_);Wo(c,v)}return typeof v=="string"&&v!==""||typeof v=="number"?(v=""+v,f!==null&&f.tag===6?(r(c,f.sibling),f=i(f,v),f.return=c,c=f):(r(c,f),f=ll(v,c.mode,_),f.return=c,c=f),s(c)):r(c,f)}return E}var di=Gg(!0),Vg=Gg(!1),Ro={},ur=Jr(Ro),lo=Jr(Ro),uo=Jr(Ro);function fn(e){if(e===Ro)throw Error(k(174));return e}function ff(e,t){switch(we(uo,t),we(lo,e),we(ur,Ro),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Nu(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=Nu(t,e)}xe(ur),we(ur,t)}function hi(){xe(ur),xe(lo),xe(uo)}function Wg(e){fn(uo.current);var t=fn(ur.current),r=Nu(t,e.type);t!==r&&(we(lo,e),we(ur,r))}function df(e){lo.current===e&&(xe(ur),xe(lo))}var Ne=Jr(0);function Ks(e){for(var t=e;t!==null;){if(t.tag===13){var r=t.memoizedState;if(r!==null&&(r=r.dehydrated,r===null||r.data==="$?"||r.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var rl=[];function hf(){for(var e=0;er?r:4,e(!0);var n=nl.transition;nl.transition={};try{e(!1),t()}finally{ye=r,nl.transition=n}}function ly(){return Ht().memoizedState}function Sw(e,t,r){var n=Qr(e);if(r={lane:n,action:r,hasEagerState:!1,eagerState:null,next:null},uy(e))cy(t,r);else if(r=Fg(e,t,r,n),r!==null){var i=it();Yt(r,e,n,i),fy(r,t,n)}}function Pw(e,t,r){var n=Qr(e),i={lane:n,action:r,hasEagerState:!1,eagerState:null,next:null};if(uy(e))cy(t,i);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var s=t.lastRenderedState,a=o(s,r);if(i.hasEagerState=!0,i.eagerState=a,Zt(a,s)){var l=t.interleaved;l===null?(i.next=i,uf(t)):(i.next=l.next,l.next=i),t.interleaved=i;return}}catch{}finally{}r=Fg(e,t,i,n),r!==null&&(i=it(),Yt(r,e,n,i),fy(r,t,n))}}function uy(e){var t=e.alternate;return e===Oe||t!==null&&t===Oe}function cy(e,t){$i=Ys=!0;var r=e.pending;r===null?t.next=t:(t.next=r.next,r.next=t),e.pending=t}function fy(e,t,r){if(r&4194240){var n=t.lanes;n&=e.pendingLanes,r|=n,t.lanes=r,Qc(e,r)}}var Zs={readContext:Dt,useCallback:Ke,useContext:Ke,useEffect:Ke,useImperativeHandle:Ke,useInsertionEffect:Ke,useLayoutEffect:Ke,useMemo:Ke,useReducer:Ke,useRef:Ke,useState:Ke,useDebugValue:Ke,useDeferredValue:Ke,useTransition:Ke,useMutableSource:Ke,useSyncExternalStore:Ke,useId:Ke,unstable_isNewReconciler:!1},xw={readContext:Dt,useCallback:function(e,t){return rr().memoizedState=[e,t===void 0?null:t],e},useContext:Dt,useEffect:ih,useImperativeHandle:function(e,t,r){return r=r!=null?r.concat([e]):null,Rs(4194308,4,ny.bind(null,t,e),r)},useLayoutEffect:function(e,t){return Rs(4194308,4,e,t)},useInsertionEffect:function(e,t){return Rs(4,2,e,t)},useMemo:function(e,t){var r=rr();return t=t===void 0?null:t,e=e(),r.memoizedState=[e,t],e},useReducer:function(e,t,r){var n=rr();return t=r!==void 0?r(t):t,n.memoizedState=n.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},n.queue=e,e=e.dispatch=Sw.bind(null,Oe,e),[n.memoizedState,e]},useRef:function(e){var t=rr();return e={current:e},t.memoizedState=e},useState:nh,useDebugValue:vf,useDeferredValue:function(e){return rr().memoizedState=e},useTransition:function(){var e=nh(!1),t=e[0];return e=Ew.bind(null,e[1]),rr().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,r){var n=Oe,i=rr();if(be){if(r===void 0)throw Error(k(407));r=r()}else{if(r=t(),Ve===null)throw Error(k(349));En&30||Xg(n,t,r)}i.memoizedState=r;var o={value:r,getSnapshot:t};return i.queue=o,ih(Yg.bind(null,n,o,e),[e]),n.flags|=2048,ho(9,Kg.bind(null,n,o,r,t),void 0,null),r},useId:function(){var e=rr(),t=Ve.identifierPrefix;if(be){var r=gr,n=mr;r=(n&~(1<<32-Kt(n)-1)).toString(32)+r,t=":"+t+"R"+r,r=co++,0<\/script>",e=e.removeChild(e.firstChild)):typeof n.is=="string"?e=s.createElement(r,{is:n.is}):(e=s.createElement(r),r==="select"&&(s=e,n.multiple?s.multiple=!0:n.size&&(s.size=n.size))):e=s.createElementNS(e,r),e[sr]=t,e[ao]=n,wy(e,t,!1,!1),t.stateNode=e;e:{switch(s=Au(r,n),r){case"dialog":Pe("cancel",e),Pe("close",e),i=n;break;case"iframe":case"object":case"embed":Pe("load",e),i=n;break;case"video":case"audio":for(i=0;imi&&(t.flags|=128,n=!0,Ai(o,!1),t.lanes=4194304)}else{if(!n)if(e=Ks(s),e!==null){if(t.flags|=128,n=!0,r=e.updateQueue,r!==null&&(t.updateQueue=r,t.flags|=4),Ai(o,!0),o.tail===null&&o.tailMode==="hidden"&&!s.alternate&&!be)return Ye(t),null}else 2*ke()-o.renderingStartTime>mi&&r!==1073741824&&(t.flags|=128,n=!0,Ai(o,!1),t.lanes=4194304);o.isBackwards?(s.sibling=t.child,t.child=s):(r=o.last,r!==null?r.sibling=s:t.child=s,o.last=s)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=ke(),t.sibling=null,r=Ne.current,we(Ne,n?r&1|2:r&1),t):(Ye(t),null);case 22:case 23:return xf(),n=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==n&&(t.flags|=8192),n&&t.mode&1?St&1073741824&&(Ye(t),t.subtreeFlags&6&&(t.flags|=8192)):Ye(t),null;case 24:return null;case 25:return null}throw Error(k(156,t.tag))}function Lw(e,t){switch(nf(t),t.tag){case 1:return gt(t.type)&&qs(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return hi(),xe(mt),xe(Je),hf(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return df(t),null;case 13:if(xe(Ne),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(k(340));fi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return xe(Ne),null;case 4:return hi(),null;case 10:return lf(t.type._context),null;case 22:case 23:return xf(),null;case 24:return null;default:return null}}var Qo=!1,Ze=!1,kw=typeof WeakSet=="function"?WeakSet:Set,H=null;function Gn(e,t){var r=e.ref;if(r!==null)if(typeof r=="function")try{r(null)}catch(n){Le(e,t,n)}else r.current=null}function ic(e,t,r){try{r()}catch(n){Le(e,t,n)}}var hh=!1;function Iw(e,t){if(ju=Us,e=Tg(),tf(e)){if("selectionStart"in e)var r={start:e.selectionStart,end:e.selectionEnd};else e:{r=(r=e.ownerDocument)&&r.defaultView||window;var n=r.getSelection&&r.getSelection();if(n&&n.rangeCount!==0){r=n.anchorNode;var i=n.anchorOffset,o=n.focusNode;n=n.focusOffset;try{r.nodeType,o.nodeType}catch{r=null;break e}var s=0,a=-1,l=-1,u=0,d=0,p=e,g=null;t:for(;;){for(var m;p!==r||i!==0&&p.nodeType!==3||(a=s+i),p!==o||n!==0&&p.nodeType!==3||(l=s+n),p.nodeType===3&&(s+=p.nodeValue.length),(m=p.firstChild)!==null;)g=p,p=m;for(;;){if(p===e)break t;if(g===r&&++u===i&&(a=s),g===o&&++d===n&&(l=s),(m=p.nextSibling)!==null)break;p=g,g=p.parentNode}p=m}r=a===-1||l===-1?null:{start:a,end:l}}else r=null}r=r||{start:0,end:0}}else r=null;for(zu={focusedElem:e,selectionRange:r},Us=!1,H=t;H!==null;)if(t=H,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,H=e;else for(;H!==null;){t=H;try{var y=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(y!==null){var h=y.memoizedProps,E=y.memoizedState,c=t.stateNode,f=c.getSnapshotBeforeUpdate(t.elementType===t.type?h:qt(t.type,h),E);c.__reactInternalSnapshotBeforeUpdate=f}break;case 3:var v=t.stateNode.containerInfo;v.nodeType===1?v.textContent="":v.nodeType===9&&v.documentElement&&v.removeChild(v.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(k(163))}}catch(_){Le(t,t.return,_)}if(e=t.sibling,e!==null){e.return=t.return,H=e;break}H=t.return}return y=hh,hh=!1,y}function Qi(e,t,r){var n=t.updateQueue;if(n=n!==null?n.lastEffect:null,n!==null){var i=n=n.next;do{if((i.tag&e)===e){var o=i.destroy;i.destroy=void 0,o!==void 0&&ic(t,r,o)}i=i.next}while(i!==n)}}function va(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var r=t=t.next;do{if((r.tag&e)===e){var n=r.create;r.destroy=n()}r=r.next}while(r!==t)}}function oc(e){var t=e.ref;if(t!==null){var r=e.stateNode;switch(e.tag){case 5:e=r;break;default:e=r}typeof t=="function"?t(e):t.current=e}}function Py(e){var t=e.alternate;t!==null&&(e.alternate=null,Py(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[sr],delete t[ao],delete t[Vu],delete t[gw],delete t[yw])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function xy(e){return e.tag===5||e.tag===3||e.tag===4}function ph(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||xy(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function sc(e,t,r){var n=e.tag;if(n===5||n===6)e=e.stateNode,t?r.nodeType===8?r.parentNode.insertBefore(e,t):r.insertBefore(e,t):(r.nodeType===8?(t=r.parentNode,t.insertBefore(e,r)):(t=r,t.appendChild(e)),r=r._reactRootContainer,r!=null||t.onclick!==null||(t.onclick=zs));else if(n!==4&&(e=e.child,e!==null))for(sc(e,t,r),e=e.sibling;e!==null;)sc(e,t,r),e=e.sibling}function ac(e,t,r){var n=e.tag;if(n===5||n===6)e=e.stateNode,t?r.insertBefore(e,t):r.appendChild(e);else if(n!==4&&(e=e.child,e!==null))for(ac(e,t,r),e=e.sibling;e!==null;)ac(e,t,r),e=e.sibling}var We=null,$t=!1;function Cr(e,t,r){for(r=r.child;r!==null;)Ry(e,t,r),r=r.sibling}function Ry(e,t,r){if(lr&&typeof lr.onCommitFiberUnmount=="function")try{lr.onCommitFiberUnmount(ca,r)}catch{}switch(r.tag){case 5:Ze||Gn(r,t);case 6:var n=We,i=$t;We=null,Cr(e,t,r),We=n,$t=i,We!==null&&($t?(e=We,r=r.stateNode,e.nodeType===8?e.parentNode.removeChild(r):e.removeChild(r)):We.removeChild(r.stateNode));break;case 18:We!==null&&($t?(e=We,r=r.stateNode,e.nodeType===8?el(e.parentNode,r):e.nodeType===1&&el(e,r),ro(e)):el(We,r.stateNode));break;case 4:n=We,i=$t,We=r.stateNode.containerInfo,$t=!0,Cr(e,t,r),We=n,$t=i;break;case 0:case 11:case 14:case 15:if(!Ze&&(n=r.updateQueue,n!==null&&(n=n.lastEffect,n!==null))){i=n=n.next;do{var o=i,s=o.destroy;o=o.tag,s!==void 0&&(o&2||o&4)&&ic(r,t,s),i=i.next}while(i!==n)}Cr(e,t,r);break;case 1:if(!Ze&&(Gn(r,t),n=r.stateNode,typeof n.componentWillUnmount=="function"))try{n.props=r.memoizedProps,n.state=r.memoizedState,n.componentWillUnmount()}catch(a){Le(r,t,a)}Cr(e,t,r);break;case 21:Cr(e,t,r);break;case 22:r.mode&1?(Ze=(n=Ze)||r.memoizedState!==null,Cr(e,t,r),Ze=n):Cr(e,t,r);break;default:Cr(e,t,r)}}function mh(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var r=e.stateNode;r===null&&(r=e.stateNode=new kw),t.forEach(function(n){var i=qw.bind(null,e,n);r.has(n)||(r.add(n),n.then(i,i))})}}function jt(e,t){var r=t.deletions;if(r!==null)for(var n=0;ni&&(i=s),n&=~o}if(n=i,n=ke()-n,n=(120>n?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Bw(n/1960))-n,10e?16:e,jr===null)var n=!1;else{if(e=jr,jr=null,ta=0,ue&6)throw Error(k(331));var i=ue;for(ue|=4,H=e.current;H!==null;){var o=H,s=o.child;if(H.flags&16){var a=o.deletions;if(a!==null){for(var l=0;lke()-Sf?yn(e,0):Ef|=r),yt(e,t)}function ky(e,t){t===0&&(e.mode&1?(t=Uo,Uo<<=1,!(Uo&130023424)&&(Uo=4194304)):t=1);var r=it();e=wr(e,t),e!==null&&(So(e,t,r),yt(e,r))}function zw(e){var t=e.memoizedState,r=0;t!==null&&(r=t.retryLane),ky(e,r)}function qw(e,t){var r=0;switch(e.tag){case 13:var n=e.stateNode,i=e.memoizedState;i!==null&&(r=i.retryLane);break;case 19:n=e.stateNode;break;default:throw Error(k(314))}n!==null&&n.delete(t),ky(e,r)}var Iy;Iy=function(e,t,r){if(e!==null)if(e.memoizedProps!==t.pendingProps||mt.current)ht=!0;else{if(!(e.lanes&r)&&!(t.flags&128))return ht=!1,Ow(e,t,r);ht=!!(e.flags&131072)}else ht=!1,be&&t.flags&1048576&&Dg(t,Ws,t.index);switch(t.lanes=0,t.tag){case 2:var n=t.type;Ts(e,t),e=t.pendingProps;var i=ci(t,Je.current);Kn(t,r),i=mf(null,t,n,e,i,r);var o=gf();return t.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,gt(n)?(o=!0,Gs(t)):o=!1,t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,cf(t),i.updater=ga,t.stateNode=i,i._reactInternals=t,Yu(t,n,e,r),t=ec(null,t,n,!0,o,r)):(t.tag=0,be&&o&&rf(t),rt(null,t,i,r),t=t.child),t;case 16:n=t.elementType;e:{switch(Ts(e,t),e=t.pendingProps,i=n._init,n=i(n._payload),t.type=n,i=t.tag=Vw(n),e=qt(n,e),i){case 0:t=Ju(null,t,n,e,r);break e;case 1:t=ch(null,t,n,e,r);break e;case 11:t=lh(null,t,n,e,r);break e;case 14:t=uh(null,t,n,qt(n.type,e),r);break e}throw Error(k(306,n,""))}return t;case 0:return n=t.type,i=t.pendingProps,i=t.elementType===n?i:qt(n,i),Ju(e,t,n,i,r);case 1:return n=t.type,i=t.pendingProps,i=t.elementType===n?i:qt(n,i),ch(e,t,n,i,r);case 3:e:{if(yy(t),e===null)throw Error(k(387));n=t.pendingProps,o=t.memoizedState,i=o.element,jg(e,t),Xs(t,n,null,r);var s=t.memoizedState;if(n=s.element,o.isDehydrated)if(o={element:n,isDehydrated:!1,cache:s.cache,pendingSuspenseBoundaries:s.pendingSuspenseBoundaries,transitions:s.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){i=pi(Error(k(423)),t),t=fh(e,t,n,r,i);break e}else if(n!==i){i=pi(Error(k(424)),t),t=fh(e,t,n,r,i);break e}else for(Pt=Vr(t.stateNode.containerInfo.firstChild),xt=t,be=!0,Qt=null,r=Vg(t,null,n,r),t.child=r;r;)r.flags=r.flags&-3|4096,r=r.sibling;else{if(fi(),n===i){t=Er(e,t,r);break e}rt(e,t,n,r)}t=t.child}return t;case 5:return Wg(t),e===null&&Qu(t),n=t.type,i=t.pendingProps,o=e!==null?e.memoizedProps:null,s=i.children,qu(n,i)?s=null:o!==null&&qu(n,o)&&(t.flags|=32),gy(e,t),rt(e,t,s,r),t.child;case 6:return e===null&&Qu(t),null;case 13:return vy(e,t,r);case 4:return ff(t,t.stateNode.containerInfo),n=t.pendingProps,e===null?t.child=di(t,null,n,r):rt(e,t,n,r),t.child;case 11:return n=t.type,i=t.pendingProps,i=t.elementType===n?i:qt(n,i),lh(e,t,n,i,r);case 7:return rt(e,t,t.pendingProps,r),t.child;case 8:return rt(e,t,t.pendingProps.children,r),t.child;case 12:return rt(e,t,t.pendingProps.children,r),t.child;case 10:e:{if(n=t.type._context,i=t.pendingProps,o=t.memoizedProps,s=i.value,we($s,n._currentValue),n._currentValue=s,o!==null)if(Zt(o.value,s)){if(o.children===i.children&&!mt.current){t=Er(e,t,r);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var a=o.dependencies;if(a!==null){s=o.child;for(var l=a.firstContext;l!==null;){if(l.context===n){if(o.tag===1){l=yr(-1,r&-r),l.tag=2;var u=o.updateQueue;if(u!==null){u=u.shared;var d=u.pending;d===null?l.next=l:(l.next=d.next,d.next=l),u.pending=l}}o.lanes|=r,l=o.alternate,l!==null&&(l.lanes|=r),Xu(o.return,r,t),a.lanes|=r;break}l=l.next}}else if(o.tag===10)s=o.type===t.type?null:o.child;else if(o.tag===18){if(s=o.return,s===null)throw Error(k(341));s.lanes|=r,a=s.alternate,a!==null&&(a.lanes|=r),Xu(s,r,t),s=o.sibling}else s=o.child;if(s!==null)s.return=o;else for(s=o;s!==null;){if(s===t){s=null;break}if(o=s.sibling,o!==null){o.return=s.return,s=o;break}s=s.return}o=s}rt(e,t,i.children,r),t=t.child}return t;case 9:return i=t.type,n=t.pendingProps.children,Kn(t,r),i=Dt(i),n=n(i),t.flags|=1,rt(e,t,n,r),t.child;case 14:return n=t.type,i=qt(n,t.pendingProps),i=qt(n.type,i),uh(e,t,n,i,r);case 15:return py(e,t,t.type,t.pendingProps,r);case 17:return n=t.type,i=t.pendingProps,i=t.elementType===n?i:qt(n,i),Ts(e,t),t.tag=1,gt(n)?(e=!0,Gs(t)):e=!1,Kn(t,r),qg(t,n,i),Yu(t,n,i,r),ec(null,t,n,!0,e,r);case 19:return _y(e,t,r);case 22:return my(e,t,r)}throw Error(k(156,t.tag))};function My(e,t){return ag(e,t)}function Gw(e,t,r,n){this.tag=e,this.key=r,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=n,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Mt(e,t,r,n){return new Gw(e,t,r,n)}function Tf(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Vw(e){if(typeof e=="function")return Tf(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Gc)return 11;if(e===Vc)return 14}return 2}function Xr(e,t){var r=e.alternate;return r===null?(r=Mt(e.tag,t,e.key,e.mode),r.elementType=e.elementType,r.type=e.type,r.stateNode=e.stateNode,r.alternate=e,e.alternate=r):(r.pendingProps=t,r.type=e.type,r.flags=0,r.subtreeFlags=0,r.deletions=null),r.flags=e.flags&14680064,r.childLanes=e.childLanes,r.lanes=e.lanes,r.child=e.child,r.memoizedProps=e.memoizedProps,r.memoizedState=e.memoizedState,r.updateQueue=e.updateQueue,t=e.dependencies,r.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},r.sibling=e.sibling,r.index=e.index,r.ref=e.ref,r}function Ns(e,t,r,n,i,o){var s=2;if(n=e,typeof e=="function")Tf(e)&&(s=1);else if(typeof e=="string")s=5;else e:switch(e){case Mn:return vn(r.children,i,o,t);case qc:s=8,i|=8;break;case Eu:return e=Mt(12,r,t,i|2),e.elementType=Eu,e.lanes=o,e;case Su:return e=Mt(13,r,t,i),e.elementType=Su,e.lanes=o,e;case Pu:return e=Mt(19,r,t,i),e.elementType=Pu,e.lanes=o,e;case Gm:return wa(r,i,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case zm:s=10;break e;case qm:s=9;break e;case Gc:s=11;break e;case Vc:s=14;break e;case Or:s=16,n=null;break e}throw Error(k(130,e==null?e:typeof e,""))}return t=Mt(s,r,t,i),t.elementType=e,t.type=n,t.lanes=o,t}function vn(e,t,r,n){return e=Mt(7,e,n,t),e.lanes=r,e}function wa(e,t,r,n){return e=Mt(22,e,n,t),e.elementType=Gm,e.lanes=r,e.stateNode={isHidden:!1},e}function ll(e,t,r){return e=Mt(6,e,null,t),e.lanes=r,e}function ul(e,t,r){return t=Mt(4,e.children!==null?e.children:[],e.key,t),t.lanes=r,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Ww(e,t,r,n,i){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=qa(0),this.expirationTimes=qa(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=qa(0),this.identifierPrefix=n,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function Cf(e,t,r,n,i,o,s,a,l){return e=new Ww(e,t,r,a,l),t===1?(t=1,o===!0&&(t|=8)):t=0,o=Mt(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:n,isDehydrated:r,cache:null,transitions:null,pendingSuspenseBoundaries:null},cf(o),e}function $w(e,t,r){var n=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Uy)}catch(e){console.error(e)}}Uy(),Dm.exports=Tt;var Af=Dm.exports;const fP=xm(Af);var Ph=Af;_u.createRoot=Ph.createRoot,_u.hydrateRoot=Ph.hydrateRoot;const Zw="modulepreload",Jw=function(e,t){return new URL(e,t).href},xh={},Lf=function(t,r,n){if(!r||r.length===0)return t();const i=document.getElementsByTagName("link");return Promise.all(r.map(o=>{if(o=Jw(o,n),o in xh)return;xh[o]=!0;const s=o.endsWith(".css"),a=s?'[rel="stylesheet"]':"";if(!!n)for(let d=i.length-1;d>=0;d--){const p=i[d];if(p.href===o&&(!s||p.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${o}"]${a}`))return;const u=document.createElement("link");if(u.rel=s?"stylesheet":Zw,s||(u.as="script",u.crossOrigin=""),u.href=o,document.head.appendChild(u),s)return new Promise((d,p)=>{u.addEventListener("load",d),u.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${o}`)))})})).then(()=>t()).catch(o=>{const s=new Event("vite:preloadError",{cancelable:!0});if(s.payload=o,window.dispatchEvent(s),!s.defaultPrevented)throw o})};var Fy={exports:{}},jy={};function pt(){return pt=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Os(e,t,r){return tE()?Os=Reflect.construct.bind():Os=function(i,o,s){var a=[null];a.push.apply(a,o);var l=Function.bind.apply(i,a),u=new l;return s&&mo(u,s.prototype),u},Os.apply(null,arguments)}function rE(e){return Function.toString.call(e).indexOf("[native code]")!==-1}function hc(e){var t=typeof Map=="function"?new Map:void 0;return hc=function(n){if(n===null||!rE(n))return n;if(typeof n!="function")throw new TypeError("Super expression must either be null or a function");if(typeof t<"u"){if(t.has(n))return t.get(n);t.set(n,i)}function i(){return Os(n,arguments,dc(this).constructor)}return i.prototype=Object.create(n.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),mo(i,n)},hc(e)}function Ra(e,t){if(e==null)return{};var r={},n=Object.keys(e),i,o;for(o=0;o=0)&&(r[i]=e[i]);return r}var $e;(function(e){e.MISSING_MESSAGE="MISSING_MESSAGE",e.MISSING_FORMAT="MISSING_FORMAT",e.ENVIRONMENT_FALLBACK="ENVIRONMENT_FALLBACK",e.INSUFFICIENT_PATH="INSUFFICIENT_PATH",e.INVALID_MESSAGE="INVALID_MESSAGE",e.INVALID_KEY="INVALID_KEY",e.FORMATTING_ERROR="FORMATTING_ERROR"})($e||($e={}));var Xt=function(e){eE(t,e);function t(r,n){var i,o=r;return n&&(o+=": "+n),i=e.call(this,o)||this,i.code=void 0,i.originalMessage=void 0,i.code=r,n&&(i.originalMessage=n),i}return t}(hc(Error)),pc=function(e,t){return pc=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,n){r.__proto__=n}||function(r,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[i]=n[i])},pc(e,t)};function Ta(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");pc(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}var de=function(){return de=Object.assign||function(t){for(var r,n=1,i=arguments.length;n0}),r=[],n=0,i=t;n1)throw new RangeError("integer-width stems only accept a single optional option");i.options[0].replace(cE,function(l,u,d,p,g,m){if(u)t.minimumIntegerDigits=d.length;else{if(p&&g)throw new Error("We currently do not support maximum integer digits");if(m)throw new Error("We currently do not support exact integer digits")}return""});continue}if(Yy.test(i.stem)){t.minimumIntegerDigits=i.stem.length;continue}if(Th.test(i.stem)){if(i.options.length>1)throw new RangeError("Fraction-precision stems only accept a single optional option");i.stem.replace(Th,function(l,u,d,p,g,m){return d==="*"?t.minimumFractionDigits=u.length:p&&p[0]==="#"?t.maximumFractionDigits=p.length:g&&m?(t.minimumFractionDigits=g.length,t.maximumFractionDigits=g.length+m.length):(t.minimumFractionDigits=u.length,t.maximumFractionDigits=u.length),""});var o=i.options[0];o==="w"?t=de(de({},t),{trailingZeroDisplay:"stripIfInteger"}):o&&(t=de(de({},t),Ch(o)));continue}if(Ky.test(i.stem)){t=de(de({},t),Ch(i.stem));continue}var s=Zy(i.stem);s&&(t=de(de({},t),s));var a=fE(i.stem);a&&(t=de(de({},t),a))}return t}var Yo={AX:["H"],BQ:["H"],CP:["H"],CZ:["H"],DK:["H"],FI:["H"],ID:["H"],IS:["H"],ML:["H"],NE:["H"],RU:["H"],SE:["H"],SJ:["H"],SK:["H"],AS:["h","H"],BT:["h","H"],DJ:["h","H"],ER:["h","H"],GH:["h","H"],IN:["h","H"],LS:["h","H"],PG:["h","H"],PW:["h","H"],SO:["h","H"],TO:["h","H"],VU:["h","H"],WS:["h","H"],"001":["H","h"],AL:["h","H","hB"],TD:["h","H","hB"],"ca-ES":["H","h","hB"],CF:["H","h","hB"],CM:["H","h","hB"],"fr-CA":["H","h","hB"],"gl-ES":["H","h","hB"],"it-CH":["H","h","hB"],"it-IT":["H","h","hB"],LU:["H","h","hB"],NP:["H","h","hB"],PF:["H","h","hB"],SC:["H","h","hB"],SM:["H","h","hB"],SN:["H","h","hB"],TF:["H","h","hB"],VA:["H","h","hB"],CY:["h","H","hb","hB"],GR:["h","H","hb","hB"],CO:["h","H","hB","hb"],DO:["h","H","hB","hb"],KP:["h","H","hB","hb"],KR:["h","H","hB","hb"],NA:["h","H","hB","hb"],PA:["h","H","hB","hb"],PR:["h","H","hB","hb"],VE:["h","H","hB","hb"],AC:["H","h","hb","hB"],AI:["H","h","hb","hB"],BW:["H","h","hb","hB"],BZ:["H","h","hb","hB"],CC:["H","h","hb","hB"],CK:["H","h","hb","hB"],CX:["H","h","hb","hB"],DG:["H","h","hb","hB"],FK:["H","h","hb","hB"],GB:["H","h","hb","hB"],GG:["H","h","hb","hB"],GI:["H","h","hb","hB"],IE:["H","h","hb","hB"],IM:["H","h","hb","hB"],IO:["H","h","hb","hB"],JE:["H","h","hb","hB"],LT:["H","h","hb","hB"],MK:["H","h","hb","hB"],MN:["H","h","hb","hB"],MS:["H","h","hb","hB"],NF:["H","h","hb","hB"],NG:["H","h","hb","hB"],NR:["H","h","hb","hB"],NU:["H","h","hb","hB"],PN:["H","h","hb","hB"],SH:["H","h","hb","hB"],SX:["H","h","hb","hB"],TA:["H","h","hb","hB"],ZA:["H","h","hb","hB"],"af-ZA":["H","h","hB","hb"],AR:["H","h","hB","hb"],CL:["H","h","hB","hb"],CR:["H","h","hB","hb"],CU:["H","h","hB","hb"],EA:["H","h","hB","hb"],"es-BO":["H","h","hB","hb"],"es-BR":["H","h","hB","hb"],"es-EC":["H","h","hB","hb"],"es-ES":["H","h","hB","hb"],"es-GQ":["H","h","hB","hb"],"es-PE":["H","h","hB","hb"],GT:["H","h","hB","hb"],HN:["H","h","hB","hb"],IC:["H","h","hB","hb"],KG:["H","h","hB","hb"],KM:["H","h","hB","hb"],LK:["H","h","hB","hb"],MA:["H","h","hB","hb"],MX:["H","h","hB","hb"],NI:["H","h","hB","hb"],PY:["H","h","hB","hb"],SV:["H","h","hB","hb"],UY:["H","h","hB","hb"],JP:["H","h","K"],AD:["H","hB"],AM:["H","hB"],AO:["H","hB"],AT:["H","hB"],AW:["H","hB"],BE:["H","hB"],BF:["H","hB"],BJ:["H","hB"],BL:["H","hB"],BR:["H","hB"],CG:["H","hB"],CI:["H","hB"],CV:["H","hB"],DE:["H","hB"],EE:["H","hB"],FR:["H","hB"],GA:["H","hB"],GF:["H","hB"],GN:["H","hB"],GP:["H","hB"],GW:["H","hB"],HR:["H","hB"],IL:["H","hB"],IT:["H","hB"],KZ:["H","hB"],MC:["H","hB"],MD:["H","hB"],MF:["H","hB"],MQ:["H","hB"],MZ:["H","hB"],NC:["H","hB"],NL:["H","hB"],PM:["H","hB"],PT:["H","hB"],RE:["H","hB"],RO:["H","hB"],SI:["H","hB"],SR:["H","hB"],ST:["H","hB"],TG:["H","hB"],TR:["H","hB"],WF:["H","hB"],YT:["H","hB"],BD:["h","hB","H"],PK:["h","hB","H"],AZ:["H","hB","h"],BA:["H","hB","h"],BG:["H","hB","h"],CH:["H","hB","h"],GE:["H","hB","h"],LI:["H","hB","h"],ME:["H","hB","h"],RS:["H","hB","h"],UA:["H","hB","h"],UZ:["H","hB","h"],XK:["H","hB","h"],AG:["h","hb","H","hB"],AU:["h","hb","H","hB"],BB:["h","hb","H","hB"],BM:["h","hb","H","hB"],BS:["h","hb","H","hB"],CA:["h","hb","H","hB"],DM:["h","hb","H","hB"],"en-001":["h","hb","H","hB"],FJ:["h","hb","H","hB"],FM:["h","hb","H","hB"],GD:["h","hb","H","hB"],GM:["h","hb","H","hB"],GU:["h","hb","H","hB"],GY:["h","hb","H","hB"],JM:["h","hb","H","hB"],KI:["h","hb","H","hB"],KN:["h","hb","H","hB"],KY:["h","hb","H","hB"],LC:["h","hb","H","hB"],LR:["h","hb","H","hB"],MH:["h","hb","H","hB"],MP:["h","hb","H","hB"],MW:["h","hb","H","hB"],NZ:["h","hb","H","hB"],SB:["h","hb","H","hB"],SG:["h","hb","H","hB"],SL:["h","hb","H","hB"],SS:["h","hb","H","hB"],SZ:["h","hb","H","hB"],TC:["h","hb","H","hB"],TT:["h","hb","H","hB"],UM:["h","hb","H","hB"],US:["h","hb","H","hB"],VC:["h","hb","H","hB"],VG:["h","hb","H","hB"],VI:["h","hb","H","hB"],ZM:["h","hb","H","hB"],BO:["H","hB","h","hb"],EC:["H","hB","h","hb"],ES:["H","hB","h","hb"],GQ:["H","hB","h","hb"],PE:["H","hB","h","hb"],AE:["h","hB","hb","H"],"ar-001":["h","hB","hb","H"],BH:["h","hB","hb","H"],DZ:["h","hB","hb","H"],EG:["h","hB","hb","H"],EH:["h","hB","hb","H"],HK:["h","hB","hb","H"],IQ:["h","hB","hb","H"],JO:["h","hB","hb","H"],KW:["h","hB","hb","H"],LB:["h","hB","hb","H"],LY:["h","hB","hb","H"],MO:["h","hB","hb","H"],MR:["h","hB","hb","H"],OM:["h","hB","hb","H"],PH:["h","hB","hb","H"],PS:["h","hB","hb","H"],QA:["h","hB","hb","H"],SA:["h","hB","hb","H"],SD:["h","hB","hb","H"],SY:["h","hB","hb","H"],TN:["h","hB","hb","H"],YE:["h","hB","hb","H"],AF:["H","hb","hB","h"],LA:["H","hb","hB","h"],CN:["H","hB","hb","h"],LV:["H","hB","hb","h"],TL:["H","hB","hb","h"],"zu-ZA":["H","hB","hb","h"],CD:["hB","H"],IR:["hB","H"],"hi-IN":["hB","h","H"],"kn-IN":["hB","h","H"],"ml-IN":["hB","h","H"],"te-IN":["hB","h","H"],KH:["hB","h","H","hb"],"ta-IN":["hB","h","hb","H"],BN:["hb","hB","h","H"],MY:["hb","hB","h","H"],ET:["hB","hb","h","H"],"gu-IN":["hB","hb","h","H"],"mr-IN":["hB","hb","h","H"],"pa-IN":["hB","hb","h","H"],TW:["hB","hb","h","H"],KE:["hB","hb","H","h"],MM:["hB","hb","H","h"],TZ:["hB","hb","H","h"],UG:["hB","hb","H","h"]};function hE(e,t){for(var r="",n=0;n>1),l="a",u=pE(t);for((u=="H"||u=="k")&&(a=0);a-- >0;)r+=l;for(;s-- >0;)r=u+r}else i==="J"?r+="H":r+=i}return r}function pE(e){var t=e.hourCycle;if(t===void 0&&e.hourCycles&&e.hourCycles.length&&(t=e.hourCycles[0]),t)switch(t){case"h24":return"k";case"h23":return"H";case"h12":return"h";case"h11":return"K";default:throw new Error("Invalid hourCycle")}var r=e.language,n;r!=="root"&&(n=e.maximize().region);var i=Yo[n||""]||Yo[r||""]||Yo["".concat(r,"-001")]||Yo["001"];return i[0]}var fl,mE=new RegExp("^".concat(Xy.source,"*")),gE=new RegExp("".concat(Xy.source,"*$"));function ae(e,t){return{start:e,end:t}}var yE=!!String.prototype.startsWith,vE=!!String.fromCodePoint,_E=!!Object.fromEntries,wE=!!String.prototype.codePointAt,EE=!!String.prototype.trimStart,SE=!!String.prototype.trimEnd,PE=!!Number.isSafeInteger,xE=PE?Number.isSafeInteger:function(e){return typeof e=="number"&&isFinite(e)&&Math.floor(e)===e&&Math.abs(e)<=9007199254740991},gc=!0;try{var RE=ev("([^\\p{White_Space}\\p{Pattern_Syntax}]*)","yu");gc=((fl=RE.exec("a"))===null||fl===void 0?void 0:fl[0])==="a"}catch{gc=!1}var Nh=yE?function(t,r,n){return t.startsWith(r,n)}:function(t,r,n){return t.slice(n,n+r.length)===r},yc=vE?String.fromCodePoint:function(){for(var t=[],r=0;ro;){if(s=t[o++],s>1114111)throw RangeError(s+" is not a valid code point");n+=s<65536?String.fromCharCode(s):String.fromCharCode(((s-=65536)>>10)+55296,s%1024+56320)}return n},Oh=_E?Object.fromEntries:function(t){for(var r={},n=0,i=t;n=n)){var i=t.charCodeAt(r),o;return i<55296||i>56319||r+1===n||(o=t.charCodeAt(r+1))<56320||o>57343?i:(i-55296<<10)+(o-56320)+65536}},TE=EE?function(t){return t.trimStart()}:function(t){return t.replace(mE,"")},CE=SE?function(t){return t.trimEnd()}:function(t){return t.replace(gE,"")};function ev(e,t){return new RegExp(e,t)}var vc;if(gc){var Ah=ev("([^\\p{White_Space}\\p{Pattern_Syntax}]*)","yu");vc=function(t,r){var n;Ah.lastIndex=r;var i=Ah.exec(t);return(n=i[1])!==null&&n!==void 0?n:""}}else vc=function(t,r){for(var n=[];;){var i=Jy(t,r);if(i===void 0||tv(i)||AE(i))break;n.push(i),r+=i>=65536?2:1}return yc.apply(void 0,n)};var bE=function(){function e(t,r){r===void 0&&(r={}),this.message=t,this.position={offset:0,line:1,column:1},this.ignoreTag=!!r.ignoreTag,this.locale=r.locale,this.requiresOtherClause=!!r.requiresOtherClause,this.shouldParseSkeletons=!!r.shouldParseSkeletons}return e.prototype.parse=function(){if(this.offset()!==0)throw Error("parser can only be used once");return this.parseMessage(0,"",!1)},e.prototype.parseMessage=function(t,r,n){for(var i=[];!this.isEOF();){var o=this.char();if(o===123){var s=this.parseArgument(t,n);if(s.err)return s;i.push(s.val)}else{if(o===125&&t>0)break;if(o===35&&(r==="plural"||r==="selectordinal")){var a=this.clonePosition();this.bump(),i.push({type:Ce.pound,location:ae(a,this.clonePosition())})}else if(o===60&&!this.ignoreTag&&this.peek()===47){if(n)break;return this.error(oe.UNMATCHED_CLOSING_TAG,ae(this.clonePosition(),this.clonePosition()))}else if(o===60&&!this.ignoreTag&&_c(this.peek()||0)){var s=this.parseTag(t,r);if(s.err)return s;i.push(s.val)}else{var s=this.parseLiteral(t,r);if(s.err)return s;i.push(s.val)}}}return{val:i,err:null}},e.prototype.parseTag=function(t,r){var n=this.clonePosition();this.bump();var i=this.parseTagName();if(this.bumpSpace(),this.bumpIf("/>"))return{val:{type:Ce.literal,value:"<".concat(i,"/>"),location:ae(n,this.clonePosition())},err:null};if(this.bumpIf(">")){var o=this.parseMessage(t+1,r,!0);if(o.err)return o;var s=o.val,a=this.clonePosition();if(this.bumpIf("")?{val:{type:Ce.tag,value:i,children:s,location:ae(n,this.clonePosition())},err:null}:this.error(oe.INVALID_TAG,ae(a,this.clonePosition())))}else return this.error(oe.UNCLOSED_TAG,ae(n,this.clonePosition()))}else return this.error(oe.INVALID_TAG,ae(n,this.clonePosition()))},e.prototype.parseTagName=function(){var t=this.offset();for(this.bump();!this.isEOF()&&OE(this.char());)this.bump();return this.message.slice(t,this.offset())},e.prototype.parseLiteral=function(t,r){for(var n=this.clonePosition(),i="";;){var o=this.tryParseQuote(r);if(o){i+=o;continue}var s=this.tryParseUnquoted(t,r);if(s){i+=s;continue}var a=this.tryParseLeftAngleBracket();if(a){i+=a;continue}break}var l=ae(n,this.clonePosition());return{val:{type:Ce.literal,value:i,location:l},err:null}},e.prototype.tryParseLeftAngleBracket=function(){return!this.isEOF()&&this.char()===60&&(this.ignoreTag||!NE(this.peek()||0))?(this.bump(),"<"):null},e.prototype.tryParseQuote=function(t){if(this.isEOF()||this.char()!==39)return null;switch(this.peek()){case 39:return this.bump(),this.bump(),"'";case 123:case 60:case 62:case 125:break;case 35:if(t==="plural"||t==="selectordinal")break;return null;default:return null}this.bump();var r=[this.char()];for(this.bump();!this.isEOF();){var n=this.char();if(n===39)if(this.peek()===39)r.push(39),this.bump();else{this.bump();break}else r.push(n);this.bump()}return yc.apply(void 0,r)},e.prototype.tryParseUnquoted=function(t,r){if(this.isEOF())return null;var n=this.char();return n===60||n===123||n===35&&(r==="plural"||r==="selectordinal")||n===125&&t>0?null:(this.bump(),yc(n))},e.prototype.parseArgument=function(t,r){var n=this.clonePosition();if(this.bump(),this.bumpSpace(),this.isEOF())return this.error(oe.EXPECT_ARGUMENT_CLOSING_BRACE,ae(n,this.clonePosition()));if(this.char()===125)return this.bump(),this.error(oe.EMPTY_ARGUMENT,ae(n,this.clonePosition()));var i=this.parseIdentifierIfPossible().value;if(!i)return this.error(oe.MALFORMED_ARGUMENT,ae(n,this.clonePosition()));if(this.bumpSpace(),this.isEOF())return this.error(oe.EXPECT_ARGUMENT_CLOSING_BRACE,ae(n,this.clonePosition()));switch(this.char()){case 125:return this.bump(),{val:{type:Ce.argument,value:i,location:ae(n,this.clonePosition())},err:null};case 44:return this.bump(),this.bumpSpace(),this.isEOF()?this.error(oe.EXPECT_ARGUMENT_CLOSING_BRACE,ae(n,this.clonePosition())):this.parseArgumentOptions(t,r,i,n);default:return this.error(oe.MALFORMED_ARGUMENT,ae(n,this.clonePosition()))}},e.prototype.parseIdentifierIfPossible=function(){var t=this.clonePosition(),r=this.offset(),n=vc(this.message,r),i=r+n.length;this.bumpTo(i);var o=this.clonePosition(),s=ae(t,o);return{value:n,location:s}},e.prototype.parseArgumentOptions=function(t,r,n,i){var o,s=this.clonePosition(),a=this.parseIdentifierIfPossible().value,l=this.clonePosition();switch(a){case"":return this.error(oe.EXPECT_ARGUMENT_TYPE,ae(s,l));case"number":case"date":case"time":{this.bumpSpace();var u=null;if(this.bumpIf(",")){this.bumpSpace();var d=this.clonePosition(),p=this.parseSimpleArgStyleIfPossible();if(p.err)return p;var g=CE(p.val);if(g.length===0)return this.error(oe.EXPECT_ARGUMENT_STYLE,ae(this.clonePosition(),this.clonePosition()));var m=ae(d,this.clonePosition());u={style:g,styleLocation:m}}var y=this.tryParseArgumentClose(i);if(y.err)return y;var h=ae(i,this.clonePosition());if(u&&Nh(u==null?void 0:u.style,"::",0)){var E=TE(u.style.slice(2));if(a==="number"){var p=this.parseNumberSkeletonFromString(E,u.styleLocation);return p.err?p:{val:{type:Ce.number,value:n,location:h,style:p.val},err:null}}else{if(E.length===0)return this.error(oe.EXPECT_DATE_TIME_SKELETON,h);var c=E;this.locale&&(c=hE(E,this.locale));var g={type:gi.dateTime,pattern:c,location:u.styleLocation,parsedOptions:this.shouldParseSkeletons?sE(c):{}},f=a==="date"?Ce.date:Ce.time;return{val:{type:f,value:n,location:h,style:g},err:null}}}return{val:{type:a==="number"?Ce.number:a==="date"?Ce.date:Ce.time,value:n,location:h,style:(o=u==null?void 0:u.style)!==null&&o!==void 0?o:null},err:null}}case"plural":case"selectordinal":case"select":{var v=this.clonePosition();if(this.bumpSpace(),!this.bumpIf(","))return this.error(oe.EXPECT_SELECT_ARGUMENT_OPTIONS,ae(v,de({},v)));this.bumpSpace();var _=this.parseIdentifierIfPossible(),w=0;if(a!=="select"&&_.value==="offset"){if(!this.bumpIf(":"))return this.error(oe.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE,ae(this.clonePosition(),this.clonePosition()));this.bumpSpace();var p=this.tryParseDecimalInteger(oe.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE,oe.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE);if(p.err)return p;this.bumpSpace(),_=this.parseIdentifierIfPossible(),w=p.val}var S=this.tryParsePluralOrSelectOptions(t,a,r,_);if(S.err)return S;var y=this.tryParseArgumentClose(i);if(y.err)return y;var P=ae(i,this.clonePosition());return a==="select"?{val:{type:Ce.select,value:n,options:Oh(S.val),location:P},err:null}:{val:{type:Ce.plural,value:n,options:Oh(S.val),offset:w,pluralType:a==="plural"?"cardinal":"ordinal",location:P},err:null}}default:return this.error(oe.INVALID_ARGUMENT_TYPE,ae(s,l))}},e.prototype.tryParseArgumentClose=function(t){return this.isEOF()||this.char()!==125?this.error(oe.EXPECT_ARGUMENT_CLOSING_BRACE,ae(t,this.clonePosition())):(this.bump(),{val:!0,err:null})},e.prototype.parseSimpleArgStyleIfPossible=function(){for(var t=0,r=this.clonePosition();!this.isEOF();){var n=this.char();switch(n){case 39:{this.bump();var i=this.clonePosition();if(!this.bumpUntil("'"))return this.error(oe.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE,ae(i,this.clonePosition()));this.bump();break}case 123:{t+=1,this.bump();break}case 125:{if(t>0)t-=1;else return{val:this.message.slice(r.offset,this.offset()),err:null};break}default:this.bump();break}}return{val:this.message.slice(r.offset,this.offset()),err:null}},e.prototype.parseNumberSkeletonFromString=function(t,r){var n=[];try{n=lE(t)}catch{return this.error(oe.INVALID_NUMBER_SKELETON,r)}return{val:{type:gi.number,tokens:n,location:r,parsedOptions:this.shouldParseSkeletons?dE(n):{}},err:null}},e.prototype.tryParsePluralOrSelectOptions=function(t,r,n,i){for(var o,s=!1,a=[],l=new Set,u=i.value,d=i.location;;){if(u.length===0){var p=this.clonePosition();if(r!=="select"&&this.bumpIf("=")){var g=this.tryParseDecimalInteger(oe.EXPECT_PLURAL_ARGUMENT_SELECTOR,oe.INVALID_PLURAL_ARGUMENT_SELECTOR);if(g.err)return g;d=ae(p,this.clonePosition()),u=this.message.slice(p.offset,this.offset())}else break}if(l.has(u))return this.error(r==="select"?oe.DUPLICATE_SELECT_ARGUMENT_SELECTOR:oe.DUPLICATE_PLURAL_ARGUMENT_SELECTOR,d);u==="other"&&(s=!0),this.bumpSpace();var m=this.clonePosition();if(!this.bumpIf("{"))return this.error(r==="select"?oe.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT:oe.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT,ae(this.clonePosition(),this.clonePosition()));var y=this.parseMessage(t+1,r,n);if(y.err)return y;var h=this.tryParseArgumentClose(m);if(h.err)return h;a.push([u,{value:y.val,location:ae(m,this.clonePosition())}]),l.add(u),this.bumpSpace(),o=this.parseIdentifierIfPossible(),u=o.value,d=o.location}return a.length===0?this.error(r==="select"?oe.EXPECT_SELECT_ARGUMENT_SELECTOR:oe.EXPECT_PLURAL_ARGUMENT_SELECTOR,ae(this.clonePosition(),this.clonePosition())):this.requiresOtherClause&&!s?this.error(oe.MISSING_OTHER_CLAUSE,ae(this.clonePosition(),this.clonePosition())):{val:a,err:null}},e.prototype.tryParseDecimalInteger=function(t,r){var n=1,i=this.clonePosition();this.bumpIf("+")||this.bumpIf("-")&&(n=-1);for(var o=!1,s=0;!this.isEOF();){var a=this.char();if(a>=48&&a<=57)o=!0,s=s*10+(a-48),this.bump();else break}var l=ae(i,this.clonePosition());return o?(s*=n,xE(s)?{val:s,err:null}:this.error(r,l)):this.error(t,l)},e.prototype.offset=function(){return this.position.offset},e.prototype.isEOF=function(){return this.offset()===this.message.length},e.prototype.clonePosition=function(){return{offset:this.position.offset,line:this.position.line,column:this.position.column}},e.prototype.char=function(){var t=this.position.offset;if(t>=this.message.length)throw Error("out of bound");var r=Jy(this.message,t);if(r===void 0)throw Error("Offset ".concat(t," is at invalid UTF-16 code unit boundary"));return r},e.prototype.error=function(t,r){return{val:null,err:{kind:t,message:this.message,location:r}}},e.prototype.bump=function(){if(!this.isEOF()){var t=this.char();t===10?(this.position.line+=1,this.position.column=1,this.position.offset+=1):(this.position.column+=1,this.position.offset+=t<65536?1:2)}},e.prototype.bumpIf=function(t){if(Nh(this.message,t,this.offset())){for(var r=0;r=0?(this.bumpTo(n),!0):(this.bumpTo(this.message.length),!1)},e.prototype.bumpTo=function(t){if(this.offset()>t)throw Error("targetOffset ".concat(t," must be greater than or equal to the current offset ").concat(this.offset()));for(t=Math.min(t,this.message.length);;){var r=this.offset();if(r===t)break;if(r>t)throw Error("targetOffset ".concat(t," is at invalid UTF-16 code unit boundary"));if(this.bump(),this.isEOF())break}},e.prototype.bumpSpace=function(){for(;!this.isEOF()&&tv(this.char());)this.bump()},e.prototype.peek=function(){if(this.isEOF())return null;var t=this.char(),r=this.offset(),n=this.message.charCodeAt(r+(t>=65536?2:1));return n??null},e}();function _c(e){return e>=97&&e<=122||e>=65&&e<=90}function NE(e){return _c(e)||e===47}function OE(e){return e===45||e===46||e>=48&&e<=57||e===95||e>=97&&e<=122||e>=65&&e<=90||e==183||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=893||e>=895&&e<=8191||e>=8204&&e<=8205||e>=8255&&e<=8256||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}function tv(e){return e>=9&&e<=13||e===32||e===133||e>=8206&&e<=8207||e===8232||e===8233}function AE(e){return e>=33&&e<=35||e===36||e>=37&&e<=39||e===40||e===41||e===42||e===43||e===44||e===45||e>=46&&e<=47||e>=58&&e<=59||e>=60&&e<=62||e>=63&&e<=64||e===91||e===92||e===93||e===94||e===96||e===123||e===124||e===125||e===126||e===161||e>=162&&e<=165||e===166||e===167||e===169||e===171||e===172||e===174||e===176||e===177||e===182||e===187||e===191||e===215||e===247||e>=8208&&e<=8213||e>=8214&&e<=8215||e===8216||e===8217||e===8218||e>=8219&&e<=8220||e===8221||e===8222||e===8223||e>=8224&&e<=8231||e>=8240&&e<=8248||e===8249||e===8250||e>=8251&&e<=8254||e>=8257&&e<=8259||e===8260||e===8261||e===8262||e>=8263&&e<=8273||e===8274||e===8275||e>=8277&&e<=8286||e>=8592&&e<=8596||e>=8597&&e<=8601||e>=8602&&e<=8603||e>=8604&&e<=8607||e===8608||e>=8609&&e<=8610||e===8611||e>=8612&&e<=8613||e===8614||e>=8615&&e<=8621||e===8622||e>=8623&&e<=8653||e>=8654&&e<=8655||e>=8656&&e<=8657||e===8658||e===8659||e===8660||e>=8661&&e<=8691||e>=8692&&e<=8959||e>=8960&&e<=8967||e===8968||e===8969||e===8970||e===8971||e>=8972&&e<=8991||e>=8992&&e<=8993||e>=8994&&e<=9e3||e===9001||e===9002||e>=9003&&e<=9083||e===9084||e>=9085&&e<=9114||e>=9115&&e<=9139||e>=9140&&e<=9179||e>=9180&&e<=9185||e>=9186&&e<=9254||e>=9255&&e<=9279||e>=9280&&e<=9290||e>=9291&&e<=9311||e>=9472&&e<=9654||e===9655||e>=9656&&e<=9664||e===9665||e>=9666&&e<=9719||e>=9720&&e<=9727||e>=9728&&e<=9838||e===9839||e>=9840&&e<=10087||e===10088||e===10089||e===10090||e===10091||e===10092||e===10093||e===10094||e===10095||e===10096||e===10097||e===10098||e===10099||e===10100||e===10101||e>=10132&&e<=10175||e>=10176&&e<=10180||e===10181||e===10182||e>=10183&&e<=10213||e===10214||e===10215||e===10216||e===10217||e===10218||e===10219||e===10220||e===10221||e===10222||e===10223||e>=10224&&e<=10239||e>=10240&&e<=10495||e>=10496&&e<=10626||e===10627||e===10628||e===10629||e===10630||e===10631||e===10632||e===10633||e===10634||e===10635||e===10636||e===10637||e===10638||e===10639||e===10640||e===10641||e===10642||e===10643||e===10644||e===10645||e===10646||e===10647||e===10648||e>=10649&&e<=10711||e===10712||e===10713||e===10714||e===10715||e>=10716&&e<=10747||e===10748||e===10749||e>=10750&&e<=11007||e>=11008&&e<=11055||e>=11056&&e<=11076||e>=11077&&e<=11078||e>=11079&&e<=11084||e>=11085&&e<=11123||e>=11124&&e<=11125||e>=11126&&e<=11157||e===11158||e>=11159&&e<=11263||e>=11776&&e<=11777||e===11778||e===11779||e===11780||e===11781||e>=11782&&e<=11784||e===11785||e===11786||e===11787||e===11788||e===11789||e>=11790&&e<=11798||e===11799||e>=11800&&e<=11801||e===11802||e===11803||e===11804||e===11805||e>=11806&&e<=11807||e===11808||e===11809||e===11810||e===11811||e===11812||e===11813||e===11814||e===11815||e===11816||e===11817||e>=11818&&e<=11822||e===11823||e>=11824&&e<=11833||e>=11834&&e<=11835||e>=11836&&e<=11839||e===11840||e===11841||e===11842||e>=11843&&e<=11855||e>=11856&&e<=11857||e===11858||e>=11859&&e<=11903||e>=12289&&e<=12291||e===12296||e===12297||e===12298||e===12299||e===12300||e===12301||e===12302||e===12303||e===12304||e===12305||e>=12306&&e<=12307||e===12308||e===12309||e===12310||e===12311||e===12312||e===12313||e===12314||e===12315||e===12316||e===12317||e>=12318&&e<=12319||e===12320||e===12336||e===64830||e===64831||e>=65093&&e<=65094}function wc(e){e.forEach(function(t){if(delete t.location,Vy(t)||Wy(t))for(var r in t.options)delete t.options[r].location,wc(t.options[r].value);else zy(t)&&Qy(t.style)||(qy(t)||Gy(t))&&mc(t.style)?delete t.style.location:$y(t)&&wc(t.children)})}function LE(e,t){t===void 0&&(t={}),t=de({shouldParseSkeletons:!0,requiresOtherClause:!0},t);var r=new bE(e,t).parse();if(r.err){var n=SyntaxError(oe[r.err.kind]);throw n.location=r.err.location,n.originalMessage=r.err.message,n}return t!=null&&t.captureLocation||wc(r.val),r.val}function dl(e,t){var r=t&&t.cache?t.cache:HE,n=t&&t.serializer?t.serializer:DE,i=t&&t.strategy?t.strategy:IE;return i(e,{cache:r,serializer:n})}function kE(e){return e==null||typeof e=="number"||typeof e=="boolean"}function rv(e,t,r,n){var i=kE(n)?n:r(n),o=t.get(i);return typeof o>"u"&&(o=e.call(this,n),t.set(i,o)),o}function nv(e,t,r){var n=Array.prototype.slice.call(arguments,3),i=r(n),o=t.get(i);return typeof o>"u"&&(o=e.apply(this,n),t.set(i,o)),o}function kf(e,t,r,n,i){return r.bind(t,e,n,i)}function IE(e,t){var r=e.length===1?rv:nv;return kf(e,this,r,t.cache.create(),t.serializer)}function ME(e,t){return kf(e,this,nv,t.cache.create(),t.serializer)}function BE(e,t){return kf(e,this,rv,t.cache.create(),t.serializer)}var DE=function(){return JSON.stringify(arguments)};function If(){this.cache=Object.create(null)}If.prototype.get=function(e){return this.cache[e]};If.prototype.set=function(e,t){this.cache[e]=t};var HE={create:function(){return new If}},hl={variadic:ME,monadic:BE},yi;(function(e){e.MISSING_VALUE="MISSING_VALUE",e.INVALID_VALUE="INVALID_VALUE",e.MISSING_INTL_API="MISSING_INTL_API"})(yi||(yi={}));var Ca=function(e){Ta(t,e);function t(r,n,i){var o=e.call(this,r)||this;return o.code=n,o.originalMessage=i,o}return t.prototype.toString=function(){return"[formatjs Error: ".concat(this.code,"] ").concat(this.message)},t}(Error),Lh=function(e){Ta(t,e);function t(r,n,i,o){return e.call(this,'Invalid values for "'.concat(r,'": "').concat(n,'". Options are "').concat(Object.keys(i).join('", "'),'"'),yi.INVALID_VALUE,o)||this}return t}(Ca),UE=function(e){Ta(t,e);function t(r,n,i){return e.call(this,'Value for "'.concat(r,'" must be of type ').concat(n),yi.INVALID_VALUE,i)||this}return t}(Ca),FE=function(e){Ta(t,e);function t(r,n){return e.call(this,'The intl string context variable "'.concat(r,'" was not provided to the string "').concat(n,'"'),yi.MISSING_VALUE,n)||this}return t}(Ca),tt;(function(e){e[e.literal=0]="literal",e[e.object=1]="object"})(tt||(tt={}));function jE(e){return e.length<2?e:e.reduce(function(t,r){var n=t[t.length-1];return!n||n.type!==tt.literal||r.type!==tt.literal?t.push(r):n.value+=r.value,t},[])}function zE(e){return typeof e=="function"}function As(e,t,r,n,i,o,s){if(e.length===1&&Rh(e[0]))return[{type:tt.literal,value:e[0].value}];for(var a=[],l=0,u=e;l0?new Intl.Locale(r[0]):new Intl.Locale(typeof t=="string"?t:t[0])},e.__parse=LE,e.formats={number:{integer:{maximumFractionDigits:0},currency:{style:"currency"},percent:{style:"percent"}},date:{short:{month:"numeric",day:"numeric",year:"2-digit"},medium:{month:"short",day:"numeric",year:"numeric"},long:{month:"long",day:"numeric",year:"numeric"},full:{weekday:"long",month:"long",day:"numeric",year:"numeric"}},time:{short:{hour:"numeric",minute:"numeric"},medium:{hour:"numeric",minute:"numeric",second:"numeric"},long:{hour:"numeric",minute:"numeric",second:"numeric",timeZoneName:"short"},full:{hour:"numeric",minute:"numeric",second:"numeric",timeZoneName:"short"}}},e}();function ml(e,t){return e&&Object.keys(e).reduce(function(r,n){return r[n]=pt({timeZone:t},e[n]),r},{})}function WE(e,t){var r=t?pt({},e,{dateTime:ml(e.dateTime,t)}):e,n=Ec.formats.date,i=t?ml(n,t):n,o=Ec.formats.time,s=t?ml(o,t):o;return pt({},r,{date:pt({},i,r==null?void 0:r.dateTime),time:pt({},s,r==null?void 0:r.dateTime)})}function Mf(e){return[e.namespace,e.key].filter(function(t){return t!=null}).join(".")}function ba(e){console.error(e)}function Sc(e,t,r){if(!e)throw new Error(void 0);var n=e;return t.split(".").forEach(function(i){var o=n[i];if(i==null||o==null)throw new Error(void 0);n=o}),n}function $E(e){if(Object.keys(e).length!==0){var t={};return Object.keys(e).forEach(function(r){var n=0,i=e[r],o;typeof i=="function"?o=function(a){var l=i(a);return le.isValidElement(l)?le.cloneElement(l,{key:r+n++}):l}:o=i,t[r]=o}),t}}function iv(e){var t=e.messages,r=e.namespace,n=e.onError,i=n===void 0?ba:n;try{if(!t)throw new Error(void 0);var o=r?Sc(t,r):t;if(!o)throw new Error(void 0);return o}catch(a){var s=new Xt($e.MISSING_MESSAGE,a.message);return i(s),s}}function QE(e,t){if(!t){var r=e.replace(/'([{}])/gi,"$1"),n=/<|{/.test(r);if(!n)return r}}function ov(e){var t=e.defaultTranslationValues,r=e.formats,n=e.getMessageFallback,i=n===void 0?Mf:n,o=e.locale,s=e.messageFormatCache,a=e.messagesOrError,l=e.namespace,u=e.onError,d=e.timeZone;function p(y,h,E){var c=new Xt(h,E);return u(c),i({error:c,key:y,namespace:l})}function g(y,h,E){if(a instanceof Xt)return i({error:a,key:y,namespace:l});var c=a,f;try{f=Sc(c,y,l)}catch(b){return p(y,$e.MISSING_MESSAGE,b.message)}function v(b){return b.filter(function(A){return A!=null}).join(".")}var _=v([o,l,y,String(f)]),w;if(s!=null&&s.has(_))w=s.get(_);else{if(typeof f=="object"){var S,P;return Array.isArray(f)?S=$e.INVALID_MESSAGE:S=$e.INSUFFICIENT_PATH,p(y,S,P)}var x=QE(f,h);if(x)return x;try{w=new Ec(f,o,WE(pt({},r,E),d))}catch(b){return p(y,$e.INVALID_MESSAGE,b.message)}s==null||s.set(_,w)}try{var O=w.format($E(pt({},t,h)));if(O==null)throw new Error(void 0);return le.isValidElement(O)||Array.isArray(O)||typeof O=="string"?O:String(O)}catch(b){return p(y,$e.FORMATTING_ERROR,b.message)}}function m(y,h,E){var c=g(y,h,E);return typeof c!="string"?p(y,$e.INVALID_MESSAGE,void 0):c}return m.rich=g,m.raw=function(y){if(a instanceof Xt)return i({error:a,key:y,namespace:l});var h=a;try{return Sc(h,y,l)}catch(E){return p(y,$e.MISSING_MESSAGE,E.message)}},m}function sv(e,t){return e===t?void 0:e.slice((t+".").length)}var XE=["getMessageFallback","messages","namespace","onError"];function KE(e,t){var r=e.getMessageFallback,n=e.messages,i=e.namespace,o=e.onError,s=Ra(e,XE);n=n[t],i=sv(i,t);var a=ov(pt({},s,{onError:o,getMessageFallback:r,messagesOrError:iv({messages:n,namespace:i,onError:o})})),l=a.rich;function u(){return a.apply(void 0,arguments)}return u.rich=function(d,p,g){var m=l(d,p,g);if(typeof m!="string"){var y=new Xt($e.FORMATTING_ERROR,void 0);return o(y),r({error:y,key:d,namespace:i})}return m},u.raw=a.raw,u}var YE=["getMessageFallback","messages","namespace","onError"];function ZE(e){var t=e.getMessageFallback,r=t===void 0?Mf:t,n=e.messages,i=e.namespace,o=e.onError,s=o===void 0?ba:o,a=Ra(e,YE);return KE(pt({},a,{onError:s,getMessageFallback:r,messages:{"!":n},namespace:i?"!."+i:"!"}),"!")}var Pc=1,ia=Pc*60,oa=ia*60,vi=oa*24,xc=vi*7,sa=vi*(365/12),kh=sa*3,Rc=vi*365,JE={second:Pc,seconds:Pc,minute:ia,minutes:ia,hour:oa,hours:oa,day:vi,days:vi,week:xc,weeks:xc,month:sa,months:sa,quarter:kh,quarters:kh,year:Rc,years:Rc};function e1(e){var t=Math.abs(e);return t"u"&&typeof window<"u"){var o;r=((o=window.trustedTypes)==null?void 0:o.createPolicy("nextjs",{createHTML:s=>s,createScript:s=>s,createScriptURL:s=>s}))||null}return r}function i(o){var s;return((s=n())==null?void 0:s.createScriptURL(o))||o}(typeof t.default=="function"||typeof t.default=="object"&&t.default!==null)&&typeof t.default.__esModule>"u"&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}(ts,ts.exports)),ts.exports}var rs={exports:{}},Fh;function uv(){return Fh||(Fh=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});function r(o,s){for(var a in s)Object.defineProperty(o,a,{enumerable:!0,get:s[a]})}r(t,{requestIdleCallback:function(){return n},cancelIdleCallback:function(){return i}});const n=typeof self<"u"&&self.requestIdleCallback&&self.requestIdleCallback.bind(window)||function(o){let s=Date.now();return self.setTimeout(function(){o({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-s))}})},1)},i=typeof self<"u"&&self.cancelIdleCallback&&self.cancelIdleCallback.bind(window)||function(o){return clearTimeout(o)};(typeof t.default=="function"||typeof t.default=="object"&&t.default!==null)&&typeof t.default.__esModule>"u"&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}(rs,rs.exports)),rs.exports}var jh;function _1(){return jh||(jh=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});function r(_,w){for(var S in w)Object.defineProperty(_,S,{enumerable:!0,get:w[S]})}r(t,{markAssetError:function(){return u},isAssetError:function(){return d},getClientBuildManifest:function(){return c},createRouteLoader:function(){return v}});const n=Sr;y1();const i=v1(),o=uv(),s=3800;function a(_,w,S){let P=w.get(_);if(P)return"future"in P?P.future:Promise.resolve(P);let x;const O=new Promise(b=>{x=b});return w.set(_,P={resolve:x,future:O}),S?S().then(b=>(x(b),b)).catch(b=>{throw w.delete(_),b}):O}const l=Symbol("ASSET_LOAD_ERROR");function u(_){return Object.defineProperty(_,l,{})}function d(_){return _&&l in _}function p(_){try{return _=document.createElement("link"),!!window.MSInputMethodContext&&!!document.documentMode||_.relList.supports("prefetch")}catch{return!1}}const g=p(),m=()=>({}).NEXT_DEPLOYMENT_ID?"?dpl="+{}.NEXT_DEPLOYMENT_ID:"";function y(_,w,S){return new Promise((P,x)=>{const O=` + link[rel="prefetch"][href^="`+_+`"], + link[rel="preload"][href^="`+_+`"], + script[src^="`+_+'"]';if(document.querySelector(O))return P();S=document.createElement("link"),w&&(S.as=w),S.rel="prefetch",S.crossOrigin={}.__NEXT_CROSS_ORIGIN,S.onload=P,S.onerror=()=>x(u(new Error("Failed to prefetch: "+_))),S.href=_,document.head.appendChild(S)})}function h(_,w){return new Promise((S,P)=>{w=document.createElement("script"),w.onload=S,w.onerror=()=>P(u(new Error("Failed to load script: "+_))),w.crossOrigin={}.__NEXT_CROSS_ORIGIN,w.src=_,document.body.appendChild(w)})}function E(_,w,S){return new Promise((P,x)=>{let O=!1;_.then(b=>{O=!0,P(b)}).catch(x),(0,o.requestIdleCallback)(()=>setTimeout(()=>{O||x(S)},w))})}function c(){if(self.__BUILD_MANIFEST)return Promise.resolve(self.__BUILD_MANIFEST);const _=new Promise(w=>{const S=self.__BUILD_MANIFEST_CB;self.__BUILD_MANIFEST_CB=()=>{w(self.__BUILD_MANIFEST),S&&S()}});return E(_,s,u(new Error("Failed to load client build manifest")))}function f(_,w){return c().then(S=>{if(!(w in S))throw u(new Error("Failed to lookup route: "+w));const P=S[w].map(x=>_+"/_next/"+encodeURI(x));return{scripts:P.filter(x=>x.endsWith(".js")).map(x=>(0,i.__unsafeCreateTrustedScriptURL)(x)+m()),css:P.filter(x=>x.endsWith(".css")).map(x=>x+m())}})}function v(_){const w=new Map,S=new Map,P=new Map,x=new Map;function O(A){{let M=S.get(A.toString());return M||(document.querySelector('script[src^="'+A+'"]')?Promise.resolve():(S.set(A.toString(),M=h(A)),M))}}function b(A){let M=P.get(A);return M||(P.set(A,M=fetch(A).then(I=>{if(!I.ok)throw new Error("Failed to load stylesheet: "+A);return I.text().then(W=>({href:A,content:W}))}).catch(I=>{throw u(I)})),M)}return{whenEntrypoint(A){return a(A,w)},onEntrypoint(A,M){(M?Promise.resolve().then(()=>M()).then(I=>({component:I&&I.default||I,exports:I}),I=>({error:I})):Promise.resolve(void 0)).then(I=>{const W=w.get(A);W&&"resolve"in W?I&&(w.set(A,I),W.resolve(I)):(I?w.set(A,I):w.delete(A),x.delete(A))})},loadRoute(A,M){return a(A,x,()=>E(f(_,A).then(I=>{let{scripts:W,css:ve}=I;return Promise.all([w.has(A)?[]:Promise.all(W.map(O)),Promise.all(ve.map(b))])}).then(I=>this.whenEntrypoint(A).then(W=>({entrypoint:W,styles:I[1]}))),s,u(new Error("Route did not complete loading: "+A))).then(I=>{let{entrypoint:W,styles:ve}=I;const _e=Object.assign({styles:ve},W);return"error"in W?W:_e}).catch(I=>{if(M)throw I;return{error:I}}).finally(()=>{}))},prefetch(A){let M;return(M=navigator.connection)&&(M.saveData||/2g/.test(M.effectiveType))?Promise.resolve():f(_,A).then(I=>Promise.all(g?I.scripts.map(W=>y(W.toString(),"script")):[])).then(()=>{(0,o.requestIdleCallback)(()=>this.loadRoute(A,!0).catch(()=>{}))}).catch(()=>{})}}}(typeof t.default=="function"||typeof t.default=="object"&&t.default!==null)&&typeof t.default.__esModule>"u"&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}(es,es.exports)),es.exports}var ns={exports:{}},_l={},zh;function w1(){return zh||(zh=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"HeadManagerContext",{enumerable:!0,get:function(){return n}});const n=Sr._(le).default.createContext({})}(_l)),_l}var is={exports:{}},qh;function E1(){return qh||(qh=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});function r(l,u){for(var d in u)Object.defineProperty(l,d,{enumerable:!0,get:u[d]})}r(t,{DOMAttributeNames:function(){return n},isEqualNode:function(){return o},default:function(){return a}});const n={acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv",noModule:"noModule"};function i(l){let{type:u,props:d}=l;const p=document.createElement(u);for(const y in d){if(!d.hasOwnProperty(y)||y==="children"||y==="dangerouslySetInnerHTML"||d[y]===void 0)continue;const h=n[y]||y.toLowerCase();u==="script"&&(h==="async"||h==="defer"||h==="noModule")?p[h]=!!d[y]:p.setAttribute(h,d[y])}const{children:g,dangerouslySetInnerHTML:m}=d;return m?p.innerHTML=m.__html||"":g&&(p.textContent=typeof g=="string"?g:Array.isArray(g)?g.join(""):""),p}function o(l,u){if(l instanceof HTMLElement&&u instanceof HTMLElement){const d=u.getAttribute("nonce");if(d&&!l.getAttribute("nonce")){const p=u.cloneNode(!0);return p.setAttribute("nonce",""),p.nonce=d,d===l.nonce&&l.isEqualNode(p)}}return l.isEqualNode(u)}let s;({}).__NEXT_STRICT_NEXT_HEAD?s=(l,u)=>{const d=document.querySelector("head");if(!d)return;const p=d.querySelectorAll('meta[name="next-head"]')||[],g=[];if(l==="meta"){const h=d.querySelector("meta[charset]");h&&g.push(h)}for(let h=0;h{for(let E=0,c=g.length;E{var E;const c=h.previousSibling;if(c&&c.getAttribute("name")==="next-head"){var f;(f=h.parentNode)==null||f.removeChild(c)}(E=h.parentNode)==null||E.removeChild(h)}),y.forEach(h=>{var E;const c=document.createElement("meta");c.name="next-head",c.content="1",((E=h.tagName)==null?void 0:E.toLowerCase())==="meta"&&h.getAttribute("charset")||d.appendChild(c),d.appendChild(h)})}:s=(l,u)=>{const d=document.getElementsByTagName("head")[0],p=d.querySelector("meta[name=next-head-count]"),g=Number(p.content),m=[];for(let E=0,c=p.previousElementSibling;E{for(let c=0,f=m.length;c{var c;return(c=E.parentNode)==null?void 0:c.removeChild(E)}),h.forEach(E=>d.insertBefore(E,p)),p.content=(g-m.length+h.length).toString()};function a(){return{mountedInstances:new Set,updateHead:l=>{const u={};l.forEach(g=>{if(g.type==="link"&&g.props["data-optimized-fonts"]){if(document.querySelector('style[data-href="'+g.props["data-href"]+'"]'))return;g.props.href=g.props["data-href"],g.props["data-href"]=void 0}const m=u[g.type]||[];m.push(g),u[g.type]=m});const d=u.title?u.title[0]:null;let p="";if(d){const{children:g}=d.props;p=typeof g=="string"?g:Array.isArray(g)?g.join(""):""}p!==document.title&&(document.title=p),["meta","base","link","style","script"].forEach(g=>{s(g,u[g]||[])})}}}(typeof t.default=="function"||typeof t.default=="object"&&t.default!==null)&&typeof t.default.__esModule>"u"&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}(is,is.exports)),is.exports}var Gh;function S1(){return Gh||(Gh=1,function(e,t){"use client";Object.defineProperty(t,"__esModule",{value:!0});function r(w,S){for(var P in S)Object.defineProperty(w,P,{enumerable:!0,get:S[P]})}r(t,{handleClientScriptLoad:function(){return h},initScriptLoader:function(){return f},default:function(){return _}});const n=Sr,i=Df(),o=n._(Af),s=i._(le),a=w1(),l=E1(),u=uv(),d=new Map,p=new Set,g=["onLoad","onReady","dangerouslySetInnerHTML","children","onError","strategy","stylesheets"],m=w=>{if(o.default.preinit){w.forEach(S=>{o.default.preinit(S,{as:"style"})});return}if(typeof window<"u"){let S=document.head;w.forEach(P=>{let x=document.createElement("link");x.type="text/css",x.rel="stylesheet",x.href=P,S.appendChild(x)})}},y=w=>{const{src:S,id:P,onLoad:x=()=>{},onReady:O=null,dangerouslySetInnerHTML:b,children:A="",strategy:M="afterInteractive",onError:I,stylesheets:W}=w,ve=P||S;if(ve&&p.has(ve))return;if(d.has(S)){p.add(ve),d.get(S).then(x,I);return}const _e=()=>{O&&O(),p.add(ve)},he=document.createElement("script"),B=new Promise((D,F)=>{he.addEventListener("load",function(V){D(),x&&x.call(this,V),_e()}),he.addEventListener("error",function(V){F(V)})}).catch(function(D){I&&I(D)});b?(he.innerHTML=b.__html||"",_e()):A?(he.textContent=typeof A=="string"?A:Array.isArray(A)?A.join(""):"",_e()):S&&(he.src=S,d.set(S,B));for(const[D,F]of Object.entries(w)){if(F===void 0||g.includes(D))continue;const V=l.DOMAttributeNames[D]||D.toLowerCase();he.setAttribute(V,F)}M==="worker"&&he.setAttribute("type","text/partytown"),he.setAttribute("data-nscript",M),W&&m(W),document.body.appendChild(he)};function h(w){const{strategy:S="afterInteractive"}=w;S==="lazyOnload"?window.addEventListener("load",()=>{(0,u.requestIdleCallback)(()=>y(w))}):y(w)}function E(w){document.readyState==="complete"?(0,u.requestIdleCallback)(()=>y(w)):window.addEventListener("load",()=>{(0,u.requestIdleCallback)(()=>y(w))})}function c(){[...document.querySelectorAll('[data-nscript="beforeInteractive"]'),...document.querySelectorAll('[data-nscript="beforePageRender"]')].forEach(S=>{const P=S.id||S.getAttribute("src");p.add(P)})}function f(w){w.forEach(h),c()}function v(w){const{id:S,src:P="",onLoad:x=()=>{},onReady:O=null,strategy:b="afterInteractive",onError:A,stylesheets:M,...I}=w,{updateScripts:W,scripts:ve,getIsSsr:_e,appDir:he,nonce:B}=(0,s.useContext)(a.HeadManagerContext),D=(0,s.useRef)(!1);(0,s.useEffect)(()=>{const V=S||P;D.current||(O&&V&&p.has(V)&&O(),D.current=!0)},[O,S,P]);const F=(0,s.useRef)(!1);if((0,s.useEffect)(()=>{F.current||(b==="afterInteractive"?y(w):b==="lazyOnload"&&E(w),F.current=!0)},[w,b]),(b==="beforeInteractive"||b==="worker")&&(W?(ve[b]=(ve[b]||[]).concat([{id:S,src:P,onLoad:x,onReady:O,onError:A,...I}]),W(ve)):_e&&_e()?p.add(S||P):_e&&!_e()&&y(w)),he){if(M&&M.forEach(V=>{o.default.preinit(V,{as:"style"})}),b==="beforeInteractive")return P?(o.default.preload(P,I.integrity?{as:"script",integrity:I.integrity}:{as:"script"}),s.default.createElement("script",{nonce:B,dangerouslySetInnerHTML:{__html:"(self.__next_s=self.__next_s||[]).push("+JSON.stringify([P])+")"}})):(I.dangerouslySetInnerHTML&&(I.children=I.dangerouslySetInnerHTML.__html,delete I.dangerouslySetInnerHTML),s.default.createElement("script",{nonce:B,dangerouslySetInnerHTML:{__html:"(self.__next_s=self.__next_s||[]).push("+JSON.stringify([0,{...I}])+")"}}));b==="afterInteractive"&&P&&o.default.preload(P,I.integrity?{as:"script",integrity:I.integrity}:{as:"script"})}return null}Object.defineProperty(v,"__nextScript",{value:!0});const _=v;(typeof t.default=="function"||typeof t.default=="object"&&t.default!==null)&&typeof t.default.__esModule>"u"&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}(ns,ns.exports)),ns.exports}var wl={},El={},Vh;function P1(){return Vh||(Vh=1,function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(i,o){for(var s in o)Object.defineProperty(i,s,{enumerable:!0,get:o[s]})}t(e,{getObjectClassLabel:function(){return r},isPlainObject:function(){return n}});function r(i){return Object.prototype.toString.call(i)}function n(i){if(r(i)!=="[object Object]")return!1;const o=Object.getPrototypeOf(i);return o===null||o.hasOwnProperty("isPrototypeOf")}}(El)),El}var Wh;function cv(){return Wh||(Wh=1,function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(o,s){for(var a in s)Object.defineProperty(o,a,{enumerable:!0,get:s[a]})}t(e,{default:function(){return n},getProperError:function(){return i}});const r=P1();function n(o){return typeof o=="object"&&o!==null&&"name"in o&&"message"in o}function i(o){return n(o)?o:new Error((0,r.isPlainObject)(o)?JSON.stringify(o):o+"")}}(wl)),wl}var Sl={},Pl={},xl={},$h;function x1(){return $h||($h=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"getSortedRoutes",{enumerable:!0,get:function(){return r}});class t{insert(i){this._insert(i.split("/").filter(Boolean),[],!1)}smoosh(){return this._smoosh()}_smoosh(i){i===void 0&&(i="/");const o=[...this.children.keys()].sort();this.slugName!==null&&o.splice(o.indexOf("[]"),1),this.restSlugName!==null&&o.splice(o.indexOf("[...]"),1),this.optionalRestSlugName!==null&&o.splice(o.indexOf("[[...]]"),1);const s=o.map(a=>this.children.get(a)._smoosh(""+i+a+"/")).reduce((a,l)=>[...a,...l],[]);if(this.slugName!==null&&s.push(...this.children.get("[]")._smoosh(i+"["+this.slugName+"]/")),!this.placeholder){const a=i==="/"?"/":i.slice(0,-1);if(this.optionalRestSlugName!=null)throw new Error('You cannot define a route with the same specificity as a optional catch-all route ("'+a+'" and "'+a+"[[..."+this.optionalRestSlugName+']]").');s.unshift(a)}return this.restSlugName!==null&&s.push(...this.children.get("[...]")._smoosh(i+"[..."+this.restSlugName+"]/")),this.optionalRestSlugName!==null&&s.push(...this.children.get("[[...]]")._smoosh(i+"[[..."+this.optionalRestSlugName+"]]/")),s}_insert(i,o,s){if(i.length===0){this.placeholder=!1;return}if(s)throw new Error("Catch-all must be the last part of the URL.");let a=i[0];if(a.startsWith("[")&&a.endsWith("]")){let d=function(p,g){if(p!==null&&p!==g)throw new Error("You cannot use different slug names for the same dynamic path ('"+p+"' !== '"+g+"').");o.forEach(m=>{if(m===g)throw new Error('You cannot have the same slug name "'+g+'" repeat within a single dynamic path');if(m.replace(/\W/g,"")===a.replace(/\W/g,""))throw new Error('You cannot have the slug names "'+m+'" and "'+g+'" differ only by non-word symbols within a single dynamic path')}),o.push(g)},l=a.slice(1,-1),u=!1;if(l.startsWith("[")&&l.endsWith("]")&&(l=l.slice(1,-1),u=!0),l.startsWith("...")&&(l=l.substring(3),s=!0),l.startsWith("[")||l.endsWith("]"))throw new Error("Segment names may not start or end with extra brackets ('"+l+"').");if(l.startsWith("."))throw new Error("Segment names may not start with erroneous periods ('"+l+"').");if(s)if(u){if(this.restSlugName!=null)throw new Error('You cannot use both an required and optional catch-all route at the same level ("[...'+this.restSlugName+']" and "'+i[0]+'" ).');d(this.optionalRestSlugName,l),this.optionalRestSlugName=l,a="[[...]]"}else{if(this.optionalRestSlugName!=null)throw new Error('You cannot use both an optional and required catch-all route at the same level ("[[...'+this.optionalRestSlugName+']]" and "'+i[0]+'").');d(this.restSlugName,l),this.restSlugName=l,a="[...]"}else{if(u)throw new Error('Optional route parameters are not yet supported ("'+i[0]+'").');d(this.slugName,l),this.slugName=l,a="[]"}}this.children.has(a)||this.children.set(a,new t),this.children.get(a)._insert(i.slice(1),o,s)}constructor(){this.placeholder=!0,this.children=new Map,this.slugName=null,this.restSlugName=null,this.optionalRestSlugName=null}}function r(n){const i=new t;return n.forEach(o=>i.insert(o)),i.smoosh()}}(xl)),xl}var Rl={},Qh;function Hf(){return Qh||(Qh=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"isDynamicRoute",{enumerable:!0,get:function(){return r}});const t=/\/\[[^/]+?\](?=\/|$)/;function r(n){return t.test(n)}}(Rl)),Rl}var Xh;function R1(){return Xh||(Xh=1,function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(i,o){for(var s in o)Object.defineProperty(i,s,{enumerable:!0,get:o[s]})}t(e,{getSortedRoutes:function(){return r.getSortedRoutes},isDynamicRoute:function(){return n.isDynamicRoute}});const r=x1(),n=Hf()}(Pl)),Pl}var Tl={},Kh;function T1(){return Kh||(Kh=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"normalizePathSep",{enumerable:!0,get:function(){return t}});function t(r){return r.replace(/\\/g,"/")}}(Tl)),Tl}var Yh;function C1(){return Yh||(Yh=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"denormalizePagePath",{enumerable:!0,get:function(){return n}});const t=R1(),r=T1();function n(i){let o=(0,r.normalizePathSep)(i);return o.startsWith("/index/")&&!(0,t.isDynamicRoute)(o)?o.slice(6):o!=="/index"?o:"/"}}(Sl)),Sl}var Cl={},Zh;function Uf(){return Zh||(Zh=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"normalizeLocalePath",{enumerable:!0,get:function(){return t}});function t(r,n){let i;const o=r.split("/");return(n||[]).some(s=>o[1]&&o[1].toLowerCase()===s.toLowerCase()?(i=s,o.splice(1,1),r=o.join("/")||"/",!0):!1),{pathname:r,detectedLocale:i}}}(Cl)),Cl}var bl={},Jh;function b1(){return Jh||(Jh=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t}});function t(){const r=Object.create(null);return{on(n,i){(r[n]||(r[n]=[])).push(i)},off(n,i){r[n]&&r[n].splice(r[n].indexOf(i)>>>0,1)},emit(n){for(var i=arguments.length,o=new Array(i>1?i-1:0),s=1;s{a(...o)})}}}}(bl)),bl}var Nl={},ep;function Co(){return ep||(ep=1,function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(_,w){for(var S in w)Object.defineProperty(_,S,{enumerable:!0,get:w[S]})}t(e,{WEB_VITALS:function(){return r},execOnce:function(){return n},isAbsoluteUrl:function(){return o},getLocationOrigin:function(){return s},getURL:function(){return a},getDisplayName:function(){return l},isResSent:function(){return u},normalizeRepeatedSlashes:function(){return d},loadGetInitialProps:function(){return p},SP:function(){return g},ST:function(){return m},DecodeError:function(){return y},NormalizeError:function(){return h},PageNotFoundError:function(){return E},MissingStaticPage:function(){return c},MiddlewareNotFoundError:function(){return f},stringifyError:function(){return v}});const r=["CLS","FCP","FID","INP","LCP","TTFB"];function n(_){let w=!1,S;return function(){for(var P=arguments.length,x=new Array(P),O=0;Oi.test(_);function s(){const{protocol:_,hostname:w,port:S}=window.location;return _+"//"+w+(S?":"+S:"")}function a(){const{href:_}=window.location,w=s();return _.substring(w.length)}function l(_){return typeof _=="string"?_:_.displayName||_.name||"Unknown"}function u(_){return _.finished||_.headersSent}function d(_){const w=_.split("?");return w[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(w[1]?"?"+w.slice(1).join("?"):"")}async function p(_,w){const S=w.res||w.ctx&&w.ctx.res;if(!_.getInitialProps)return w.ctx&&w.Component?{pageProps:await p(w.Component,w.ctx)}:{};const P=await _.getInitialProps(w);if(S&&u(S))return P;if(!P){const x='"'+l(_)+'.getInitialProps()" should resolve to an object. But found "'+P+'" instead.';throw new Error(x)}return P}const g=typeof performance<"u",m=g&&["mark","measure","getEntriesByName"].every(_=>typeof performance[_]=="function");class y extends Error{}class h extends Error{}class E extends Error{constructor(w){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message="Cannot find module for page: "+w}}class c extends Error{constructor(w,S){super(),this.message="Failed to load static file for page: "+w+" "+S}}class f extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function v(_){return JSON.stringify({message:_.message,stack:_.stack})}}(Nl)),Nl}var Ol={},Al={},tp;function Na(){return tp||(tp=1,function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(s,a){for(var l in a)Object.defineProperty(s,l,{enumerable:!0,get:a[l]})}t(e,{searchParamsToUrlQuery:function(){return r},urlQueryToSearchParams:function(){return i},assign:function(){return o}});function r(s){const a={};return s.forEach((l,u)=>{typeof a[u]>"u"?a[u]=l:Array.isArray(a[u])?a[u].push(l):a[u]=[a[u],l]}),a}function n(s){return typeof s=="string"||typeof s=="number"&&!isNaN(s)||typeof s=="boolean"?String(s):""}function i(s){const a=new URLSearchParams;return Object.entries(s).forEach(l=>{let[u,d]=l;Array.isArray(d)?d.forEach(p=>a.append(u,n(p))):a.set(u,n(d))}),a}function o(s){for(var a=arguments.length,l=new Array(a>1?a-1:0),u=1;u{Array.from(d.keys()).forEach(p=>s.delete(p)),d.forEach((p,g)=>s.append(g,p))}),s}}(Al)),Al}var rp;function Ff(){return rp||(rp=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"parseRelativeUrl",{enumerable:!0,get:function(){return n}});const t=Co(),r=Na();function n(i,o){const s=new URL(typeof window>"u"?"http://n":(0,t.getLocationOrigin)()),a=o?new URL(o,s):i.startsWith(".")?new URL(typeof window>"u"?"http://n":window.location.href):s,{pathname:l,searchParams:u,search:d,hash:p,href:g,origin:m}=new URL(i,a);if(m!==s.origin)throw new Error("invariant: invalid relative URL, router received "+i);return{pathname:l,query:(0,r.searchParamsToUrlQuery)(u),search:d,hash:p,href:g.slice(s.origin.length)}}}(Ol)),Ol}var Ll={},kl={},tr={},np;function fv(){if(np)return tr;np=1,Object.defineProperty(tr,"__esModule",{value:!0});function e(m){for(var y=[],h=0;h=48&&v<=57||v>=65&&v<=90||v>=97&&v<=122||v===95){c+=m[f++];continue}break}if(!c)throw new TypeError("Missing parameter name at "+h);y.push({type:"NAME",index:h,value:c}),h=f;continue}if(E==="("){var _=1,w="",f=h+1;if(m[f]==="?")throw new TypeError('Pattern cannot start with "?" at '+f);for(;f-1:he===void 0;c||(b+="(?:"+O+"(?="+x+"))?"),B||(b+="(?="+O+"|"+x+")")}return new RegExp(b,a(h))}tr.tokensToRegexp=p;function g(m,y,h){return m instanceof RegExp?l(m,y):Array.isArray(m)?u(m,y,h):d(m,y,h)}return tr.pathToRegexp=g,tr}var ip;function N1(){return ip||(ip=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"getPathMatch",{enumerable:!0,get:function(){return r}});const t=fv();function r(n,i){const o=[],s=(0,t.pathToRegexp)(n,o,{delimiter:"/",sensitive:typeof(i==null?void 0:i.sensitive)=="boolean"?i.sensitive:!1,strict:i==null?void 0:i.strict}),a=(0,t.regexpToFunction)(i!=null&&i.regexModifier?new RegExp(i.regexModifier(s.source),s.flags):s,o);return(l,u)=>{const d=l==null?!1:a(l);if(!d)return!1;if(i!=null&&i.removeUnnamedParams)for(const p of o)typeof p.name=="number"&&delete d.params[p.name];return{...u,...d.params}}}}(kl)),kl}var Il={},Ml={},op;function dv(){return op||(op=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"escapeStringRegexp",{enumerable:!0,get:function(){return n}});const t=/[|\\{}()[\]^$+*?.-]/,r=/[|\\{}()[\]^$+*?.-]/g;function n(i){return t.test(i)?i.replace(r,"\\$&"):i}}(Ml)),Ml}var Bl={},sp;function O1(){return sp||(sp=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"parseUrl",{enumerable:!0,get:function(){return n}});const t=Na(),r=Ff();function n(i){if(i.startsWith("/"))return(0,r.parseRelativeUrl)(i);const o=new URL(i);return{hash:o.hash,hostname:o.hostname,href:o.href,pathname:o.pathname,port:o.port,protocol:o.protocol,query:(0,t.searchParamsToUrlQuery)(o.searchParams),search:o.search}}}(Bl)),Bl}var Dl={},Hl={},Ul={},ap;function A1(){return ap||(ap=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"ensureLeadingSlash",{enumerable:!0,get:function(){return t}});function t(r){return r.startsWith("/")?r:"/"+r}}(Ul)),Ul}var lp;function L1(){return lp||(lp=1,function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(o,s){for(var a in s)Object.defineProperty(o,a,{enumerable:!0,get:s[a]})}t(e,{normalizeAppPath:function(){return n},normalizeRscPath:function(){return i}});const r=A1();function n(o){return(0,r.ensureLeadingSlash)(o.split("/").reduce((s,a,l,u)=>!a||a[0]==="("&&a.endsWith(")")||a[0]==="@"||(a==="page"||a==="route")&&l===u.length-1?s:s+"/"+a,""))}function i(o,s){return s?o.replace(/\.rsc($|\?)/,"$1"):o}}(Hl)),Hl}var up;function hv(){return up||(up=1,function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(s,a){for(var l in a)Object.defineProperty(s,l,{enumerable:!0,get:a[l]})}t(e,{INTERCEPTION_ROUTE_MARKERS:function(){return n},isInterceptionRouteAppPath:function(){return i},extractInterceptionRouteInformation:function(){return o}});const r=L1(),n=["(..)(..)","(.)","(..)","(...)"];function i(s){return s.split("/").find(a=>n.find(l=>a.startsWith(l)))!==void 0}function o(s){let a,l,u;for(const d of s.split("/"))if(l=n.find(p=>d.startsWith(p)),l){[a,u]=s.split(l,2);break}if(!a||!l||!u)throw new Error(`Invalid interception route: ${s}. Must be in the format //(..|...|..)(..)/`);switch(a=(0,r.normalizeAppPath)(a),l){case"(.)":a==="/"?u=`/${u}`:u=a+"/"+u;break;case"(..)":if(a==="/")throw new Error(`Invalid interception route: ${s}. Cannot use (..) marker at the root level, use (.) instead.`);u=a.split("/").slice(0,-1).concat(u).join("/");break;case"(...)":u="/"+u;break;case"(..)(..)":const d=a.split("/");if(d.length<=2)throw new Error(`Invalid interception route: ${s}. Cannot use (..)(..) marker at the root level or one level up.`);u=d.slice(0,-2).concat(u).join("/");break;default:throw new Error("Invariant: unexpected marker")}return{interceptingRoute:a,interceptedRoute:u}}}(Dl)),Dl}var os={exports:{}},cp;function k1(){return cp||(cp=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});function r(m,y){for(var h in y)Object.defineProperty(m,h,{enumerable:!0,get:y[h]})}r(t,{RSC:function(){return n},ACTION:function(){return i},NEXT_ROUTER_STATE_TREE:function(){return o},NEXT_ROUTER_PREFETCH:function(){return s},NEXT_URL:function(){return a},FETCH_CACHE_HEADER:function(){return l},RSC_CONTENT_TYPE_HEADER:function(){return u},RSC_VARY_HEADER:function(){return d},FLIGHT_PARAMETERS:function(){return p},NEXT_RSC_UNION_QUERY:function(){return g}});const n="RSC",i="Next-Action",o="Next-Router-State-Tree",s="Next-Router-Prefetch",a="Next-Url",l="x-vercel-sc-headers",u="text/x-component",d=n+", "+o+", "+s+", "+a,p=[[n],[o],[s]],g="_rsc";(typeof t.default=="function"||typeof t.default=="object"&&t.default!==null)&&typeof t.default.__esModule>"u"&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}(os,os.exports)),os.exports}var fp;function I1(){return fp||(fp=1,function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(m,y){for(var h in y)Object.defineProperty(m,h,{enumerable:!0,get:y[h]})}t(e,{matchHas:function(){return d},compileNonPath:function(){return p},prepareDestination:function(){return g}});const r=fv(),n=dv(),i=O1(),o=hv(),s=k1();function a(m){let y="";for(let h=0;h64&&E<91||E>96&&E<123)&&(y+=m[h])}return y}function l(m,y){return m.replace(new RegExp(":"+(0,n.escapeStringRegexp)(y),"g"),"__ESC_COLON_"+y)}function u(m){return m.replace(/__ESC_COLON_/gi,":")}function d(m,y,h,E){h===void 0&&(h=[]),E===void 0&&(E=[]);const c={},f=_=>{let w,S=_.key;switch(_.type){case"header":{S=S.toLowerCase(),w=m.headers[S];break}case"cookie":{w=m.cookies[_.key];break}case"query":{w=y[S];break}case"host":{const{host:P}=(m==null?void 0:m.headers)||{};w=P==null?void 0:P.split(":")[0].toLowerCase();break}}if(!_.value&&w)return c[a(S)]=w,!0;if(w){const P=new RegExp("^"+_.value+"$"),x=Array.isArray(w)?w.slice(-1)[0].match(P):w.match(P);if(x)return Array.isArray(x)&&(x.groups?Object.keys(x.groups).forEach(O=>{c[O]=x.groups[O]}):_.type==="host"&&x[0]&&(c.host=x[0])),!0}return!1};return h.every(_=>f(_))&&!E.some(_=>f(_))?c:!1}function p(m,y){if(!m.includes(":"))return m;for(const h of Object.keys(y))m.includes(":"+h)&&(m=m.replace(new RegExp(":"+h+"\\*","g"),":"+h+"--ESCAPED_PARAM_ASTERISKS").replace(new RegExp(":"+h+"\\?","g"),":"+h+"--ESCAPED_PARAM_QUESTION").replace(new RegExp(":"+h+"\\+","g"),":"+h+"--ESCAPED_PARAM_PLUS").replace(new RegExp(":"+h+"(?!\\w)","g"),"--ESCAPED_PARAM_COLON"+h));return m=m.replace(/(:|\*|\?|\+|\(|\)|\{|\})/g,"\\$1").replace(/--ESCAPED_PARAM_PLUS/g,"+").replace(/--ESCAPED_PARAM_COLON/g,":").replace(/--ESCAPED_PARAM_QUESTION/g,"?").replace(/--ESCAPED_PARAM_ASTERISKS/g,"*"),(0,r.compile)("/"+m,{validate:!1})(y).slice(1)}function g(m){const y=Object.assign({},m.query);delete y.__nextLocale,delete y.__nextDefaultLocale,delete y.__nextDataReq,delete y.__nextInferredLocaleFromDefault,delete y[s.NEXT_RSC_UNION_QUERY];let h=m.destination;for(const A of Object.keys({...m.params,...y}))h=l(h,A);const E=(0,i.parseUrl)(h),c=E.query,f=u(""+E.pathname+(E.hash||"")),v=u(E.hostname||""),_=[],w=[];(0,r.pathToRegexp)(f,_),(0,r.pathToRegexp)(v,w);const S=[];_.forEach(A=>S.push(A.name)),w.forEach(A=>S.push(A.name));const P=(0,r.compile)(f,{validate:!1}),x=(0,r.compile)(v,{validate:!1});for(const[A,M]of Object.entries(c))Array.isArray(M)?c[A]=M.map(I=>p(u(I),m.params)):typeof M=="string"&&(c[A]=p(u(M),m.params));let O=Object.keys(m.params).filter(A=>A!=="nextInternalLocale");if(m.appendParamsToQuery&&!O.some(A=>S.includes(A)))for(const A of O)A in c||(c[A]=m.params[A]);let b;if((0,o.isInterceptionRouteAppPath)(f))for(const A of f.split("/")){const M=o.INTERCEPTION_ROUTE_MARKERS.find(I=>A.startsWith(I));if(M){m.params[0]=M;break}}try{b=P(m.params);const[A,M]=b.split("#");E.hostname=x(m.params),E.pathname=A,E.hash=(M?"#":"")+(M||""),delete E.search}catch(A){throw A.message.match(/Expected .*? to not repeat, but got an array/)?new Error("To use a multi-match in the destination you must add `*` at the end of the param name to signify it should repeat. https://nextjs.org/docs/messages/invalid-multi-match"):A}return E.query={...y,...E.query},{newUrl:b,destQuery:c,parsedDestination:E}}}(Il)),Il}var ss={exports:{}},as={exports:{}},Fl={},jl={},dp;function Pi(){return dp||(dp=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"parsePath",{enumerable:!0,get:function(){return t}});function t(r){const n=r.indexOf("#"),i=r.indexOf("?"),o=i>-1&&(n<0||i-1?{pathname:r.substring(0,o?i:n),query:o?r.substring(i,n>-1?n:void 0):"",hash:n>-1?r.slice(n):""}:{pathname:r,query:"",hash:""}}}(jl)),jl}var hp;function Oa(){return hp||(hp=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"pathHasPrefix",{enumerable:!0,get:function(){return r}});const t=Pi();function r(n,i){if(typeof n!="string")return!1;const{pathname:o}=(0,t.parsePath)(n);return o===i||o.startsWith(i+"/")}}(Fl)),Fl}var pp;function jf(){return pp||(pp=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"hasBasePath",{enumerable:!0,get:function(){return i}});const r=Oa(),n={}.__NEXT_ROUTER_BASEPATH||"";function i(o){return(0,r.pathHasPrefix)(o,n)}(typeof t.default=="function"||typeof t.default=="object"&&t.default!==null)&&typeof t.default.__esModule>"u"&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}(as,as.exports)),as.exports}var mp;function pv(){return mp||(mp=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeBasePath",{enumerable:!0,get:function(){return i}});const r=jf(),n={}.__NEXT_ROUTER_BASEPATH||"";function i(o){return{}.__NEXT_MANUAL_CLIENT_BASE_PATH&&!(0,r.hasBasePath)(o)||n.length===0||(o=o.slice(n.length),o.startsWith("/")||(o="/"+o)),o}(typeof t.default=="function"||typeof t.default=="object"&&t.default!==null)&&typeof t.default.__esModule>"u"&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}(ss,ss.exports)),ss.exports}var gp;function M1(){return gp||(gp=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return a}});const t=N1(),r=I1(),n=To(),i=Uf(),o=pv(),s=Ff();function a(l,u,d,p,g,m){let y=!1,h=!1,E=(0,s.parseRelativeUrl)(l),c=(0,n.removeTrailingSlash)((0,i.normalizeLocalePath)((0,o.removeBasePath)(E.pathname),m).pathname),f;const v=w=>{let P=(0,t.getPathMatch)(w.source+({}.__NEXT_TRAILING_SLASH?"(/)?":""),{removeUnnamedParams:!0,strict:!0})(E.pathname);if((w.has||w.missing)&&P){const x=(0,r.matchHas)({headers:{host:document.location.hostname,"user-agent":navigator.userAgent},cookies:document.cookie.split("; ").reduce((O,b)=>{const[A,...M]=b.split("=");return O[A]=M.join("="),O},{})},E.query,w.has,w.missing);x?Object.assign(P,x):P=!1}if(P){if(!w.destination)return h=!0,!0;const x=(0,r.prepareDestination)({appendParamsToQuery:!0,destination:w.destination,params:P,query:p});if(E=x.parsedDestination,l=x.newUrl,Object.assign(p,x.parsedDestination.query),c=(0,n.removeTrailingSlash)((0,i.normalizeLocalePath)((0,o.removeBasePath)(l),m).pathname),u.includes(c))return y=!0,f=c,!0;if(f=g(c),f!==l&&u.includes(f))return y=!0,!0}};let _=!1;for(let w=0;w{const a=i.exec(s);if(!a)return!1;const l=d=>{try{return decodeURIComponent(d)}catch{throw new t.DecodeError("failed to decode param")}},u={};return Object.keys(o).forEach(d=>{const p=o[d],g=a[p.pos];g!==void 0&&(u[d]=~g.indexOf("/")?g.split("/").map(m=>l(m)):p.repeat?[l(g)]:l(g))}),u}}}(zl)),zl}var ql={},vp;function gv(){return vp||(vp=1,function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(h,E){for(var c in E)Object.defineProperty(h,c,{enumerable:!0,get:E[c]})}t(e,{getRouteRegex:function(){return u},getNamedRouteRegex:function(){return m},getNamedMiddlewareRegex:function(){return y}});const r=hv(),n=dv(),i=To(),o="nxtP",s="nxtI";function a(h){const E=h.startsWith("[")&&h.endsWith("]");E&&(h=h.slice(1,-1));const c=h.startsWith("...");return c&&(h=h.slice(3)),{key:h,repeat:c,optional:E}}function l(h){const E=(0,i.removeTrailingSlash)(h).slice(1).split("/"),c={};let f=1;return{parameterizedRoute:E.map(v=>{const _=r.INTERCEPTION_ROUTE_MARKERS.find(S=>v.startsWith(S)),w=v.match(/\[((?:\[.*\])|.+)\]/);if(_&&w){const{key:S,optional:P,repeat:x}=a(w[1]);return c[S]={pos:f++,repeat:x,optional:P},"/"+(0,n.escapeStringRegexp)(_)+"([^/]+?)"}else if(w){const{key:S,repeat:P,optional:x}=a(w[1]);return c[S]={pos:f++,repeat:P,optional:x},P?x?"(?:/(.+?))?":"/(.+?)":"/([^/]+?)"}else return"/"+(0,n.escapeStringRegexp)(v)}).join(""),groups:c}}function u(h){const{parameterizedRoute:E,groups:c}=l(h);return{re:new RegExp("^"+E+"(?:/)?$"),groups:c}}function d(){let h=0;return()=>{let E="",c=++h;for(;c>0;)E+=String.fromCharCode(97+(c-1)%26),c=Math.floor((c-1)/26);return E}}function p(h){let{getSafeRouteKey:E,segment:c,routeKeys:f,keyPrefix:v}=h;const{key:_,optional:w,repeat:S}=a(c);let P=_.replace(/\W/g,"");v&&(P=""+v+P);let x=!1;return(P.length===0||P.length>30)&&(x=!0),isNaN(parseInt(P.slice(0,1)))||(x=!0),x&&(P=E()),v?f[P]=""+v+_:f[P]=""+_,S?w?"(?:/(?<"+P+">.+?))?":"/(?<"+P+">.+?)":"/(?<"+P+">[^/]+?)"}function g(h,E){const c=(0,i.removeTrailingSlash)(h).slice(1).split("/"),f=d(),v={};return{namedParameterizedRoute:c.map(_=>{const w=r.INTERCEPTION_ROUTE_MARKERS.some(P=>_.startsWith(P)),S=_.match(/\[((?:\[.*\])|.+)\]/);return w&&S?p({getSafeRouteKey:f,segment:S[1],routeKeys:v,keyPrefix:E?s:void 0}):S?p({getSafeRouteKey:f,segment:S[1],routeKeys:v,keyPrefix:E?o:void 0}):"/"+(0,n.escapeStringRegexp)(_)}).join(""),routeKeys:v}}function m(h,E){const c=g(h,E);return{...u(h),namedRegex:"^"+c.namedParameterizedRoute+"(?:/)?$",routeKeys:c.routeKeys}}function y(h,E){const{parameterizedRoute:c}=l(h),{catchAll:f=!0}=E;if(c==="/")return{namedRegex:"^/"+(f?".*":"")+"$"};const{namedParameterizedRoute:v}=g(h,!1);let _=f?"(?:(/.*)?)":"";return{namedRegex:"^"+v+_+"$"}}}(ql)),ql}var Gl={},_p;function yv(){return _p||(_p=1,function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(l,u){for(var d in u)Object.defineProperty(l,d,{enumerable:!0,get:u[d]})}t(e,{formatUrl:function(){return o},urlObjectKeys:function(){return s},formatWithValidation:function(){return a}});const n=Df()._(Na()),i=/https?|ftp|gopher|file/;function o(l){let{auth:u,hostname:d}=l,p=l.protocol||"",g=l.pathname||"",m=l.hash||"",y=l.query||"",h=!1;u=u?encodeURIComponent(u).replace(/%3A/i,":")+"@":"",l.host?h=u+l.host:d&&(h=u+(~d.indexOf(":")?"["+d+"]":d),l.port&&(h+=":"+l.port)),y&&typeof y=="object"&&(y=String(n.urlQueryToSearchParams(y)));let E=l.search||y&&"?"+y||"";return p&&!p.endsWith(":")&&(p+=":"),l.slashes||(!p||i.test(p))&&h!==!1?(h="//"+(h||""),g&&g[0]!=="/"&&(g="/"+g)):h||(h=""),m&&m[0]!=="#"&&(m="#"+m),E&&E[0]!=="?"&&(E="?"+E),g=g.replace(/[?#]/g,encodeURIComponent),E=E.replace("#","%23"),""+p+h+g+E+m}const s=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function a(l){return o(l)}}(Gl)),Gl}var ls={exports:{}},Vl={},wp;function B1(){return wp||(wp=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"detectDomainLocale",{enumerable:!0,get:function(){return t}});function t(r,n,i){if(r){i&&(i=i.toLowerCase());for(const a of r){var o,s;const l=(o=a.domain)==null?void 0:o.split(":")[0].toLowerCase();if(n===l||i===a.defaultLocale.toLowerCase()||(s=a.locales)!=null&&s.some(u=>u.toLowerCase()===i))return a}}}}(Vl)),Vl}var Ep;function D1(){return Ep||(Ep=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"detectDomainLocale",{enumerable:!0,get:function(){return r}});const r=function(){for(var n=arguments.length,i=new Array(n),o=0;o"u"&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}(ls,ls.exports)),ls.exports}var us={exports:{}},cs={exports:{}},Sp;function zf(){return Sp||(Sp=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"normalizePathTrailingSlash",{enumerable:!0,get:function(){return i}});const r=To(),n=Pi(),i=o=>{if(!o.startsWith("/")||{}.__NEXT_MANUAL_TRAILING_SLASH)return o;const{pathname:s,query:a,hash:l}=(0,n.parsePath)(o);return{}.__NEXT_TRAILING_SLASH?/\.[^/]+\/?$/.test(s)?""+(0,r.removeTrailingSlash)(s)+a+l:s.endsWith("/")?""+s+a+l:s+"/"+a+l:""+(0,r.removeTrailingSlash)(s)+a+l};(typeof t.default=="function"||typeof t.default=="object"&&t.default!==null)&&typeof t.default.__esModule>"u"&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}(cs,cs.exports)),cs.exports}var Wl={},$l={},Pp;function qf(){return Pp||(Pp=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"addPathPrefix",{enumerable:!0,get:function(){return r}});const t=Pi();function r(n,i){if(!n.startsWith("/")||!i)return n;const{pathname:o,query:s,hash:a}=(0,t.parsePath)(n);return""+i+o+s+a}}($l)),$l}var xp;function vv(){return xp||(xp=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"addLocale",{enumerable:!0,get:function(){return n}});const t=qf(),r=Oa();function n(i,o,s,a){if(!o||o===s)return i;const l=i.toLowerCase();return!a&&((0,r.pathHasPrefix)(l,"/api")||(0,r.pathHasPrefix)(l,"/"+o.toLowerCase()))?i:(0,t.addPathPrefix)(i,"/"+o)}}(Wl)),Wl}var Rp;function H1(){return Rp||(Rp=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addLocale",{enumerable:!0,get:function(){return n}});const r=zf(),n=function(i){for(var o=arguments.length,s=new Array(o>1?o-1:0),a=1;a"u"&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}(us,us.exports)),us.exports}var fs={exports:{}},Tp;function U1(){return Tp||(Tp=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeLocale",{enumerable:!0,get:function(){return n}});const r=Pi();function n(i,o){if({}.__NEXT_I18N_SUPPORT){const{pathname:s}=(0,r.parsePath)(i),a=s.toLowerCase(),l=o==null?void 0:o.toLowerCase();return o&&(a.startsWith("/"+l+"/")||a==="/"+l)?(s.length===o.length+1?"/":"")+i.slice(o.length+1):i}return i}(typeof t.default=="function"||typeof t.default=="object"&&t.default!==null)&&typeof t.default.__esModule>"u"&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}(fs,fs.exports)),fs.exports}var ds={exports:{}},Cp;function F1(){return Cp||(Cp=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addBasePath",{enumerable:!0,get:function(){return o}});const r=qf(),n=zf(),i={}.__NEXT_ROUTER_BASEPATH||"";function o(s,a){return(0,n.normalizePathTrailingSlash)({}.__NEXT_MANUAL_CLIENT_BASE_PATH&&!a?s:(0,r.addPathPrefix)(s,i))}(typeof t.default=="function"||typeof t.default=="object"&&t.default!==null)&&typeof t.default.__esModule>"u"&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}(ds,ds.exports)),ds.exports}var Ql={},bp;function j1(){return bp||(bp=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"isAPIRoute",{enumerable:!0,get:function(){return t}});function t(r){return r==="/api"||!!(r!=null&&r.startsWith("/api/"))}}(Ql)),Ql}var Xl={},Kl={},Np;function z1(){return Np||(Np=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"removePathPrefix",{enumerable:!0,get:function(){return r}});const t=Oa();function r(n,i){if(!(0,t.pathHasPrefix)(n,i))return n;const o=n.slice(i.length);return o.startsWith("/")?o:"/"+o}}(Kl)),Kl}var Op;function q1(){return Op||(Op=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"getNextPathnameInfo",{enumerable:!0,get:function(){return i}});const t=Uf(),r=z1(),n=Oa();function i(o,s){var a;const{basePath:l,i18n:u,trailingSlash:d}=(a=s.nextConfig)!=null?a:{},p={pathname:o,trailingSlash:o!=="/"?o.endsWith("/"):d};if(l&&(0,n.pathHasPrefix)(p.pathname,l)&&(p.pathname=(0,r.removePathPrefix)(p.pathname,l),p.basePath=l),s.parseData===!0&&p.pathname.startsWith("/_next/data/")&&p.pathname.endsWith(".json")){const y=p.pathname.replace(/^\/_next\/data\//,"").replace(/\.json$/,"").split("/"),h=y[0];p.pathname=y[1]!=="index"?"/"+y.slice(1).join("/"):"/",p.buildId=h}if(s.i18nProvider){const y=s.i18nProvider.analyze(p.pathname);p.locale=y.detectedLocale;var g;p.pathname=(g=y.pathname)!=null?g:p.pathname}else if(u){const y=(0,t.normalizeLocalePath)(p.pathname,u.locales);p.locale=y.detectedLocale;var m;p.pathname=(m=y.pathname)!=null?m:p.pathname}return p}}(Xl)),Xl}var Yl={},Zl={},Ap;function G1(){return Ap||(Ap=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"addPathSuffix",{enumerable:!0,get:function(){return r}});const t=Pi();function r(n,i){if(!n.startsWith("/")||!i)return n;const{pathname:o,query:s,hash:a}=(0,t.parsePath)(n);return""+o+i+s+a}}(Zl)),Zl}var Lp;function V1(){return Lp||(Lp=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"formatNextPathnameInfo",{enumerable:!0,get:function(){return o}});const t=To(),r=qf(),n=G1(),i=vv();function o(s){let a=(0,i.addLocale)(s.pathname,s.locale,s.buildId?void 0:s.defaultLocale,s.ignorePrefix);return(s.buildId||!s.trailingSlash)&&(a=(0,t.removeTrailingSlash)(a)),s.buildId&&(a=(0,n.addPathSuffix)((0,r.addPathPrefix)(a,"/_next/data/"+s.buildId),s.pathname==="/"?"index.json":".json")),a=(0,r.addPathPrefix)(a,s.basePath),!s.buildId&&s.trailingSlash?a.endsWith("/")?a:(0,n.addPathSuffix)(a,"/"):(0,t.removeTrailingSlash)(a)}}(Yl)),Yl}var Jl={},kp;function W1(){return kp||(kp=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"compareRouterStates",{enumerable:!0,get:function(){return t}});function t(r,n){const i=Object.keys(r);if(i.length!==Object.keys(n).length)return!1;for(let o=i.length;o--;){const s=i[o];if(s==="query"){const a=Object.keys(r.query);if(a.length!==Object.keys(n.query).length)return!1;for(let l=a.length;l--;){const u=a[l];if(!n.query.hasOwnProperty(u)||r.query[u]!==n.query[u])return!1}}else if(!n.hasOwnProperty(s)||r[s]!==n[s])return!1}return!0}}(Jl)),Jl}var eu={},Ip;function _v(){return Ip||(Ip=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"isLocalURL",{enumerable:!0,get:function(){return n}});const t=Co(),r=jf();function n(i){if(!(0,t.isAbsoluteUrl)(i))return!0;try{const o=(0,t.getLocationOrigin)(),s=new URL(i,o);return s.origin===o&&(0,r.hasBasePath)(s.pathname)}catch{return!1}}}(eu)),eu}var tu={},Mp;function $1(){return Mp||(Mp=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"isBot",{enumerable:!0,get:function(){return t}});function t(r){return/Googlebot|Mediapartners-Google|AdsBot-Google|googleweblight|Storebot-Google|Google-PageRenderer|Bingbot|BingPreview|Slurp|DuckDuckBot|baiduspider|yandex|sogou|LinkedInBot|bitlybot|tumblr|vkShare|quora link preview|facebookexternalhit|facebookcatalog|Twitterbot|applebot|redditbot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|ia_archiver/i.test(r)}}(tu)),tu}var ru={},Bp;function wv(){return Bp||(Bp=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"omit",{enumerable:!0,get:function(){return t}});function t(r,n){const i={};return Object.keys(r).forEach(o=>{n.includes(o)||(i[o]=r[o])}),i}}(ru)),ru}var nu={},iu={},Dp;function Ev(){return Dp||(Dp=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"interpolateAs",{enumerable:!0,get:function(){return n}});const t=mv(),r=gv();function n(i,o,s){let a="";const l=(0,r.getRouteRegex)(i),u=l.groups,d=(o!==i?(0,t.getRouteMatcher)(l)(o):"")||s;a=i;const p=Object.keys(u);return p.every(g=>{let m=d[g]||"";const{repeat:y,optional:h}=u[g];let E="["+(y?"...":"")+g+"]";return h&&(E=(m?"":"/")+"["+E+"]"),y&&!Array.isArray(m)&&(m=[m]),(h||g in d)&&(a=a.replace(E,y?m.map(c=>encodeURIComponent(c)).join("/"):encodeURIComponent(m))||"/")})||(a=""),{params:p,result:a}}}(iu)),iu}var Hp;function Q1(){return Hp||(Hp=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"resolveHref",{enumerable:!0,get:function(){return u}});const t=Na(),r=yv(),n=wv(),i=Co(),o=zf(),s=_v(),a=Hf(),l=Ev();function u(d,p,g){let m,y=typeof p=="string"?p:(0,r.formatWithValidation)(p);const h=y.match(/^[a-zA-Z]{1,}:\/\//),E=h?y.slice(h[0].length):y;if((E.split("?")[0]||"").match(/(\/\/|\\)/)){console.error("Invalid href '"+y+"' passed to next/router in page: '"+d.pathname+"'. Repeated forward-slashes (//) or backslashes \\ are not valid in the href.");const f=(0,i.normalizeRepeatedSlashes)(E);y=(h?h[0]:"")+f}if(!(0,s.isLocalURL)(y))return g?[y]:y;try{m=new URL(y.startsWith("#")?d.asPath:d.pathname,"http://n")}catch{m=new URL("/","http://n")}try{const f=new URL(y,m);f.pathname=(0,o.normalizePathTrailingSlash)(f.pathname);let v="";if((0,a.isDynamicRoute)(f.pathname)&&f.searchParams&&g){const w=(0,t.searchParamsToUrlQuery)(f.searchParams),{result:S,params:P}=(0,l.interpolateAs)(f.pathname,f.pathname,w);S&&(v=(0,r.formatWithValidation)({pathname:S,hash:f.hash,query:(0,n.omit)(w,P)}))}const _=f.origin===m.origin?f.href.slice(f.origin.length):f.href;return g?[_,v||_]:_}catch{return g?[y]:y}}}(nu)),nu}var ou={},Up;function X1(){return Up||(Up=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"handleSmoothScroll",{enumerable:!0,get:function(){return t}});function t(r,n){if(n===void 0&&(n={}),n.onlyHashChange){r();return}const i=document.documentElement,o=i.style.scrollBehavior;i.style.scrollBehavior="auto",n.dontForceLayout||i.getClientRects(),r(),i.style.scrollBehavior=o}}(ou)),ou}var su={},au={exports:{}};const K1={},Y1=Object.freeze(Object.defineProperty({__proto__:null,default:K1},Symbol.toStringTag,{value:"Module"})),lu=Rm(Y1);var Fp;function Z1(){return Fp||(Fp=1,(()=>{var e={154:(i,o,s)=>{var a=s(781),l=["write","end","destroy"],u=["resume","pause"],d=["data","close"],p=Array.prototype.slice;i.exports=m;function g(y,h){if(y.forEach)return y.forEach(h);for(var E=0;E{const a=s(147),l=s(781),u=s(796),d=s(154),p=s(530),g=m=>Object.assign({level:9},m);i.exports=(m,y)=>m?p(u.gzip)(m,g(y)).then(h=>h.length).catch(h=>0):Promise.resolve(0),i.exports.sync=(m,y)=>u.gzipSync(m,g(y)).length,i.exports.stream=m=>{const y=new l.PassThrough,h=new l.PassThrough,E=d(y,h);let c=0;const f=u.createGzip(g(m)).on("data",v=>{c+=v.length}).on("error",()=>{E.gzipSize=0}).on("end",()=>{E.gzipSize=c,E.emit("gzip-size",c),h.end()});return y.pipe(f),y.pipe(h,{end:!1}),E},i.exports.file=(m,y)=>new Promise((h,E)=>{const c=a.createReadStream(m);c.on("error",E);const f=c.pipe(i.exports.stream(y));f.on("error",E),f.on("gzip-size",h)}),i.exports.fileSync=(m,y)=>i.exports.sync(a.readFileSync(m),y)},530:i=>{const o=(s,a)=>function(...l){const u=a.promiseModule;return new u((d,p)=>{a.multiArgs?l.push((...g)=>{a.errorFirst?g[0]?p(g):(g.shift(),d(g)):d(g)}):a.errorFirst?l.push((g,m)=>{g?p(g):d(m)}):l.push(d),s.apply(this,l)})};i.exports=(s,a)=>{a=Object.assign({exclude:[/.+(Sync|Stream)$/],errorFirst:!0,promiseModule:Promise},a);const l=typeof s;if(!(s!==null&&(l==="object"||l==="function")))throw new TypeError(`Expected \`input\` to be a \`Function\` or \`Object\`, got \`${s===null?"null":l}\``);const u=p=>{const g=m=>typeof m=="string"?p===m:m.test(p);return a.include?a.include.some(g):!a.exclude.some(g)};let d;l==="function"?d=function(...p){return a.excludeMain?s(...p):o(s,a).apply(this,p)}:d=Object.create(Object.getPrototypeOf(s));for(const p in s){const g=s[p];d[p]=typeof g=="function"&&u(p)?o(g,a):g}return d}},147:i=>{i.exports=lu},781:i=>{i.exports=lu},796:i=>{i.exports=lu}},t={};function r(i){var o=t[i];if(o!==void 0)return o.exports;var s=t[i]={exports:{}},a=!0;try{e[i](s,s.exports,r),a=!1}finally{a&&delete t[i]}return s.exports}typeof r<"u"&&(r.ab=__dirname+"/");var n=r(349);au.exports=n})()),au.exports}var jp;function J1(){return jp||(jp=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"BloomFilter",{enumerable:!0,get:function(){return r}});function t(n){let i=0;for(let o=0;o>>13,i=Math.imul(i,1540483477)}return i>>>0}class r{static from(i,o){o===void 0&&(o=.01);const s=new r(i.length,o);for(const a of i)s.add(a);return s}export(){const i={numItems:this.numItems,errorRate:this.errorRate,numBits:this.numBits,numHashes:this.numHashes,bitArray:this.bitArray};if(typeof window>"u"&&{}.NEXT_RUNTIME!=="edge"&&this.errorRate<.01){const o=JSON.stringify(i),s=Z1().sync(o);s>1024&&console.warn("Creating filter with error rate less than 1% (0.01) can increase the size dramatically proceed with caution. Received error rate "+this.errorRate+" resulted in size "+o.length+" bytes, "+s+" bytes (gzip)")}return i}import(i){this.numItems=i.numItems,this.errorRate=i.errorRate,this.numBits=i.numBits,this.numHashes=i.numHashes,this.bitArray=i.bitArray}add(i){this.getHashValues(i).forEach(s=>{this.bitArray[s]=1})}contains(i){return this.getHashValues(i).every(s=>this.bitArray[s])}getHashValues(i){const o=[];for(let s=1;s<=this.numHashes;s++){const a=t(""+i+s)%this.numBits;o.push(a)}return o}constructor(i,o){this.numItems=i,this.errorRate=o,this.numBits=Math.ceil(-(i*Math.log(o))/(Math.log(2)*Math.log(2))),this.numHashes=Math.ceil(this.numBits/i*Math.log(2)),this.bitArray=new Array(this.numBits).fill(0)}}}(su)),su}var zp;function eS(){return zp||(zp=1,function(e){Object.defineProperty(e,"__esModule",{value:!0});function t($,N){for(var C in N)Object.defineProperty($,C,{enumerable:!0,get:N[C]})}t(e,{default:function(){return at},matchesMiddleware:function(){return F},createKey:function(){return ka}});const r=Sr,n=Df(),i=To(),o=_1(),s=S1(),a=n._(cv()),l=C1(),u=Uf(),d=r._(b1()),p=Co(),g=Hf(),m=Ff(),y=r._(M1()),h=mv(),E=gv(),c=yv(),f=D1(),v=Pi(),_=H1(),w=U1(),S=pv(),P=F1(),x=jf(),O=j1(),b=q1(),A=V1(),M=W1(),I=_v(),W=$1(),ve=wv(),_e=Q1(),he=Ev(),B=X1();function D(){return Object.assign(new Error("Route Cancelled"),{cancelled:!0})}async function F($){const N=await Promise.resolve($.router.pageLoader.getMiddleware());if(!N)return!1;const{pathname:C}=(0,v.parsePath)($.asPath),R=(0,x.hasBasePath)(C)?(0,S.removeBasePath)(C):C,L=(0,P.addBasePath)((0,_.addLocale)(R,$.locale));return N.some(Q=>new RegExp(Q.regexp).test(L))}function V($){const N=(0,p.getLocationOrigin)();return $.startsWith(N)?$.substring(N.length):$}function pe($,N,C){let[R,L]=(0,_e.resolveHref)($,N,!0);const Q=(0,p.getLocationOrigin)(),Z=R.startsWith(Q),G=L&&L.startsWith(Q);R=V(R),L=L&&V(L);const ce=Z?R:(0,P.addBasePath)(R),j=C?V((0,_e.resolveHref)($,C)):L||R;return{url:ce,as:G?j:(0,P.addBasePath)(j)}}function me($,N){const C=(0,i.removeTrailingSlash)((0,l.denormalizePagePath)($));return C==="/404"||C==="/_error"?$:(N.includes(C)||N.some(R=>{if((0,g.isDynamicRoute)(R)&&(0,E.getRouteRegex)(R).re.test(C))return $=R,!0}),(0,i.removeTrailingSlash)($))}function fr($,N,C){const R={basePath:C.router.basePath,i18n:{locales:C.router.locales},trailingSlash:!!{}.__NEXT_TRAILING_SLASH},L=N.headers.get("x-nextjs-rewrite");let Q=L||N.headers.get("x-nextjs-matched-path");const Z=N.headers.get("x-matched-path");if(Z&&!Q&&!Z.includes("__next_data_catchall")&&!Z.includes("/_error")&&!Z.includes("/404")&&(Q=Z),Q){if(Q.startsWith("/")||{}.__NEXT_EXTERNAL_MIDDLEWARE_REWRITE_RESOLVE){const X=(0,m.parseRelativeUrl)(Q),Ee=(0,b.getNextPathnameInfo)(X.pathname,{nextConfig:R,parseData:!0});let ge=(0,i.removeTrailingSlash)(Ee.pathname);return Promise.all([C.router.pageLoader.getPageList(),(0,o.getClientBuildManifest)()]).then(fe=>{let[J,{__rewrites:ee}]=fe,Y=(0,_.addLocale)(Ee.pathname,Ee.locale);if((0,g.isDynamicRoute)(Y)||!L&&J.includes((0,u.normalizeLocalePath)((0,S.removeBasePath)(Y),C.router.locales).pathname)){const Ie=(0,b.getNextPathnameInfo)((0,m.parseRelativeUrl)($).pathname,{nextConfig:{}.__NEXT_HAS_REWRITES?void 0:R,parseData:!0});Y=(0,P.addBasePath)(Ie.pathname),X.pathname=Y}if({}.__NEXT_HAS_REWRITES){const Ie=(0,y.default)(Y,J,ee,X.query,Te=>me(Te,J),C.router.locales);Ie.matchedPage&&(X.pathname=Ie.parsedAs.pathname,Y=X.pathname,Object.assign(X.query,Ie.parsedAs.query))}else if(!J.includes(ge)){const Ie=me(ge,J);Ie!==ge&&(ge=Ie)}const Re=J.includes(ge)?ge:me((0,u.normalizeLocalePath)((0,S.removeBasePath)(X.pathname),C.router.locales).pathname,J);if((0,g.isDynamicRoute)(Re)){const Ie=(0,h.getRouteMatcher)((0,E.getRouteRegex)(Re))(Y);Object.assign(X.query,Ie||{})}return{type:"rewrite",parsedAs:X,resolvedHref:Re}})}const ce=(0,v.parsePath)($),j=(0,A.formatNextPathnameInfo)({...(0,b.getNextPathnameInfo)(ce.pathname,{nextConfig:R,parseData:!0}),defaultLocale:C.router.defaultLocale,buildId:""});return Promise.resolve({type:"redirect-external",destination:""+j+ce.query+ce.hash})}const G=N.headers.get("x-nextjs-redirect");if(G){if(G.startsWith("/")){const ce=(0,v.parsePath)(G),j=(0,A.formatNextPathnameInfo)({...(0,b.getNextPathnameInfo)(ce.pathname,{nextConfig:R,parseData:!0}),defaultLocale:C.router.defaultLocale,buildId:""});return Promise.resolve({type:"redirect-internal",newAs:""+j+ce.query+ce.hash,newUrl:""+j+ce.query+ce.hash})}return Promise.resolve({type:"redirect-external",destination:G})}return Promise.resolve({type:"next"})}async function Cn($){if(!await F($)||!$.fetchData)return null;try{const C=await $.fetchData(),R=await fr(C.dataHref,C.response,$);return{dataHref:C.dataHref,json:C.json,response:C.response,text:C.text,cacheKey:C.cacheKey,effect:R}}catch{return null}}const Ut={}.__NEXT_SCROLL_RESTORATION&&typeof window<"u"&&"scrollRestoration"in window.history&&!!function(){try{let $="__next";return sessionStorage.setItem($,$),sessionStorage.removeItem($),!0}catch{}}(),rn=Symbol("SSG_DATA_NOT_FOUND");function $f($,N,C){return fetch($,{credentials:"same-origin",method:C.method||"GET",headers:Object.assign({},C.headers,{"x-nextjs-data":"1"})}).then(R=>!R.ok&&N>1&&R.status>=500?$f($,N-1,C):R)}function Qf($){try{return JSON.parse($)}catch{return null}}function bn($){let{dataHref:N,inflightCache:C,isPrefetch:R,hasMiddleware:L,isServerRender:Q,parseJSON:Z,persistCache:G,isBackground:ce,unstable_skipClientCache:j}=$;const{href:X}=new URL(N,window.location.href);var Ee;const ge=fe=>$f(N,Q?3:1,{headers:Object.assign({},R?{purpose:"prefetch"}:{},R&&L?{"x-middleware-prefetch":"1"}:{}),method:(Ee=fe==null?void 0:fe.method)!=null?Ee:"GET"}).then(J=>J.ok&&(fe==null?void 0:fe.method)==="HEAD"?{dataHref:N,response:J,text:"",json:{},cacheKey:X}:J.text().then(ee=>{if(!J.ok){if(L&&[301,302,307,308].includes(J.status))return{dataHref:N,response:J,text:ee,json:{},cacheKey:X};if(J.status===404){var Y;if((Y=Qf(ee))!=null&&Y.notFound)return{dataHref:N,json:{notFound:rn},response:J,text:ee,cacheKey:X}}const Re=new Error("Failed to load static props");throw Q||(0,o.markAssetError)(Re),Re}return{dataHref:N,json:Z?Qf(ee):null,response:J,text:ee,cacheKey:X}})).then(J=>((!G||J.response.headers.get("x-middleware-cache")==="no-cache")&&delete C[X],J)).catch(J=>{throw j||delete C[X],(J.message==="Failed to fetch"||J.message==="NetworkError when attempting to fetch resource."||J.message==="Load failed")&&(0,o.markAssetError)(J),J});return j&&G?ge({}).then(fe=>(C[X]=Promise.resolve(fe),fe)):C[X]!==void 0?C[X]:C[X]=ge(ce?{method:"HEAD"}:{})}function ka(){return Math.random().toString(36).slice(2,10)}function bt($){let{url:N,router:C}=$;if(N===(0,P.addBasePath)((0,_.addLocale)(C.asPath,C.locale)))throw new Error("Invariant: attempted to hard navigate to the same URL "+N+" "+location.href);window.location.href=N}const Xf=$=>{let{route:N,router:C}=$,R=!1;const L=C.clc=()=>{R=!0};return()=>{if(R){const Z=new Error('Abort fetching component for route: "'+N+'"');throw Z.cancelled=!0,Z}L===C.clc&&(C.clc=null)}};class at{reload(){window.location.reload()}back(){window.history.back()}forward(){window.history.forward()}push(N,C,R){if(R===void 0&&(R={}),{}.__NEXT_SCROLL_RESTORATION&&Ut)try{sessionStorage.setItem("__next_scroll_"+this._key,JSON.stringify({x:self.pageXOffset,y:self.pageYOffset}))}catch{}return{url:N,as:C}=pe(this,N,C),this.change("pushState",N,C,R)}replace(N,C,R){return R===void 0&&(R={}),{url:N,as:C}=pe(this,N,C),this.change("replaceState",N,C,R)}async _bfl(N,C,R,L){if({}.__NEXT_CLIENT_ROUTER_FILTER_ENABLED){let ce=!1,j=!1;for(const X of[N,C])if(X){const Ee=(0,i.removeTrailingSlash)(new URL(X,"http://n").pathname),ge=(0,P.addBasePath)((0,_.addLocale)(Ee,R||this.locale));if(Ee!==(0,i.removeTrailingSlash)(new URL(this.asPath,"http://n").pathname)){var Q,Z;ce=ce||!!((Q=this._bfl_s)!=null&&Q.contains(Ee))||!!((Z=this._bfl_s)!=null&&Z.contains(ge));for(const fe of[Ee,ge]){const J=fe.split("/");for(let ee=0;!j&&ee{}))}}}return!1}async change(N,C,R,L,Q){var Z;if(!(0,I.isLocalURL)(C))return bt({url:C,router:this}),!1;const G=L._h===1;!G&&!L.shallow&&await this._bfl(R,void 0,L.locale);let ce=G||L._shouldResolveHref||(0,v.parsePath)(C).pathname===(0,v.parsePath)(R).pathname;const j={...this.state},X=this.isReady!==!0;this.isReady=!0;const Ee=this.isSsr;if(G||(this.isSsr=!1),G&&this.clc)return!1;const ge=j.locale;if({}.__NEXT_I18N_SUPPORT){j.locale=L.locale===!1?this.defaultLocale:L.locale||j.locale,typeof L.locale>"u"&&(L.locale=j.locale);const U=(0,m.parseRelativeUrl)((0,x.hasBasePath)(R)?(0,S.removeBasePath)(R):R),_t=(0,u.normalizeLocalePath)(U.pathname,this.locales);_t.detectedLocale&&(j.locale=_t.detectedLocale,U.pathname=(0,P.addBasePath)(U.pathname),R=(0,c.formatWithValidation)(U),C=(0,P.addBasePath)((0,u.normalizeLocalePath)((0,x.hasBasePath)(C)?(0,S.removeBasePath)(C):C,this.locales).pathname));let Jt=!1;if({}.__NEXT_I18N_SUPPORT){var fe;(fe=this.locales)!=null&&fe.includes(j.locale)||(U.pathname=(0,_.addLocale)(U.pathname,j.locale),bt({url:(0,c.formatWithValidation)(U),router:this}),Jt=!0)}const ct=(0,f.detectDomainLocale)(this.domainLocales,void 0,j.locale);if({}.__NEXT_I18N_SUPPORT&&!Jt&&ct&&this.isLocaleDomain&&self.location.hostname!==ct.domain){const sn=(0,S.removeBasePath)(R);bt({url:"http"+(ct.http?"":"s")+"://"+ct.domain+(0,P.addBasePath)((j.locale===ct.defaultLocale?"":"/"+j.locale)+(sn==="/"?"":sn)||"/"),router:this}),Jt=!0}if(Jt)return new Promise(()=>{})}p.ST&&performance.mark("routeChange");const{shallow:J=!1,scroll:ee=!0}=L,Y={shallow:J};this._inFlightRoute&&this.clc&&(Ee||at.events.emit("routeChangeError",D(),this._inFlightRoute,Y),this.clc(),this.clc=null),R=(0,P.addBasePath)((0,_.addLocale)((0,x.hasBasePath)(R)?(0,S.removeBasePath)(R):R,L.locale,this.defaultLocale));const Re=(0,w.removeLocale)((0,x.hasBasePath)(R)?(0,S.removeBasePath)(R):R,j.locale);this._inFlightRoute=R;const Ie=ge!==j.locale;if(!G&&this.onlyAHashChange(Re)&&!Ie){j.asPath=Re,at.events.emit("hashChangeStart",R,Y),this.changeState(N,C,R,{...L,scroll:!1}),ee&&this.scrollToHash(Re);try{await this.set(j,this.components[j.route],null)}catch(U){throw(0,a.default)(U)&&U.cancelled&&at.events.emit("routeChangeError",U,Re,Y),U}return at.events.emit("hashChangeComplete",R,Y),!0}let Te=(0,m.parseRelativeUrl)(C),{pathname:te,query:K}=Te;if((Z=this.components[te])!=null&&Z.__appRouter)return bt({url:R,router:this}),new Promise(()=>{});let Ft,xr;try{[Ft,{__rewrites:xr}]=await Promise.all([this.pageLoader.getPageList(),(0,o.getClientBuildManifest)(),this.pageLoader.getMiddleware()])}catch{return bt({url:R,router:this}),!1}!this.urlIsNew(Re)&&!Ie&&(N="replaceState");let lt=R;te=te&&(0,i.removeTrailingSlash)((0,S.removeBasePath)(te));let z=(0,i.removeTrailingSlash)(te);const De=R.startsWith("/")&&(0,m.parseRelativeUrl)(R).pathname,nn=!!(De&&z!==De&&(!(0,g.isDynamicRoute)(z)||!(0,h.getRouteMatcher)((0,E.getRouteRegex)(z))(De))),et=!L.shallow&&await F({asPath:R,locale:j.locale,router:this});if(G&&et&&(ce=!1),ce&&te!=="/_error")if(L._shouldResolveHref=!0,{}.__NEXT_HAS_REWRITES&&R.startsWith("/")){const U=(0,y.default)((0,P.addBasePath)((0,_.addLocale)(Re,j.locale),!0),Ft,xr,K,_t=>me(_t,Ft),this.locales);if(U.externalDest)return bt({url:R,router:this}),!0;et||(lt=U.asPath),U.matchedPage&&U.resolvedHref&&(te=U.resolvedHref,Te.pathname=(0,P.addBasePath)(te),et||(C=(0,c.formatWithValidation)(Te)))}else Te.pathname=me(te,Ft),Te.pathname!==te&&(te=Te.pathname,Te.pathname=(0,P.addBasePath)(te),et||(C=(0,c.formatWithValidation)(Te)));if(!(0,I.isLocalURL)(R))return bt({url:R,router:this}),!1;lt=(0,w.removeLocale)((0,S.removeBasePath)(lt),j.locale),z=(0,i.removeTrailingSlash)(te);let vt=!1;if((0,g.isDynamicRoute)(z)){const U=(0,m.parseRelativeUrl)(lt),_t=U.pathname,Jt=(0,E.getRouteRegex)(z);vt=(0,h.getRouteMatcher)(Jt)(_t);const ct=z===_t,sn=ct?(0,he.interpolateAs)(z,_t,K):{};if(!vt||ct&&!sn.result){const Nn=Object.keys(Jt.groups).filter(On=>!K[On]&&!Jt.groups[On].optional);if(Nn.length>0&&!et)throw new Error((ct?"The provided `href` ("+C+") value is missing query values ("+Nn.join(", ")+") to be interpolated properly. ":"The provided `as` value ("+_t+") is incompatible with the `href` value ("+z+"). ")+("Read more: https://nextjs.org/docs/messages/"+(ct?"href-interpolation-failed":"incompatible-href-as")))}else ct?R=(0,c.formatWithValidation)(Object.assign({},U,{pathname:sn.result,query:(0,ve.omit)(K,sn.params)})):Object.assign(K,vt)}G||at.events.emit("routeChangeStart",R,Y);const bo=this.pathname==="/404"||this.pathname==="/_error";try{var ut,on,Kf;let U=await this.getRouteInfo({route:z,pathname:te,query:K,as:R,resolvedAs:lt,routeProps:Y,locale:j.locale,isPreview:j.isPreview,hasMiddleware:et,unstable_skipClientCache:L.unstable_skipClientCache,isQueryUpdating:G&&!this.isFallback,isMiddlewareRewrite:nn});if(!G&&!L.shallow&&await this._bfl(R,"resolvedAs"in U?U.resolvedAs:void 0,j.locale),"route"in U&&et){te=U.route||z,z=te,Y.shallow||(K=Object.assign({},U.query||{},K));const He=(0,x.hasBasePath)(Te.pathname)?(0,S.removeBasePath)(Te.pathname):Te.pathname;if(vt&&te!==He&&Object.keys(vt).forEach(ft=>{vt&&K[ft]===vt[ft]&&delete K[ft]}),(0,g.isDynamicRoute)(te)){let Rr=!Y.shallow&&U.resolvedAs?U.resolvedAs:(0,P.addBasePath)((0,_.addLocale)(new URL(R,location.href).pathname,j.locale),!0);if((0,x.hasBasePath)(Rr)&&(Rr=(0,S.removeBasePath)(Rr)),{}.__NEXT_I18N_SUPPORT){const nd=(0,u.normalizeLocalePath)(Rr,this.locales);j.locale=nd.detectedLocale||j.locale,Rr=nd.pathname}const Ia=(0,E.getRouteRegex)(te),rd=(0,h.getRouteMatcher)(Ia)(new URL(Rr,location.href).pathname);rd&&Object.assign(K,rd)}}if("type"in U)return U.type==="redirect-internal"?this.change(N,U.newUrl,U.newAs,L):(bt({url:U.destination,router:this}),new Promise(()=>{}));const _t=U.Component;if(_t&&_t.unstable_scriptLoader&&[].concat(_t.unstable_scriptLoader()).forEach(ft=>{(0,s.handleClientScriptLoad)(ft.props)}),(U.__N_SSG||U.__N_SSP)&&U.props){if(U.props.pageProps&&U.props.pageProps.__N_REDIRECT){L.locale=!1;const He=U.props.pageProps.__N_REDIRECT;if(He.startsWith("/")&&U.props.pageProps.__N_REDIRECT_BASE_PATH!==!1){const ft=(0,m.parseRelativeUrl)(He);ft.pathname=me(ft.pathname,Ft);const{url:Rr,as:Ia}=pe(this,He,He);return this.change(N,Rr,Ia,L)}return bt({url:He,router:this}),new Promise(()=>{})}if(j.isPreview=!!U.props.__N_PREVIEW,U.props.notFound===rn){let He;try{await this.fetchComponent("/404"),He="/404"}catch{He="/_error"}if(U=await this.getRouteInfo({route:He,pathname:He,query:K,as:R,resolvedAs:lt,routeProps:{shallow:!1},locale:j.locale,isPreview:j.isPreview,isNotFound:!0}),"type"in U)throw new Error("Unexpected middleware effect on /404")}}G&&this.pathname==="/_error"&&((ut=self.__NEXT_DATA__.props)==null||(on=ut.pageProps)==null?void 0:on.statusCode)===500&&((Kf=U.props)!=null&&Kf.pageProps)&&(U.props.pageProps.statusCode=500);var Yf;const Jt=L.shallow&&j.route===((Yf=U.route)!=null?Yf:z);var Zf;const ct=(Zf=L.scroll)!=null?Zf:!G&&!Jt,Nn=Q??(ct?{x:0,y:0}:null),On={...j,route:z,pathname:te,query:K,asPath:Re,isFallback:!1};if(G&&bo){var Jf,ed,td;if(U=await this.getRouteInfo({route:this.pathname,pathname:this.pathname,query:K,as:R,resolvedAs:lt,routeProps:{shallow:!1},locale:j.locale,isPreview:j.isPreview,isQueryUpdating:G&&!this.isFallback}),"type"in U)throw new Error("Unexpected middleware effect on "+this.pathname);this.pathname==="/_error"&&((Jf=self.__NEXT_DATA__.props)==null||(ed=Jf.pageProps)==null?void 0:ed.statusCode)===500&&((td=U.props)!=null&&td.pageProps)&&(U.props.pageProps.statusCode=500);try{await this.set(On,U,Nn)}catch(He){throw(0,a.default)(He)&&He.cancelled&&at.events.emit("routeChangeError",He,Re,Y),He}return!0}if(at.events.emit("beforeHistoryChange",R,Y),this.changeState(N,C,R,L),!(G&&!Nn&&!X&&!Ie&&(0,M.compareRouterStates)(On,this.state))){try{await this.set(On,U,Nn)}catch(ft){if(ft.cancelled)U.error=U.error||ft;else throw ft}if(U.error)throw G||at.events.emit("routeChangeError",U.error,Re,Y),U.error;({}).__NEXT_I18N_SUPPORT&&j.locale&&(document.documentElement.lang=j.locale),G||at.events.emit("routeChangeComplete",R,Y),ct&&/#.+$/.test(R)&&this.scrollToHash(R)}return!0}catch(U){if((0,a.default)(U)&&U.cancelled)return!1;throw U}}changeState(N,C,R,L){L===void 0&&(L={}),(N!=="pushState"||(0,p.getURL)()!==R)&&(this._shallow=L.shallow,window.history[N]({url:C,as:R,options:L,__N:!0,key:this._key=N!=="pushState"?this._key:ka()},"",R))}async handleRouteInfoError(N,C,R,L,Q,Z){if(console.error(N),N.cancelled)throw N;if((0,o.isAssetError)(N)||Z)throw at.events.emit("routeChangeError",N,L,Q),bt({url:L,router:this}),D();try{let G;const{page:ce,styleSheets:j}=await this.fetchComponent("/_error"),X={props:G,Component:ce,styleSheets:j,err:N,error:N};if(!X.props)try{X.props=await this.getInitialProps(ce,{err:N,pathname:C,query:R})}catch(Ee){console.error("Error in error page `getInitialProps`: ",Ee),X.props={}}return X}catch(G){return this.handleRouteInfoError((0,a.default)(G)?G:new Error(G+""),C,R,L,Q,!0)}}async getRouteInfo(N){let{route:C,pathname:R,query:L,as:Q,resolvedAs:Z,routeProps:G,locale:ce,hasMiddleware:j,isPreview:X,unstable_skipClientCache:Ee,isQueryUpdating:ge,isMiddlewareRewrite:fe,isNotFound:J}=N,ee=C;try{var Y,Re,Ie,Te;const te=Xf({route:ee,router:this});let K=this.components[ee];if(G.shallow&&K&&this.route===ee)return K;j&&(K=void 0);let Ft=K&&!("initial"in K)?K:void 0;const xr=ge,lt={dataHref:this.pageLoader.getDataHref({href:(0,c.formatWithValidation)({pathname:R,query:L}),skipInterpolation:!0,asPath:J?"/404":Z,locale:ce}),hasMiddleware:!0,isServerRender:this.isSsr,parseJSON:!0,inflightCache:xr?this.sbc:this.sdc,persistCache:!X,isPrefetch:!1,unstable_skipClientCache:Ee,isBackground:xr};let z=ge&&!fe?null:await Cn({fetchData:()=>bn(lt),asPath:J?"/404":Z,locale:ce,router:this}).catch(ut=>{if(ge)return null;throw ut});if(z&&(R==="/_error"||R==="/404")&&(z.effect=void 0),ge&&(z?z.json=self.__NEXT_DATA__.props:z={json:self.__NEXT_DATA__.props}),te(),(z==null||(Y=z.effect)==null?void 0:Y.type)==="redirect-internal"||(z==null||(Re=z.effect)==null?void 0:Re.type)==="redirect-external")return z.effect;if((z==null||(Ie=z.effect)==null?void 0:Ie.type)==="rewrite"){const ut=(0,i.removeTrailingSlash)(z.effect.resolvedHref),on=await this.pageLoader.getPageList();if((!ge||on.includes(ut))&&(ee=ut,R=z.effect.resolvedHref,L={...L,...z.effect.parsedAs.query},Z=(0,S.removeBasePath)((0,u.normalizeLocalePath)(z.effect.parsedAs.pathname,this.locales).pathname),K=this.components[ee],G.shallow&&K&&this.route===ee&&!j))return{...K,route:ee}}if((0,O.isAPIRoute)(ee))return bt({url:Q,router:this}),new Promise(()=>{});const De=Ft||await this.fetchComponent(ee).then(ut=>({Component:ut.page,styleSheets:ut.styleSheets,__N_SSG:ut.mod.__N_SSG,__N_SSP:ut.mod.__N_SSP})),nn=z==null||(Te=z.response)==null?void 0:Te.headers.get("x-middleware-skip"),et=De.__N_SSG||De.__N_SSP;nn&&(z!=null&&z.dataHref)&&delete this.sdc[z.dataHref];const{props:vt,cacheKey:bo}=await this._getData(async()=>{if(et){if(z!=null&&z.json&&!nn)return{cacheKey:z.cacheKey,props:z.json};const ut=z!=null&&z.dataHref?z.dataHref:this.pageLoader.getDataHref({href:(0,c.formatWithValidation)({pathname:R,query:L}),asPath:Z,locale:ce}),on=await bn({dataHref:ut,isServerRender:this.isSsr,parseJSON:!0,inflightCache:nn?{}:this.sdc,persistCache:!X,isPrefetch:!1,unstable_skipClientCache:Ee});return{cacheKey:on.cacheKey,props:on.json||{}}}return{headers:{},props:await this.getInitialProps(De.Component,{pathname:R,query:L,asPath:Q,locale:ce,locales:this.locales,defaultLocale:this.defaultLocale})}});return De.__N_SSP&<.dataHref&&bo&&delete this.sdc[bo],!this.isPreview&&De.__N_SSG&&!ge&&bn(Object.assign({},lt,{isBackground:!0,persistCache:!1,inflightCache:this.sbc})).catch(()=>{}),vt.pageProps=Object.assign({},vt.pageProps),De.props=vt,De.route=ee,De.query=L,De.resolvedAs=Z,this.components[ee]=De,De}catch(te){return this.handleRouteInfoError((0,a.getProperError)(te),R,L,Q,G)}}set(N,C,R){return this.state=N,this.sub(C,this.components["/_app"].Component,R)}beforePopState(N){this._bps=N}onlyAHashChange(N){if(!this.asPath)return!1;const[C,R]=this.asPath.split("#"),[L,Q]=N.split("#");return Q&&C===L&&R===Q?!0:C!==L?!1:R!==Q}scrollToHash(N){const[,C=""]=N.split("#");(0,B.handleSmoothScroll)(()=>{if(C===""||C==="top"){window.scrollTo(0,0);return}const R=decodeURIComponent(C),L=document.getElementById(R);if(L){L.scrollIntoView();return}const Q=document.getElementsByName(R)[0];Q&&Q.scrollIntoView()},{onlyHashChange:this.onlyAHashChange(N)})}urlIsNew(N){return this.asPath!==N}async prefetch(N,C,R){if(C===void 0&&(C=N),R===void 0&&(R={}),typeof window<"u"&&(0,W.isBot)(window.navigator.userAgent))return;let L=(0,m.parseRelativeUrl)(N);const Q=L.pathname;let{pathname:Z,query:G}=L;const ce=Z;if({}.__NEXT_I18N_SUPPORT&&R.locale===!1){Z=(0,u.normalizeLocalePath)(Z,this.locales).pathname,L.pathname=Z,N=(0,c.formatWithValidation)(L);let ee=(0,m.parseRelativeUrl)(C);const Y=(0,u.normalizeLocalePath)(ee.pathname,this.locales);ee.pathname=Y.pathname,R.locale=Y.detectedLocale||this.defaultLocale,C=(0,c.formatWithValidation)(ee)}const j=await this.pageLoader.getPageList();let X=C;const Ee=typeof R.locale<"u"?R.locale||void 0:this.locale,ge=await F({asPath:C,locale:Ee,router:this});if({}.__NEXT_HAS_REWRITES&&C.startsWith("/")){let ee;({__rewrites:ee}=await(0,o.getClientBuildManifest)());const Y=(0,y.default)((0,P.addBasePath)((0,_.addLocale)(C,this.locale),!0),j,ee,L.query,Re=>me(Re,j),this.locales);if(Y.externalDest)return;ge||(X=(0,w.removeLocale)((0,S.removeBasePath)(Y.asPath),this.locale)),Y.matchedPage&&Y.resolvedHref&&(Z=Y.resolvedHref,L.pathname=Z,ge||(N=(0,c.formatWithValidation)(L)))}L.pathname=me(L.pathname,j),(0,g.isDynamicRoute)(L.pathname)&&(Z=L.pathname,L.pathname=Z,Object.assign(G,(0,h.getRouteMatcher)((0,E.getRouteRegex)(L.pathname))((0,v.parsePath)(C).pathname)||{}),ge||(N=(0,c.formatWithValidation)(L)));const fe={}.__NEXT_MIDDLEWARE_PREFETCH==="strict"?null:await Cn({fetchData:()=>bn({dataHref:this.pageLoader.getDataHref({href:(0,c.formatWithValidation)({pathname:ce,query:G}),skipInterpolation:!0,asPath:X,locale:Ee}),hasMiddleware:!0,isServerRender:this.isSsr,parseJSON:!0,inflightCache:this.sdc,persistCache:!this.isPreview,isPrefetch:!0}),asPath:C,locale:Ee,router:this});if((fe==null?void 0:fe.effect.type)==="rewrite"&&(L.pathname=fe.effect.resolvedHref,Z=fe.effect.resolvedHref,G={...G,...fe.effect.parsedAs.query},X=fe.effect.parsedAs.pathname,N=(0,c.formatWithValidation)(L)),(fe==null?void 0:fe.effect.type)==="redirect-external")return;const J=(0,i.removeTrailingSlash)(Z);await this._bfl(C,X,R.locale,!0)&&(this.components[Q]={__appRouter:!0}),await Promise.all([this.pageLoader._isSsg(J).then(ee=>ee?bn({dataHref:fe!=null&&fe.json?fe==null?void 0:fe.dataHref:this.pageLoader.getDataHref({href:N,asPath:X,locale:Ee}),isServerRender:!1,parseJSON:!0,inflightCache:this.sdc,persistCache:!this.isPreview,isPrefetch:!0,unstable_skipClientCache:R.unstable_skipClientCache||R.priority&&!!{}.__NEXT_OPTIMISTIC_CLIENT_CACHE}).then(()=>!1).catch(()=>!1):!1),this.pageLoader[R.priority?"loadPage":"prefetch"](J)])}async fetchComponent(N){const C=Xf({route:N,router:this});try{const R=await this.pageLoader.loadPage(N);return C(),R}catch(R){throw C(),R}}_getData(N){let C=!1;const R=()=>{C=!0};return this.clc=R,N().then(L=>{if(R===this.clc&&(this.clc=null),C){const Q=new Error("Loading initial props cancelled");throw Q.cancelled=!0,Q}return L})}_getFlightData(N){return bn({dataHref:N,isServerRender:!0,parseJSON:!1,inflightCache:this.sdc,persistCache:!1,isPrefetch:!1}).then(C=>{let{text:R}=C;return{data:R}})}getInitialProps(N,C){const{Component:R}=this.components["/_app"],L=this._wrapApp(R);return C.AppTree=L,(0,p.loadGetInitialProps)(R,{AppTree:L,Component:N,router:this,ctx:C})}get route(){return this.state.route}get pathname(){return this.state.pathname}get query(){return this.state.query}get asPath(){return this.state.asPath}get locale(){return this.state.locale}get isFallback(){return this.state.isFallback}get isPreview(){return this.state.isPreview}constructor(N,C,R,{initialProps:L,pageLoader:Q,App:Z,wrapApp:G,Component:ce,err:j,subscription:X,isFallback:Ee,locale:ge,locales:fe,defaultLocale:J,domainLocales:ee,isPreview:Y}){this.sdc={},this.sbc={},this.isFirstPopStateEvent=!0,this._key=ka(),this.onPopState=Te=>{const{isFirstPopStateEvent:te}=this;this.isFirstPopStateEvent=!1;const K=Te.state;if(!K){const{pathname:et,query:vt}=this;this.changeState("replaceState",(0,c.formatWithValidation)({pathname:(0,P.addBasePath)(et),query:vt}),(0,p.getURL)());return}if(K.__NA){window.location.reload();return}if(!K.__N||te&&this.locale===K.options.locale&&K.as===this.asPath)return;let Ft;const{url:xr,as:lt,options:z,key:De}=K;if({}.__NEXT_SCROLL_RESTORATION&&Ut&&this._key!==De){try{sessionStorage.setItem("__next_scroll_"+this._key,JSON.stringify({x:self.pageXOffset,y:self.pageYOffset}))}catch{}try{const et=sessionStorage.getItem("__next_scroll_"+De);Ft=JSON.parse(et)}catch{Ft={x:0,y:0}}}this._key=De;const{pathname:nn}=(0,m.parseRelativeUrl)(xr);this.isSsr&<===(0,P.addBasePath)(this.asPath)&&nn===(0,P.addBasePath)(this.pathname)||this._bps&&!this._bps(K)||this.change("replaceState",xr,lt,Object.assign({},z,{shallow:z.shallow&&this._shallow,locale:z.locale||this.defaultLocale,_h:0}),Ft)};const Re=(0,i.removeTrailingSlash)(N);if(this.components={},N!=="/_error"&&(this.components[Re]={Component:ce,initial:!0,props:L,err:j,__N_SSG:L&&L.__N_SSG,__N_SSP:L&&L.__N_SSP}),this.components["/_app"]={Component:Z,styleSheets:[]},{}.__NEXT_CLIENT_ROUTER_FILTER_ENABLED){const{BloomFilter:Te}=J1(),te={}.__NEXT_CLIENT_ROUTER_S_FILTER,K={}.__NEXT_CLIENT_ROUTER_D_FILTER;te!=null&&te.numHashes&&(this._bfl_s=new Te(te.numItems,te.errorRate),this._bfl_s.import(te)),K!=null&&K.numHashes&&(this._bfl_d=new Te(K.numItems,K.errorRate),this._bfl_d.import(K))}this.events=at.events,this.pageLoader=Q;const Ie=(0,g.isDynamicRoute)(N)&&self.__NEXT_DATA__.autoExport;if(this.basePath={}.__NEXT_ROUTER_BASEPATH||"",this.sub=X,this.clc=null,this._wrapApp=G,this.isSsr=!0,this.isLocaleDomain=!1,this.isReady=!!(self.__NEXT_DATA__.gssp||self.__NEXT_DATA__.gip||self.__NEXT_DATA__.appGip&&!self.__NEXT_DATA__.gsp||!Ie&&!self.location.search&&!{}.__NEXT_HAS_REWRITES),{}.__NEXT_I18N_SUPPORT&&(this.locales=fe,this.defaultLocale=J,this.domainLocales=ee,this.isLocaleDomain=!!(0,f.detectDomainLocale)(ee,self.location.hostname)),this.state={route:Re,pathname:N,query:C,asPath:Ie?N:R,isPreview:!!Y,locale:{}.__NEXT_I18N_SUPPORT?ge:void 0,isFallback:Ee},this._initialMatchesMiddlewarePromise=Promise.resolve(!1),typeof window<"u"){if(!R.startsWith("//")){const Te={locale:ge},te=(0,p.getURL)();this._initialMatchesMiddlewarePromise=F({router:this,locale:ge,asPath:te}).then(K=>(Te._shouldResolveHref=R!==N,this.changeState("replaceState",K?te:(0,c.formatWithValidation)({pathname:(0,P.addBasePath)(N),query:C}),te,Te),K))}window.addEventListener("popstate",this.onPopState),{}.__NEXT_SCROLL_RESTORATION&&Ut&&(window.history.scrollRestoration="manual")}}}at.events=(0,d.default)()}(gl)),gl}var uu={},qp;function tS(){return qp||(qp=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"RouterContext",{enumerable:!0,get:function(){return n}});const n=Sr._(le).default.createContext(null)}(uu)),uu}var hs={exports:{}},Gp;function rS(){return Gp||(Gp=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o}});const n=Sr._(le),i=Sv();function o(s){function a(l){return n.default.createElement(s,{router:(0,i.useRouter)(),...l})}return a.getInitialProps=s.getInitialProps,a.origGetInitialProps=s.origGetInitialProps,a}(typeof t.default=="function"||typeof t.default=="object"&&t.default!==null)&&typeof t.default.__esModule>"u"&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}(hs,hs.exports)),hs.exports}var Vp;function Sv(){return Vp||(Vp=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});function r(f,v){for(var _ in v)Object.defineProperty(f,_,{enumerable:!0,get:v[_]})}r(t,{Router:function(){return o.default},default:function(){return y},withRouter:function(){return l.default},useRouter:function(){return h},createRouter:function(){return E},makePublicRouterInstance:function(){return c}});const n=Sr,i=n._(le),o=n._(eS()),s=tS(),a=n._(cv()),l=n._(rS()),u={router:null,readyCallbacks:[],ready(f){if(this.router)return f();typeof window<"u"&&this.readyCallbacks.push(f)}},d=["pathname","route","query","asPath","components","isFallback","basePath","locale","locales","defaultLocale","isReady","isPreview","isLocaleDomain","domainLocales"],p=["routeChangeStart","beforeHistoryChange","routeChangeComplete","routeChangeError","hashChangeStart","hashChangeComplete"],g=["push","replace","reload","back","prefetch","beforePopState"];Object.defineProperty(u,"events",{get(){return o.default.events}});function m(){if(!u.router){const f=`No router instance found. +You should only use "next/router" on the client side of your app. +`;throw new Error(f)}return u.router}d.forEach(f=>{Object.defineProperty(u,f,{get(){return m()[f]}})}),g.forEach(f=>{u[f]=function(){for(var v=arguments.length,_=new Array(v),w=0;w{u.ready(()=>{o.default.events.on(f,function(){for(var v=arguments.length,_=new Array(v),w=0;ww()),u.readyCallbacks=[],u.router}function c(f){const v=f,_={};for(const w of d){if(typeof v[w]=="object"){_[w]=Object.assign(Array.isArray(v[w])?[]:{},v[w]);continue}_[w]=v[w]}return _.events=o.default.events,g.forEach(w=>{_[w]=function(){for(var S=arguments.length,P=new Array(S),x=0;x"u"&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}(Zo,Zo.exports)),Zo.exports}var nS=Sv();(function(e){Object.defineProperty(e,"__esModule",{value:!0});var t=m1,r=nS;function n(l){return l&&typeof l=="object"&&"default"in l?l:{default:l}}var i=n(le);function o(){return o=Object.assign?Object.assign.bind():function(l){for(var u=1;u=0||(f[E]=y[E]);return f}(l,s);try{u=r.useRouter()}catch{}if(!p&&u&&(p=u.locale),typeof g=="string"&&(g=new Date(g)),!p)throw new Error(void 0);return i.default.createElement(t.IntlProvider,o({locale:p,now:g},m),d)}e.NextIntlClientProvider=a,e.NextIntlProvider=a,Object.keys(t).forEach(function(l){l==="default"||e.hasOwnProperty(l)||Object.defineProperty(e,l,{enumerable:!0,get:function(){return t[l]}})})})(jy);Fy.exports=jy;var iS=Fy.exports;const oS={Common:{optionalField:"Optional",select:"Select...",startTyping:"Start typing...",noOptions:"No options",searching:"Searching...",show:"Show",hide:"Hide"},Statuses:{ACCEPTED:"Accepted",PASSED:"Passed",PAID:"Paid",PENDING:"Pending",IN_PROGRESS:"In Progress",DECLINED:"Declined",DENIED:"Denied",UNPAID:"Unpaid",FAILED:"Failed",CANCELED:"Canceled"}};function sS(e){return Et.jsx(iS.NextIntlProvider,{messages:oS,locale:"en",children:e.children})}function Pv(e){var t,r,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e))for(t=0;te&&(t=0,n=r,r=new Map)}return{get:function(s){var a=r.get(s);if(a!==void 0)return a;if((a=n.get(s))!==void 0)return i(s,a),a},set:function(s,a){r.has(s)?r.set(s,a):i(s,a)}}}var Tv="!";function mS(e){var t=e.separator||":",r=t.length===1,n=t[0],i=t.length;return function(s){for(var a=[],l=0,u=0,d,p=0;pu?d-u:void 0;return{modifiers:a,hasImportantModifier:y,baseClassName:h,maybePostfixModifierPosition:E}}}function gS(e){if(e.length<=1)return e;var t=[],r=[];return e.forEach(function(n){var i=n[0]==="[";i?(t.push.apply(t,r.sort().concat([n])),r=[]):r.push(n)}),t.push.apply(t,r.sort()),t}function yS(e){return{cache:pS(e.cacheSize),splitModifiers:mS(e),...uS(e)}}var vS=/\s+/;function _S(e,t){var r=t.splitModifiers,n=t.getClassGroupId,i=t.getConflictingClassGroupIds,o=new Set;return e.trim().split(vS).map(function(s){var a=r(s),l=a.modifiers,u=a.hasImportantModifier,d=a.baseClassName,p=a.maybePostfixModifierPosition,g=n(p?d.substring(0,p):d),m=!!p;if(!g){if(!p)return{isTailwindClass:!1,originalClassName:s};if(g=n(d),!g)return{isTailwindClass:!1,originalClassName:s};m=!1}var y=gS(l).join(":"),h=u?y+Tv:y;return{isTailwindClass:!0,modifierId:h,classGroupId:g,originalClassName:s,hasPostfixModifier:m}}).reverse().filter(function(s){if(!s.isTailwindClass)return!0;var a=s.modifierId,l=s.classGroupId,u=s.hasPostfixModifier,d=a+l;return o.has(d)?!1:(o.add(d),i(l,u).forEach(function(p){return o.add(a+p)}),!0)}).reverse().map(function(s){return s.originalClassName}).join(" ")}function wS(){for(var e=arguments.length,t=new Array(e),r=0;r(window.addEventListener("message",r),()=>window.removeEventListener("message",r)),[])}const Nv=le.createContext(void 0);function cu(e){const[t,r]=le.useState(!1),[n,i]=le.useState(null);DS(e.action,s=>{r(!0),i(s)});function o(){r(!1),vu(ks.CloseNui)}return le.useEffect(()=>{function s(a){a.key==="Escape"&&o()}return window.addEventListener("keydown",s),()=>{window.removeEventListener("keydown",s)}},[]),Et.jsx(Nv.Provider,{value:{data:n,hide:o,visible:t},children:Et.jsx("div",{className:BS(t?"visible":"hidden"),children:e.children})})}function dP(){const e=le.useContext(Nv);if(!e)throw new Error("useVisibility must be used within a VisibilityProvider");return e}var Aa=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},La=typeof window>"u"||"Deno"in window;function Gt(){}function HS(e,t){return typeof e=="function"?e(t):e}function US(e){return typeof e=="number"&&e>=0&&e!==1/0}function FS(e,t){return Math.max(e+(t||0)-Date.now(),0)}function Xp(e,t){const{type:r="all",exact:n,fetchStatus:i,predicate:o,queryKey:s,stale:a}=e;if(s){if(n){if(t.queryHash!==Vf(s,t.options))return!1}else if(!yo(t.queryKey,s))return!1}if(r!=="all"){const l=t.isActive();if(r==="active"&&!l||r==="inactive"&&l)return!1}return!(typeof a=="boolean"&&t.isStale()!==a||typeof i<"u"&&i!==t.state.fetchStatus||o&&!o(t))}function Kp(e,t){const{exact:r,status:n,predicate:i,mutationKey:o}=e;if(o){if(!t.options.mutationKey)return!1;if(r){if(go(t.options.mutationKey)!==go(o))return!1}else if(!yo(t.options.mutationKey,o))return!1}return!(n&&t.state.status!==n||i&&!i(t))}function Vf(e,t){return((t==null?void 0:t.queryKeyHashFn)||go)(e)}function go(e){return JSON.stringify(e,(t,r)=>bc(r)?Object.keys(r).sort().reduce((n,i)=>(n[i]=r[i],n),{}):r)}function yo(e,t){return e===t?!0:typeof e!=typeof t?!1:e&&t&&typeof e=="object"&&typeof t=="object"?!Object.keys(t).some(r=>!yo(e[r],t[r])):!1}function Ov(e,t){if(e===t)return e;const r=Yp(e)&&Yp(t);if(r||bc(e)&&bc(t)){const n=r?e.length:Object.keys(e).length,i=r?t:Object.keys(t),o=i.length,s=r?[]:{};let a=0;for(let l=0;l"u")return!0;const r=t.prototype;return!(!Zp(r)||!r.hasOwnProperty("isPrototypeOf"))}function Zp(e){return Object.prototype.toString.call(e)==="[object Object]"}function Av(e){return new Promise(t=>{setTimeout(t,e)})}function Jp(e){Av(0).then(e)}function jS(e,t,r){return typeof r.structuralSharing=="function"?r.structuralSharing(e,t):r.structuralSharing!==!1?Ov(e,t):t}function zS(e,t,r=0){const n=[...e,t];return r&&n.length>r?n.slice(1):n}function qS(e,t,r=0){const n=[t,...e];return r&&n.length>r?n.slice(0,-1):n}var hn,Ir,Zn,tm,GS=(tm=class extends Aa{constructor(){super();ie(this,hn,void 0);ie(this,Ir,void 0);ie(this,Zn,void 0);q(this,Zn,t=>{if(!La&&window.addEventListener){const r=()=>t();return window.addEventListener("visibilitychange",r,!1),()=>{window.removeEventListener("visibilitychange",r)}}})}onSubscribe(){T(this,Ir)||this.setEventListener(T(this,Zn))}onUnsubscribe(){var t;this.hasListeners()||((t=T(this,Ir))==null||t.call(this),q(this,Ir,void 0))}setEventListener(t){var r;q(this,Zn,t),(r=T(this,Ir))==null||r.call(this),q(this,Ir,t(n=>{typeof n=="boolean"?this.setFocused(n):this.onFocus()}))}setFocused(t){T(this,hn)!==t&&(q(this,hn,t),this.onFocus())}onFocus(){this.listeners.forEach(t=>{t()})}isFocused(){var t;return typeof T(this,hn)=="boolean"?T(this,hn):((t=globalThis.document)==null?void 0:t.visibilityState)!=="hidden"}},hn=new WeakMap,Ir=new WeakMap,Zn=new WeakMap,tm),Nc=new GS,Jn,Mr,ei,rm,VS=(rm=class extends Aa{constructor(){super();ie(this,Jn,!0);ie(this,Mr,void 0);ie(this,ei,void 0);q(this,ei,t=>{if(!La&&window.addEventListener){const r=()=>t(!0),n=()=>t(!1);return window.addEventListener("online",r,!1),window.addEventListener("offline",n,!1),()=>{window.removeEventListener("online",r),window.removeEventListener("offline",n)}}})}onSubscribe(){T(this,Mr)||this.setEventListener(T(this,ei))}onUnsubscribe(){var t;this.hasListeners()||((t=T(this,Mr))==null||t.call(this),q(this,Mr,void 0))}setEventListener(t){var r;q(this,ei,t),(r=T(this,Mr))==null||r.call(this),q(this,Mr,t(this.setOnline.bind(this)))}setOnline(t){T(this,Jn)!==t&&(q(this,Jn,t),this.listeners.forEach(n=>{n(t)}))}isOnline(){return T(this,Jn)}},Jn=new WeakMap,Mr=new WeakMap,ei=new WeakMap,rm),aa=new VS;function WS(e){return Math.min(1e3*2**e,3e4)}function Wf(e){return(e??"online")==="online"?aa.isOnline():!0}var Lv=class{constructor(e){this.revert=e==null?void 0:e.revert,this.silent=e==null?void 0:e.silent}};function fu(e){return e instanceof Lv}function kv(e){let t=!1,r=0,n=!1,i,o,s;const a=new Promise((E,c)=>{o=E,s=c}),l=E=>{var c;n||(m(new Lv(E)),(c=e.abort)==null||c.call(e))},u=()=>{t=!0},d=()=>{t=!1},p=()=>!Nc.isFocused()||e.networkMode!=="always"&&!aa.isOnline(),g=E=>{var c;n||(n=!0,(c=e.onSuccess)==null||c.call(e,E),i==null||i(),o(E))},m=E=>{var c;n||(n=!0,(c=e.onError)==null||c.call(e,E),i==null||i(),s(E))},y=()=>new Promise(E=>{var c;i=f=>{const v=n||!p();return v&&E(f),v},(c=e.onPause)==null||c.call(e)}).then(()=>{var E;i=void 0,n||(E=e.onContinue)==null||E.call(e)}),h=()=>{if(n)return;let E;try{E=e.fn()}catch(c){E=Promise.reject(c)}Promise.resolve(E).then(g).catch(c=>{var S;if(n)return;const f=e.retry??(La?0:3),v=e.retryDelay??WS,_=typeof v=="function"?v(r,c):v,w=f===!0||typeof f=="number"&&r{if(p())return y()}).then(()=>{t?m(c):h()})})};return Wf(e.networkMode)?h():y().then(h),{promise:a,cancel:l,continue:()=>(i==null?void 0:i())?a:Promise.resolve(),cancelRetry:u,continueRetry:d}}function $S(){let e=[],t=0,r=d=>{d()},n=d=>{d()};const i=d=>{let p;t++;try{p=d()}finally{t--,t||a()}return p},o=d=>{t?e.push(d):Jp(()=>{r(d)})},s=d=>(...p)=>{o(()=>{d(...p)})},a=()=>{const d=e;e=[],d.length&&Jp(()=>{n(()=>{d.forEach(p=>{r(p)})})})};return{batch:i,batchCalls:s,schedule:o,setNotifyFunction:d=>{r=d},setBatchNotifyFunction:d=>{n=d}}}var nt=$S(),pn,nm,Iv=(nm=class{constructor(){ie(this,pn,void 0)}destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),US(this.gcTime)&&q(this,pn,setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(La?1/0:5*60*1e3))}clearGcTimeout(){T(this,pn)&&(clearTimeout(T(this,pn)),q(this,pn,void 0))}},pn=new WeakMap,nm),ti,ri,Nt,Br,Ot,qe,vo,mn,ni,Ls,Vt,dr,im,QS=(im=class extends Iv{constructor(t){super();ie(this,ni);ie(this,Vt);ie(this,ti,void 0);ie(this,ri,void 0);ie(this,Nt,void 0);ie(this,Br,void 0);ie(this,Ot,void 0);ie(this,qe,void 0);ie(this,vo,void 0);ie(this,mn,void 0);q(this,mn,!1),q(this,vo,t.defaultOptions),Ue(this,ni,Ls).call(this,t.options),q(this,qe,[]),q(this,Nt,t.cache),this.queryKey=t.queryKey,this.queryHash=t.queryHash,q(this,ti,t.state||XS(this.options)),this.state=T(this,ti),this.scheduleGc()}get meta(){return this.options.meta}optionalRemove(){!T(this,qe).length&&this.state.fetchStatus==="idle"&&T(this,Nt).remove(this)}setData(t,r){const n=jS(this.state.data,t,this.options);return Ue(this,Vt,dr).call(this,{data:n,type:"success",dataUpdatedAt:r==null?void 0:r.updatedAt,manual:r==null?void 0:r.manual}),n}setState(t,r){Ue(this,Vt,dr).call(this,{type:"setState",state:t,setStateOptions:r})}cancel(t){var n;const r=T(this,Br);return(n=T(this,Ot))==null||n.cancel(t),r?r.then(Gt).catch(Gt):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(T(this,ti))}isActive(){return T(this,qe).some(t=>t.options.enabled!==!1)}isDisabled(){return this.getObserversCount()>0&&!this.isActive()}isStale(){return this.state.isInvalidated||!this.state.dataUpdatedAt||T(this,qe).some(t=>t.getCurrentResult().isStale)}isStaleByTime(t=0){return this.state.isInvalidated||!this.state.dataUpdatedAt||!FS(this.state.dataUpdatedAt,t)}onFocus(){var r;const t=T(this,qe).find(n=>n.shouldFetchOnWindowFocus());t==null||t.refetch({cancelRefetch:!1}),(r=T(this,Ot))==null||r.continue()}onOnline(){var r;const t=T(this,qe).find(n=>n.shouldFetchOnReconnect());t==null||t.refetch({cancelRefetch:!1}),(r=T(this,Ot))==null||r.continue()}addObserver(t){T(this,qe).includes(t)||(T(this,qe).push(t),this.clearGcTimeout(),T(this,Nt).notify({type:"observerAdded",query:this,observer:t}))}removeObserver(t){T(this,qe).includes(t)&&(q(this,qe,T(this,qe).filter(r=>r!==t)),T(this,qe).length||(T(this,Ot)&&(T(this,mn)?T(this,Ot).cancel({revert:!0}):T(this,Ot).cancelRetry()),this.scheduleGc()),T(this,Nt).notify({type:"observerRemoved",query:this,observer:t}))}getObserversCount(){return T(this,qe).length}invalidate(){this.state.isInvalidated||Ue(this,Vt,dr).call(this,{type:"invalidate"})}fetch(t,r){var u,d,p,g;if(this.state.fetchStatus!=="idle"){if(this.state.dataUpdatedAt&&(r!=null&&r.cancelRefetch))this.cancel({silent:!0});else if(T(this,Br))return(u=T(this,Ot))==null||u.continueRetry(),T(this,Br)}if(t&&Ue(this,ni,Ls).call(this,t),!this.options.queryFn){const m=T(this,qe).find(y=>y.options.queryFn);m&&Ue(this,ni,Ls).call(this,m.options)}const n=new AbortController,i={queryKey:this.queryKey,meta:this.meta},o=m=>{Object.defineProperty(m,"signal",{enumerable:!0,get:()=>(q(this,mn,!0),n.signal)})};o(i);const s=()=>this.options.queryFn?(q(this,mn,!1),this.options.persister?this.options.persister(this.options.queryFn,i,this):this.options.queryFn(i)):Promise.reject(new Error(`Missing queryFn: '${this.options.queryHash}'`)),a={fetchOptions:r,options:this.options,queryKey:this.queryKey,state:this.state,fetchFn:s};o(a),(d=this.options.behavior)==null||d.onFetch(a,this),q(this,ri,this.state),(this.state.fetchStatus==="idle"||this.state.fetchMeta!==((p=a.fetchOptions)==null?void 0:p.meta))&&Ue(this,Vt,dr).call(this,{type:"fetch",meta:(g=a.fetchOptions)==null?void 0:g.meta});const l=m=>{var y,h,E,c;fu(m)&&m.silent||Ue(this,Vt,dr).call(this,{type:"error",error:m}),fu(m)||((h=(y=T(this,Nt).config).onError)==null||h.call(y,m,this),(c=(E=T(this,Nt).config).onSettled)==null||c.call(E,this.state.data,m,this)),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1};return q(this,Ot,kv({fn:a.fetchFn,abort:n.abort.bind(n),onSuccess:m=>{var y,h,E,c;if(typeof m>"u"){l(new Error(`${this.queryHash} data is undefined`));return}this.setData(m),(h=(y=T(this,Nt).config).onSuccess)==null||h.call(y,m,this),(c=(E=T(this,Nt).config).onSettled)==null||c.call(E,m,this.state.error,this),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1},onError:l,onFail:(m,y)=>{Ue(this,Vt,dr).call(this,{type:"failed",failureCount:m,error:y})},onPause:()=>{Ue(this,Vt,dr).call(this,{type:"pause"})},onContinue:()=>{Ue(this,Vt,dr).call(this,{type:"continue"})},retry:a.options.retry,retryDelay:a.options.retryDelay,networkMode:a.options.networkMode})),q(this,Br,T(this,Ot).promise),T(this,Br)}},ti=new WeakMap,ri=new WeakMap,Nt=new WeakMap,Br=new WeakMap,Ot=new WeakMap,qe=new WeakMap,vo=new WeakMap,mn=new WeakMap,ni=new WeakSet,Ls=function(t){this.options={...T(this,vo),...t},this.updateGcTime(this.options.gcTime)},Vt=new WeakSet,dr=function(t){const r=n=>{switch(t.type){case"failed":return{...n,fetchFailureCount:t.failureCount,fetchFailureReason:t.error};case"pause":return{...n,fetchStatus:"paused"};case"continue":return{...n,fetchStatus:"fetching"};case"fetch":return{...n,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:t.meta??null,fetchStatus:Wf(this.options.networkMode)?"fetching":"paused",...!n.dataUpdatedAt&&{error:null,status:"pending"}};case"success":return{...n,data:t.data,dataUpdateCount:n.dataUpdateCount+1,dataUpdatedAt:t.dataUpdatedAt??Date.now(),error:null,isInvalidated:!1,status:"success",...!t.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};case"error":const i=t.error;return fu(i)&&i.revert&&T(this,ri)?{...T(this,ri),fetchStatus:"idle"}:{...n,error:i,errorUpdateCount:n.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:n.fetchFailureCount+1,fetchFailureReason:i,fetchStatus:"idle",status:"error"};case"invalidate":return{...n,isInvalidated:!0};case"setState":return{...n,...t.state}}};this.state=r(this.state),nt.batch(()=>{T(this,qe).forEach(n=>{n.onQueryUpdate()}),T(this,Nt).notify({query:this,type:"updated",action:t})})},im);function XS(e){const t=typeof e.initialData=="function"?e.initialData():e.initialData,r=typeof t<"u",n=r?typeof e.initialDataUpdatedAt=="function"?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:r?n??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:r?"success":"pending",fetchStatus:"idle"}}var nr,om,KS=(om=class extends Aa{constructor(t={}){super();ie(this,nr,void 0);this.config=t,q(this,nr,new Map)}build(t,r,n){const i=r.queryKey,o=r.queryHash??Vf(i,r);let s=this.get(o);return s||(s=new QS({cache:this,queryKey:i,queryHash:o,options:t.defaultQueryOptions(r),state:n,defaultOptions:t.getQueryDefaults(i)}),this.add(s)),s}add(t){T(this,nr).has(t.queryHash)||(T(this,nr).set(t.queryHash,t),this.notify({type:"added",query:t}))}remove(t){const r=T(this,nr).get(t.queryHash);r&&(t.destroy(),r===t&&T(this,nr).delete(t.queryHash),this.notify({type:"removed",query:t}))}clear(){nt.batch(()=>{this.getAll().forEach(t=>{this.remove(t)})})}get(t){return T(this,nr).get(t)}getAll(){return[...T(this,nr).values()]}find(t){const r={exact:!0,...t};return this.getAll().find(n=>Xp(r,n))}findAll(t={}){const r=this.getAll();return Object.keys(t).length>0?r.filter(n=>Xp(t,n)):r}notify(t){nt.batch(()=>{this.listeners.forEach(r=>{r(t)})})}onFocus(){nt.batch(()=>{this.getAll().forEach(t=>{t.onFocus()})})}onOnline(){nt.batch(()=>{this.getAll().forEach(t=>{t.onOnline()})})}},nr=new WeakMap,om),ir,_o,wt,ii,or,Nr,sm,YS=(sm=class extends Iv{constructor(t){super();ie(this,or);ie(this,ir,void 0);ie(this,_o,void 0);ie(this,wt,void 0);ie(this,ii,void 0);this.mutationId=t.mutationId,q(this,_o,t.defaultOptions),q(this,wt,t.mutationCache),q(this,ir,[]),this.state=t.state||ZS(),this.setOptions(t.options),this.scheduleGc()}setOptions(t){this.options={...T(this,_o),...t},this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(t){T(this,ir).includes(t)||(T(this,ir).push(t),this.clearGcTimeout(),T(this,wt).notify({type:"observerAdded",mutation:this,observer:t}))}removeObserver(t){q(this,ir,T(this,ir).filter(r=>r!==t)),this.scheduleGc(),T(this,wt).notify({type:"observerRemoved",mutation:this,observer:t})}optionalRemove(){T(this,ir).length||(this.state.status==="pending"?this.scheduleGc():T(this,wt).remove(this))}continue(){var t;return((t=T(this,ii))==null?void 0:t.continue())??this.execute(this.state.variables)}async execute(t){var i,o,s,a,l,u,d,p,g,m,y,h,E,c,f,v,_,w,S,P;const r=()=>(q(this,ii,kv({fn:()=>this.options.mutationFn?this.options.mutationFn(t):Promise.reject(new Error("No mutationFn found")),onFail:(x,O)=>{Ue(this,or,Nr).call(this,{type:"failed",failureCount:x,error:O})},onPause:()=>{Ue(this,or,Nr).call(this,{type:"pause"})},onContinue:()=>{Ue(this,or,Nr).call(this,{type:"continue"})},retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode})),T(this,ii).promise),n=this.state.status==="pending";try{if(!n){Ue(this,or,Nr).call(this,{type:"pending",variables:t}),await((o=(i=T(this,wt).config).onMutate)==null?void 0:o.call(i,t,this));const O=await((a=(s=this.options).onMutate)==null?void 0:a.call(s,t));O!==this.state.context&&Ue(this,or,Nr).call(this,{type:"pending",context:O,variables:t})}const x=await r();return await((u=(l=T(this,wt).config).onSuccess)==null?void 0:u.call(l,x,t,this.state.context,this)),await((p=(d=this.options).onSuccess)==null?void 0:p.call(d,x,t,this.state.context)),await((m=(g=T(this,wt).config).onSettled)==null?void 0:m.call(g,x,null,this.state.variables,this.state.context,this)),await((h=(y=this.options).onSettled)==null?void 0:h.call(y,x,null,t,this.state.context)),Ue(this,or,Nr).call(this,{type:"success",data:x}),x}catch(x){try{throw await((c=(E=T(this,wt).config).onError)==null?void 0:c.call(E,x,t,this.state.context,this)),await((v=(f=this.options).onError)==null?void 0:v.call(f,x,t,this.state.context)),await((w=(_=T(this,wt).config).onSettled)==null?void 0:w.call(_,void 0,x,this.state.variables,this.state.context,this)),await((P=(S=this.options).onSettled)==null?void 0:P.call(S,void 0,x,t,this.state.context)),x}finally{Ue(this,or,Nr).call(this,{type:"error",error:x})}}}},ir=new WeakMap,_o=new WeakMap,wt=new WeakMap,ii=new WeakMap,or=new WeakSet,Nr=function(t){const r=n=>{switch(t.type){case"failed":return{...n,failureCount:t.failureCount,failureReason:t.error};case"pause":return{...n,isPaused:!0};case"continue":return{...n,isPaused:!1};case"pending":return{...n,context:t.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:!Wf(this.options.networkMode),status:"pending",variables:t.variables,submittedAt:Date.now()};case"success":return{...n,data:t.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...n,data:void 0,error:t.error,failureCount:n.failureCount+1,failureReason:t.error,isPaused:!1,status:"error"}}};this.state=r(this.state),nt.batch(()=>{T(this,ir).forEach(n=>{n.onMutationUpdate(t)}),T(this,wt).notify({mutation:this,type:"updated",action:t})})},sm);function ZS(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var At,wo,gn,am,JS=(am=class extends Aa{constructor(t={}){super();ie(this,At,void 0);ie(this,wo,void 0);ie(this,gn,void 0);this.config=t,q(this,At,[]),q(this,wo,0)}build(t,r,n){const i=new YS({mutationCache:this,mutationId:++No(this,wo)._,options:t.defaultMutationOptions(r),state:n});return this.add(i),i}add(t){T(this,At).push(t),this.notify({type:"added",mutation:t})}remove(t){q(this,At,T(this,At).filter(r=>r!==t)),this.notify({type:"removed",mutation:t})}clear(){nt.batch(()=>{T(this,At).forEach(t=>{this.remove(t)})})}getAll(){return T(this,At)}find(t){const r={exact:!0,...t};return T(this,At).find(n=>Kp(r,n))}findAll(t={}){return T(this,At).filter(r=>Kp(t,r))}notify(t){nt.batch(()=>{this.listeners.forEach(r=>{r(t)})})}resumePausedMutations(){return q(this,gn,(T(this,gn)??Promise.resolve()).then(()=>{const t=T(this,At).filter(r=>r.state.isPaused);return nt.batch(()=>t.reduce((r,n)=>r.then(()=>n.continue().catch(Gt)),Promise.resolve()))}).then(()=>{q(this,gn,void 0)})),T(this,gn)}},At=new WeakMap,wo=new WeakMap,gn=new WeakMap,am);function eP(e){return{onFetch:(t,r)=>{const n=async()=>{var y,h,E,c,f;const i=t.options,o=(E=(h=(y=t.fetchOptions)==null?void 0:y.meta)==null?void 0:h.fetchMore)==null?void 0:E.direction,s=((c=t.state.data)==null?void 0:c.pages)||[],a=((f=t.state.data)==null?void 0:f.pageParams)||[],l={pages:[],pageParams:[]};let u=!1;const d=v=>{Object.defineProperty(v,"signal",{enumerable:!0,get:()=>(t.signal.aborted?u=!0:t.signal.addEventListener("abort",()=>{u=!0}),t.signal)})},p=t.options.queryFn||(()=>Promise.reject(new Error(`Missing queryFn: '${t.options.queryHash}'`))),g=async(v,_,w)=>{if(u)return Promise.reject();if(_==null&&v.pages.length)return Promise.resolve(v);const S={queryKey:t.queryKey,pageParam:_,direction:w?"backward":"forward",meta:t.options.meta};d(S);const P=await p(S),{maxPages:x}=t.options,O=w?qS:zS;return{pages:O(v.pages,P,x),pageParams:O(v.pageParams,_,x)}};let m;if(o&&s.length){const v=o==="backward",_=v?tP:em,w={pages:s,pageParams:a},S=_(i,w);m=await g(w,S,v)}else{m=await g(l,a[0]??i.initialPageParam);const v=e??s.length;for(let _=1;_{var i,o;return(o=(i=t.options).persister)==null?void 0:o.call(i,n,{queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},r)}:t.fetchFn=n}}}function em(e,{pages:t,pageParams:r}){const n=t.length-1;return e.getNextPageParam(t[n],t,r[n],r)}function tP(e,{pages:t,pageParams:r}){var n;return(n=e.getPreviousPageParam)==null?void 0:n.call(e,t[0],t,r[0],r)}var Fe,Dr,Hr,oi,si,Ur,ai,li,lm,rP=(lm=class{constructor(e={}){ie(this,Fe,void 0);ie(this,Dr,void 0);ie(this,Hr,void 0);ie(this,oi,void 0);ie(this,si,void 0);ie(this,Ur,void 0);ie(this,ai,void 0);ie(this,li,void 0);q(this,Fe,e.queryCache||new KS),q(this,Dr,e.mutationCache||new JS),q(this,Hr,e.defaultOptions||{}),q(this,oi,new Map),q(this,si,new Map),q(this,Ur,0)}mount(){No(this,Ur)._++,T(this,Ur)===1&&(q(this,ai,Nc.subscribe(()=>{Nc.isFocused()&&(this.resumePausedMutations(),T(this,Fe).onFocus())})),q(this,li,aa.subscribe(()=>{aa.isOnline()&&(this.resumePausedMutations(),T(this,Fe).onOnline())})))}unmount(){var e,t;No(this,Ur)._--,T(this,Ur)===0&&((e=T(this,ai))==null||e.call(this),q(this,ai,void 0),(t=T(this,li))==null||t.call(this),q(this,li,void 0))}isFetching(e){return T(this,Fe).findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return T(this,Dr).findAll({...e,status:"pending"}).length}getQueryData(e){var t;return(t=T(this,Fe).find({queryKey:e}))==null?void 0:t.state.data}ensureQueryData(e){const t=this.getQueryData(e.queryKey);return t?Promise.resolve(t):this.fetchQuery(e)}getQueriesData(e){return this.getQueryCache().findAll(e).map(({queryKey:t,state:r})=>{const n=r.data;return[t,n]})}setQueryData(e,t,r){const n=T(this,Fe).find({queryKey:e}),i=n==null?void 0:n.state.data,o=HS(t,i);if(typeof o>"u")return;const s=this.defaultQueryOptions({queryKey:e});return T(this,Fe).build(this,s).setData(o,{...r,manual:!0})}setQueriesData(e,t,r){return nt.batch(()=>this.getQueryCache().findAll(e).map(({queryKey:n})=>[n,this.setQueryData(n,t,r)]))}getQueryState(e){var t;return(t=T(this,Fe).find({queryKey:e}))==null?void 0:t.state}removeQueries(e){const t=T(this,Fe);nt.batch(()=>{t.findAll(e).forEach(r=>{t.remove(r)})})}resetQueries(e,t){const r=T(this,Fe),n={type:"active",...e};return nt.batch(()=>(r.findAll(e).forEach(i=>{i.reset()}),this.refetchQueries(n,t)))}cancelQueries(e={},t={}){const r={revert:!0,...t},n=nt.batch(()=>T(this,Fe).findAll(e).map(i=>i.cancel(r)));return Promise.all(n).then(Gt).catch(Gt)}invalidateQueries(e={},t={}){return nt.batch(()=>{if(T(this,Fe).findAll(e).forEach(n=>{n.invalidate()}),e.refetchType==="none")return Promise.resolve();const r={...e,type:e.refetchType??e.type??"active"};return this.refetchQueries(r,t)})}refetchQueries(e={},t){const r={...t,cancelRefetch:(t==null?void 0:t.cancelRefetch)??!0},n=nt.batch(()=>T(this,Fe).findAll(e).filter(i=>!i.isDisabled()).map(i=>{let o=i.fetch(void 0,r);return r.throwOnError||(o=o.catch(Gt)),i.state.fetchStatus==="paused"?Promise.resolve():o}));return Promise.all(n).then(Gt)}fetchQuery(e){const t=this.defaultQueryOptions(e);typeof t.retry>"u"&&(t.retry=!1);const r=T(this,Fe).build(this,t);return r.isStaleByTime(t.staleTime)?r.fetch(t):Promise.resolve(r.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(Gt).catch(Gt)}fetchInfiniteQuery(e){return e.behavior=eP(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(Gt).catch(Gt)}resumePausedMutations(){return T(this,Dr).resumePausedMutations()}getQueryCache(){return T(this,Fe)}getMutationCache(){return T(this,Dr)}getDefaultOptions(){return T(this,Hr)}setDefaultOptions(e){q(this,Hr,e)}setQueryDefaults(e,t){T(this,oi).set(go(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){const t=[...T(this,oi).values()];let r={};return t.forEach(n=>{yo(e,n.queryKey)&&(r={...r,...n.defaultOptions})}),r}setMutationDefaults(e,t){T(this,si).set(go(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){const t=[...T(this,si).values()];let r={};return t.forEach(n=>{yo(e,n.mutationKey)&&(r={...r,...n.defaultOptions})}),r}defaultQueryOptions(e){if(e!=null&&e._defaulted)return e;const t={...T(this,Hr).queries,...(e==null?void 0:e.queryKey)&&this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=Vf(t.queryKey,t)),typeof t.refetchOnReconnect>"u"&&(t.refetchOnReconnect=t.networkMode!=="always"),typeof t.throwOnError>"u"&&(t.throwOnError=!!t.suspense),typeof t.networkMode>"u"&&t.persister&&(t.networkMode="offlineFirst"),t}defaultMutationOptions(e){return e!=null&&e._defaulted?e:{...T(this,Hr).mutations,...(e==null?void 0:e.mutationKey)&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){T(this,Fe).clear(),T(this,Dr).clear()}},Fe=new WeakMap,Dr=new WeakMap,Hr=new WeakMap,oi=new WeakMap,si=new WeakMap,Ur=new WeakMap,ai=new WeakMap,li=new WeakMap,lm),Mv=le.createContext(void 0),pP=e=>{const t=le.useContext(Mv);if(e)return e;if(!t)throw new Error("No QueryClient set, use QueryClientProvider to set one");return t},nP=({client:e,children:t})=>(le.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),le.createElement(Mv.Provider,{value:e},t));const iP=le.lazy(async()=>({default:(await Lf(()=>import("./authentication-screen-743d522a.js"),["./authentication-screen-743d522a.js","./fetch.client-5aab1c76.js","./label-979d47e9.js"],import.meta.url)).AuthenticationScreen})),oP=le.lazy(async()=>({default:(await Lf(()=>import("./set-status-screen-6a6b1703.js"),["./set-status-screen-6a6b1703.js","./fetch.client-5aab1c76.js","./alert-38484668.js","./label-979d47e9.js"],import.meta.url)).SetStatusScreen})),sP=le.lazy(async()=>({default:(await Lf(()=>import("./call-911-attach-screen-3c912936.js"),["./call-911-attach-screen-3c912936.js","./fetch.client-5aab1c76.js","./alert-38484668.js"],import.meta.url)).Call911AttachScreen})),aP=new rP;function lP(){return Et.jsx(nP,{client:aP,children:Et.jsxs(sS,{children:[Et.jsx(cu,{action:ji.RequestAuthFlow,children:Et.jsx(iP,{})}),Et.jsx(cu,{action:ji.RequestSetStatusFlow,children:Et.jsx(oP,{})}),Et.jsx(cu,{action:ji.RequestCall911AttachFlow,children:Et.jsx(sP,{})})]})})}_u.createRoot(document.getElementById("root")).render(Et.jsx(Mm.StrictMode,{children:Et.jsx(lP,{})}));export{Mm as $,ks as N,Aa as S,fP as a,Af as b,kn as c,iS as d,pP as e,vu as f,ZS as g,xm as h,aS as i,Et as j,nt as n,BS as o,le as r,hP as s,dP as u}; diff --git a/resources/[sna]/sna-sync/nui/index.html b/resources/[sna]/sna-sync/nui/index.html new file mode 100644 index 0000000..4c46e2f --- /dev/null +++ b/resources/[sna]/sna-sync/nui/index.html @@ -0,0 +1 @@ +
    \ No newline at end of file diff --git a/resources/[sna]/sna-sync/nui/label-979d47e9.js b/resources/[sna]/sna-sync/nui/label-979d47e9.js new file mode 100644 index 0000000..0ad4ff0 --- /dev/null +++ b/resources/[sna]/sna-sync/nui/label-979d47e9.js @@ -0,0 +1 @@ +import{r as l,$ as G,b as _e,j as k,o as st,d as Ut}from"./index-f45b8810.js";import{P as z}from"./fetch.client-5aab1c76.js";var Vt=["color","size","title"];function Ae(){return Ae=Object.assign||function(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}function Xt(e,t){if(e==null)return{};var n={},o=Object.keys(e),r,i;for(i=0;i=0)&&(n[r]=e[r]);return n}var Me=l.forwardRef(function(e,t){var n=e.color,o=e.size,r=e.title,i=Kt(e,Vt);return G.createElement("svg",Ae({ref:t,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:o,height:o,fill:n},i),r?G.createElement("title",null,r):null,G.createElement("path",{d:"M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z"}))});Me.propTypes={color:z.string,size:z.oneOfType([z.string,z.number]),title:z.string};Me.defaultProps={color:"currentColor",size:"1em",title:null};const Yt=Me;var qt=["color","size","title"];function Re(){return Re=Object.assign||function(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}function Gt(e,t){if(e==null)return{};var n={},o=Object.keys(e),r,i;for(i=0;i=0)&&(n[r]=e[r]);return n}var ke=l.forwardRef(function(e,t){var n=e.color,o=e.size,r=e.title,i=Zt(e,qt);return G.createElement("svg",Re({ref:t,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:o,height:o,fill:n},i),r?G.createElement("title",null,r):null,G.createElement("path",{d:"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"}),G.createElement("path",{d:"m8.93 6.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533L8.93 6.588zM9 4.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0z"}))});ke.propTypes={color:z.string,size:z.oneOfType([z.string,z.number]),title:z.string};ke.defaultProps={color:"currentColor",size:"1em",title:null};const Jt=ke;function H(){return H=Object.assign?Object.assign.bind():function(e){for(var t=1;tm,Object.values(m));return l.createElement(g.Provider,{value:w},d)}function p(u,h){const d=(h==null?void 0:h[e][c])||a,m=l.useContext(d);if(m)return m;if(s!==void 0)return s;throw new Error(`\`${u}\` must be used within \`${i}\``)}return f.displayName=i+"Provider",[f,p]}const r=()=>{const i=n.map(s=>l.createContext(s));return function(a){const c=(a==null?void 0:a[e])||i;return l.useMemo(()=>({[`__scope${e}`]:{...a,[e]:c}}),[a,c])}};return r.scopeName=e,[o,Qt(r,...t)]}function Qt(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const o=e.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(i){const s=o.reduce((a,{useScope:c,scopeName:f})=>{const u=c(i)[`__scope${f}`];return{...a,...u}},{});return l.useMemo(()=>({[`__scope${t.scopeName}`]:s}),[s])}};return n.scopeName=t.scopeName,n}function ne(e){const t=l.useRef(e);return l.useEffect(()=>{t.current=e}),l.useMemo(()=>(...n)=>{var o;return(o=t.current)===null||o===void 0?void 0:o.call(t,...n)},[])}function en({prop:e,defaultProp:t,onChange:n=()=>{}}){const[o,r]=tn({defaultProp:t,onChange:n}),i=e!==void 0,s=i?e:o,a=ne(n),c=l.useCallback(f=>{if(i){const u=typeof f=="function"?f(e):f;u!==e&&a(u)}else r(f)},[i,e,r,a]);return[s,c]}function tn({defaultProp:e,onChange:t}){const n=l.useState(e),[o]=n,r=l.useRef(o),i=ne(t);return l.useEffect(()=>{r.current!==o&&(i(o),r.current=o)},[o,r,i]),n}function nn(e,t){typeof e=="function"?e(t):e!=null&&(e.current=t)}function at(...e){return t=>e.forEach(n=>nn(n,t))}function ae(...e){return l.useCallback(at(...e),e)}const on=["top","right","bottom","left"],Y=Math.min,L=Math.max,ve=Math.round,me=Math.floor,q=e=>({x:e,y:e}),rn={left:"right",right:"left",bottom:"top",top:"bottom"},sn={start:"end",end:"start"};function Se(e,t,n){return L(e,Y(t,n))}function j(e,t){return typeof e=="function"?e(t):e}function B(e){return e.split("-")[0]}function oe(e){return e.split("-")[1]}function Fe(e){return e==="x"?"y":"x"}function He(e){return e==="y"?"height":"width"}function re(e){return["top","bottom"].includes(B(e))?"y":"x"}function Ie(e){return Fe(re(e))}function cn(e,t,n){n===void 0&&(n=!1);const o=oe(e),r=Ie(e),i=He(r);let s=r==="x"?o===(n?"end":"start")?"right":"left":o==="start"?"bottom":"top";return t.reference[i]>t.floating[i]&&(s=we(s)),[s,we(s)]}function an(e){const t=we(e);return[Te(e),t,Te(t)]}function Te(e){return e.replace(/start|end/g,t=>sn[t])}function ln(e,t,n){const o=["left","right"],r=["right","left"],i=["top","bottom"],s=["bottom","top"];switch(e){case"top":case"bottom":return n?t?r:o:t?o:r;case"left":case"right":return t?i:s;default:return[]}}function fn(e,t,n,o){const r=oe(e);let i=ln(B(e),n==="start",o);return r&&(i=i.map(s=>s+"-"+r),t&&(i=i.concat(i.map(Te)))),i}function we(e){return e.replace(/left|right|bottom|top/g,t=>rn[t])}function un(e){return{top:0,right:0,bottom:0,left:0,...e}}function lt(e){return typeof e!="number"?un(e):{top:e,right:e,bottom:e,left:e}}function xe(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}function qe(e,t,n){let{reference:o,floating:r}=e;const i=re(t),s=Ie(t),a=He(s),c=B(t),f=i==="y",p=o.x+o.width/2-r.width/2,u=o.y+o.height/2-r.height/2,h=o[a]/2-r[a]/2;let d;switch(c){case"top":d={x:p,y:o.y-r.height};break;case"bottom":d={x:p,y:o.y+o.height};break;case"right":d={x:o.x+o.width,y:u};break;case"left":d={x:o.x-r.width,y:u};break;default:d={x:o.x,y:o.y}}switch(oe(t)){case"start":d[s]-=h*(n&&f?-1:1);break;case"end":d[s]+=h*(n&&f?-1:1);break}return d}const dn=async(e,t,n)=>{const{placement:o="bottom",strategy:r="absolute",middleware:i=[],platform:s}=n,a=i.filter(Boolean),c=await(s.isRTL==null?void 0:s.isRTL(t));let f=await s.getElementRects({reference:e,floating:t,strategy:r}),{x:p,y:u}=qe(f,o,c),h=o,d={},m=0;for(let g=0;g({name:"arrow",options:e,async fn(t){const{x:n,y:o,placement:r,rects:i,platform:s,elements:a}=t,{element:c,padding:f=0}=j(e,t)||{};if(c==null)return{};const p=lt(f),u={x:n,y:o},h=Ie(r),d=He(h),m=await s.getDimensions(c),g=h==="y",w=g?"top":"left",v=g?"bottom":"right",y=g?"clientHeight":"clientWidth",b=i.reference[d]+i.reference[h]-u[h]-i.floating[d],$=u[h]-i.reference[h],x=await(s.getOffsetParent==null?void 0:s.getOffsetParent(c));let E=x?x[y]:0;(!E||!await(s.isElement==null?void 0:s.isElement(x)))&&(E=a.floating[y]||i.floating[d]);const R=b/2-$/2,O=E/2-m[d]/2-1,S=Y(p[w],O),D=Y(p[v],O),A=S,N=E-m[d]-D,T=E/2-m[d]/2+R,P=Se(A,T,N),C=oe(r)!=null&&T!=P&&i.reference[d]/2-(TA<=0)){var O,S;const A=(((O=r.flip)==null?void 0:O.index)||0)+1,N=$[A];if(N)return{data:{index:A,overflows:R},reset:{placement:N}};let T=(S=R.filter(P=>P.overflows[0]<=0).sort((P,M)=>P.overflows[1]-M.overflows[1])[0])==null?void 0:S.placement;if(!T)switch(h){case"bestFit":{var D;const P=(D=R.map(M=>[M.placement,M.overflows.filter(C=>C>0).reduce((C,K)=>C+K,0)]).sort((M,C)=>M[1]-C[1])[0])==null?void 0:D[0];P&&(T=P);break}case"initialPlacement":T=s;break}if(o!==T)return{reset:{placement:T}}}return{}}}};function Ge(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Je(e){return on.some(t=>e[t]>=0)}const mn=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n}=t,{strategy:o="referenceHidden",...r}=j(e,t);switch(o){case"referenceHidden":{const i=await se(t,{...r,elementContext:"reference"}),s=Ge(i,n.reference);return{data:{referenceHiddenOffsets:s,referenceHidden:Je(s)}}}case"escaped":{const i=await se(t,{...r,altBoundary:!0}),s=Ge(i,n.floating);return{data:{escapedOffsets:s,escaped:Je(s)}}}default:return{}}}}};async function hn(e,t){const{placement:n,platform:o,elements:r}=e,i=await(o.isRTL==null?void 0:o.isRTL(r.floating)),s=B(n),a=oe(n),c=re(n)==="y",f=["left","top"].includes(s)?-1:1,p=i&&c?-1:1,u=j(t,e);let{mainAxis:h,crossAxis:d,alignmentAxis:m}=typeof u=="number"?{mainAxis:u,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...u};return a&&typeof m=="number"&&(d=a==="end"?m*-1:m),c?{x:d*p,y:h*f}:{x:h*f,y:d*p}}const gn=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){const{x:n,y:o}=t,r=await hn(t,e);return{x:n+r.x,y:o+r.y,data:r}}}},vn=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:o,placement:r}=t,{mainAxis:i=!0,crossAxis:s=!1,limiter:a={fn:w=>{let{x:v,y}=w;return{x:v,y}}},...c}=j(e,t),f={x:n,y:o},p=await se(t,c),u=re(B(r)),h=Fe(u);let d=f[h],m=f[u];if(i){const w=h==="y"?"top":"left",v=h==="y"?"bottom":"right",y=d+p[w],b=d-p[v];d=Se(y,d,b)}if(s){const w=u==="y"?"top":"left",v=u==="y"?"bottom":"right",y=m+p[w],b=m-p[v];m=Se(y,m,b)}const g=a.fn({...t,[h]:d,[u]:m});return{...g,data:{x:g.x-n,y:g.y-o}}}}},wn=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:o,placement:r,rects:i,middlewareData:s}=t,{offset:a=0,mainAxis:c=!0,crossAxis:f=!0}=j(e,t),p={x:n,y:o},u=re(r),h=Fe(u);let d=p[h],m=p[u];const g=j(a,t),w=typeof g=="number"?{mainAxis:g,crossAxis:0}:{mainAxis:0,crossAxis:0,...g};if(c){const b=h==="y"?"height":"width",$=i.reference[h]-i.floating[b]+w.mainAxis,x=i.reference[h]+i.reference[b]-w.mainAxis;d<$?d=$:d>x&&(d=x)}if(f){var v,y;const b=h==="y"?"width":"height",$=["top","left"].includes(B(r)),x=i.reference[u]-i.floating[b]+($&&((v=s.offset)==null?void 0:v[u])||0)+($?0:w.crossAxis),E=i.reference[u]+i.reference[b]+($?0:((y=s.offset)==null?void 0:y[u])||0)-($?w.crossAxis:0);mE&&(m=E)}return{[h]:d,[u]:m}}}},xn=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:o,platform:r,elements:i}=t,{apply:s=()=>{},...a}=j(e,t),c=await se(t,a),f=B(n),p=oe(n),u=re(n)==="y",{width:h,height:d}=o.floating;let m,g;f==="top"||f==="bottom"?(m=f,g=p===(await(r.isRTL==null?void 0:r.isRTL(i.floating))?"start":"end")?"left":"right"):(g=f,m=p==="end"?"top":"bottom");const w=d-c[m],v=h-c[g],y=!t.middlewareData.shift;let b=w,$=v;if(u){const E=h-c.left-c.right;$=p||y?Y(v,E):E}else{const E=d-c.top-c.bottom;b=p||y?Y(w,E):E}if(y&&!p){const E=L(c.left,0),R=L(c.right,0),O=L(c.top,0),S=L(c.bottom,0);u?$=h-2*(E!==0||R!==0?E+R:L(c.left,c.right)):b=d-2*(O!==0||S!==0?O+S:L(c.top,c.bottom))}await s({...t,availableWidth:$,availableHeight:b});const x=await r.getDimensions(i.floating);return h!==x.width||d!==x.height?{reset:{rects:!0}}:{}}}};function Z(e){return ft(e)?(e.nodeName||"").toLowerCase():"#document"}function _(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function V(e){var t;return(t=(ft(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function ft(e){return e instanceof Node||e instanceof _(e).Node}function U(e){return e instanceof Element||e instanceof _(e).Element}function W(e){return e instanceof HTMLElement||e instanceof _(e).HTMLElement}function Qe(e){return typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof _(e).ShadowRoot}function le(e){const{overflow:t,overflowX:n,overflowY:o,display:r}=I(e);return/auto|scroll|overlay|hidden|clip/.test(t+o+n)&&!["inline","contents"].includes(r)}function yn(e){return["table","td","th"].includes(Z(e))}function ze(e){const t=We(),n=I(e);return n.transform!=="none"||n.perspective!=="none"||(n.containerType?n.containerType!=="normal":!1)||!t&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!t&&(n.filter?n.filter!=="none":!1)||["transform","perspective","filter"].some(o=>(n.willChange||"").includes(o))||["paint","layout","strict","content"].some(o=>(n.contain||"").includes(o))}function bn(e){let t=te(e);for(;W(t)&&!Ee(t);){if(ze(t))return t;t=te(t)}return null}function We(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function Ee(e){return["html","body","#document"].includes(Z(e))}function I(e){return _(e).getComputedStyle(e)}function Oe(e){return U(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function te(e){if(Z(e)==="html")return e;const t=e.assignedSlot||e.parentNode||Qe(e)&&e.host||V(e);return Qe(t)?t.host:t}function ut(e){const t=te(e);return Ee(t)?e.ownerDocument?e.ownerDocument.body:e.body:W(t)&&le(t)?t:ut(t)}function ye(e,t){var n;t===void 0&&(t=[]);const o=ut(e),r=o===((n=e.ownerDocument)==null?void 0:n.body),i=_(o);return r?t.concat(i,i.visualViewport||[],le(o)?o:[]):t.concat(o,ye(o))}function dt(e){const t=I(e);let n=parseFloat(t.width)||0,o=parseFloat(t.height)||0;const r=W(e),i=r?e.offsetWidth:n,s=r?e.offsetHeight:o,a=ve(n)!==i||ve(o)!==s;return a&&(n=i,o=s),{width:n,height:o,$:a}}function je(e){return U(e)?e:e.contextElement}function ee(e){const t=je(e);if(!W(t))return q(1);const n=t.getBoundingClientRect(),{width:o,height:r,$:i}=dt(t);let s=(i?ve(n.width):n.width)/o,a=(i?ve(n.height):n.height)/r;return(!s||!Number.isFinite(s))&&(s=1),(!a||!Number.isFinite(a))&&(a=1),{x:s,y:a}}const $n=q(0);function pt(e){const t=_(e);return!We()||!t.visualViewport?$n:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function En(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==_(e)?!1:t}function J(e,t,n,o){t===void 0&&(t=!1),n===void 0&&(n=!1);const r=e.getBoundingClientRect(),i=je(e);let s=q(1);t&&(o?U(o)&&(s=ee(o)):s=ee(e));const a=En(i,n,o)?pt(i):q(0);let c=(r.left+a.x)/s.x,f=(r.top+a.y)/s.y,p=r.width/s.x,u=r.height/s.y;if(i){const h=_(i),d=o&&U(o)?_(o):o;let m=h.frameElement;for(;m&&o&&d!==h;){const g=ee(m),w=m.getBoundingClientRect(),v=I(m),y=w.left+(m.clientLeft+parseFloat(v.paddingLeft))*g.x,b=w.top+(m.clientTop+parseFloat(v.paddingTop))*g.y;c*=g.x,f*=g.y,p*=g.x,u*=g.y,c+=y,f+=b,m=_(m).frameElement}}return xe({width:p,height:u,x:c,y:f})}function On(e){let{rect:t,offsetParent:n,strategy:o}=e;const r=W(n),i=V(n);if(n===i)return t;let s={scrollLeft:0,scrollTop:0},a=q(1);const c=q(0);if((r||!r&&o!=="fixed")&&((Z(n)!=="body"||le(i))&&(s=Oe(n)),W(n))){const f=J(n);a=ee(n),c.x=f.x+n.clientLeft,c.y=f.y+n.clientTop}return{width:t.width*a.x,height:t.height*a.y,x:t.x*a.x-s.scrollLeft*a.x+c.x,y:t.y*a.y-s.scrollTop*a.y+c.y}}function Cn(e){return Array.from(e.getClientRects())}function mt(e){return J(V(e)).left+Oe(e).scrollLeft}function Pn(e){const t=V(e),n=Oe(e),o=e.ownerDocument.body,r=L(t.scrollWidth,t.clientWidth,o.scrollWidth,o.clientWidth),i=L(t.scrollHeight,t.clientHeight,o.scrollHeight,o.clientHeight);let s=-n.scrollLeft+mt(e);const a=-n.scrollTop;return I(o).direction==="rtl"&&(s+=L(t.clientWidth,o.clientWidth)-r),{width:r,height:i,x:s,y:a}}function An(e,t){const n=_(e),o=V(e),r=n.visualViewport;let i=o.clientWidth,s=o.clientHeight,a=0,c=0;if(r){i=r.width,s=r.height;const f=We();(!f||f&&t==="fixed")&&(a=r.offsetLeft,c=r.offsetTop)}return{width:i,height:s,x:a,y:c}}function Rn(e,t){const n=J(e,!0,t==="fixed"),o=n.top+e.clientTop,r=n.left+e.clientLeft,i=W(e)?ee(e):q(1),s=e.clientWidth*i.x,a=e.clientHeight*i.y,c=r*i.x,f=o*i.y;return{width:s,height:a,x:c,y:f}}function et(e,t,n){let o;if(t==="viewport")o=An(e,n);else if(t==="document")o=Pn(V(e));else if(U(t))o=Rn(t,n);else{const r=pt(e);o={...t,x:t.x-r.x,y:t.y-r.y}}return xe(o)}function ht(e,t){const n=te(e);return n===t||!U(n)||Ee(n)?!1:I(n).position==="fixed"||ht(n,t)}function Sn(e,t){const n=t.get(e);if(n)return n;let o=ye(e).filter(a=>U(a)&&Z(a)!=="body"),r=null;const i=I(e).position==="fixed";let s=i?te(e):e;for(;U(s)&&!Ee(s);){const a=I(s),c=ze(s);!c&&a.position==="fixed"&&(r=null),(i?!c&&!r:!c&&a.position==="static"&&!!r&&["absolute","fixed"].includes(r.position)||le(s)&&!c&&ht(e,s))?o=o.filter(p=>p!==s):r=a,s=te(s)}return t.set(e,o),o}function Tn(e){let{element:t,boundary:n,rootBoundary:o,strategy:r}=e;const s=[...n==="clippingAncestors"?Sn(t,this._c):[].concat(n),o],a=s[0],c=s.reduce((f,p)=>{const u=et(t,p,r);return f.top=L(u.top,f.top),f.right=Y(u.right,f.right),f.bottom=Y(u.bottom,f.bottom),f.left=L(u.left,f.left),f},et(t,a,r));return{width:c.right-c.left,height:c.bottom-c.top,x:c.left,y:c.top}}function Dn(e){return dt(e)}function Nn(e,t,n){const o=W(t),r=V(t),i=n==="fixed",s=J(e,!0,i,t);let a={scrollLeft:0,scrollTop:0};const c=q(0);if(o||!o&&!i)if((Z(t)!=="body"||le(r))&&(a=Oe(t)),o){const f=J(t,!0,i,t);c.x=f.x+t.clientLeft,c.y=f.y+t.clientTop}else r&&(c.x=mt(r));return{x:s.left+a.scrollLeft-c.x,y:s.top+a.scrollTop-c.y,width:s.width,height:s.height}}function tt(e,t){return!W(e)||I(e).position==="fixed"?null:t?t(e):e.offsetParent}function gt(e,t){const n=_(e);if(!W(e))return n;let o=tt(e,t);for(;o&&yn(o)&&I(o).position==="static";)o=tt(o,t);return o&&(Z(o)==="html"||Z(o)==="body"&&I(o).position==="static"&&!ze(o))?n:o||bn(e)||n}const Ln=async function(e){let{reference:t,floating:n,strategy:o}=e;const r=this.getOffsetParent||gt,i=this.getDimensions;return{reference:Nn(t,await r(n),o),floating:{x:0,y:0,...await i(n)}}};function _n(e){return I(e).direction==="rtl"}const Mn={convertOffsetParentRelativeRectToViewportRelativeRect:On,getDocumentElement:V,getClippingRect:Tn,getOffsetParent:gt,getElementRects:Ln,getClientRects:Cn,getDimensions:Dn,getScale:ee,isElement:U,isRTL:_n};function kn(e,t){let n=null,o;const r=V(e);function i(){clearTimeout(o),n&&n.disconnect(),n=null}function s(a,c){a===void 0&&(a=!1),c===void 0&&(c=1),i();const{left:f,top:p,width:u,height:h}=e.getBoundingClientRect();if(a||t(),!u||!h)return;const d=me(p),m=me(r.clientWidth-(f+u)),g=me(r.clientHeight-(p+h)),w=me(f),y={rootMargin:-d+"px "+-m+"px "+-g+"px "+-w+"px",threshold:L(0,Y(1,c))||1};let b=!0;function $(x){const E=x[0].intersectionRatio;if(E!==c){if(!b)return s();E?s(!1,E):o=setTimeout(()=>{s(!1,1e-7)},100)}b=!1}try{n=new IntersectionObserver($,{...y,root:r.ownerDocument})}catch{n=new IntersectionObserver($,y)}n.observe(e)}return s(!0),i}function Fn(e,t,n,o){o===void 0&&(o={});const{ancestorScroll:r=!0,ancestorResize:i=!0,elementResize:s=typeof ResizeObserver=="function",layoutShift:a=typeof IntersectionObserver=="function",animationFrame:c=!1}=o,f=je(e),p=r||i?[...f?ye(f):[],...ye(t)]:[];p.forEach(v=>{r&&v.addEventListener("scroll",n,{passive:!0}),i&&v.addEventListener("resize",n)});const u=f&&a?kn(f,n):null;let h=-1,d=null;s&&(d=new ResizeObserver(v=>{let[y]=v;y&&y.target===f&&d&&(d.unobserve(t),cancelAnimationFrame(h),h=requestAnimationFrame(()=>{d&&d.observe(t)})),n()}),f&&!c&&d.observe(f),d.observe(t));let m,g=c?J(e):null;c&&w();function w(){const v=J(e);g&&(v.x!==g.x||v.y!==g.y||v.width!==g.width||v.height!==g.height)&&n(),g=v,m=requestAnimationFrame(w)}return n(),()=>{p.forEach(v=>{r&&v.removeEventListener("scroll",n),i&&v.removeEventListener("resize",n)}),u&&u(),d&&d.disconnect(),d=null,c&&cancelAnimationFrame(m)}}const Hn=(e,t,n)=>{const o=new Map,r={platform:Mn,...n},i={...r.platform,_c:o};return dn(e,t,{...r,platform:i})},In=e=>{function t(n){return{}.hasOwnProperty.call(n,"current")}return{name:"arrow",options:e,fn(n){const{element:o,padding:r}=typeof e=="function"?e(n):e;return o&&t(o)?o.current!=null?Ze({element:o.current,padding:r}).fn(n):{}:o?Ze({element:o,padding:r}).fn(n):{}}}};var ge=typeof document<"u"?l.useLayoutEffect:l.useEffect;function be(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let n,o,r;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(o=n;o--!==0;)if(!be(e[o],t[o]))return!1;return!0}if(r=Object.keys(e),n=r.length,n!==Object.keys(t).length)return!1;for(o=n;o--!==0;)if(!{}.hasOwnProperty.call(t,r[o]))return!1;for(o=n;o--!==0;){const i=r[o];if(!(i==="_owner"&&e.$$typeof)&&!be(e[i],t[i]))return!1}return!0}return e!==e&&t!==t}function vt(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function nt(e,t){const n=vt(e);return Math.round(t*n)/n}function ot(e){const t=l.useRef(e);return ge(()=>{t.current=e}),t}function zn(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:o=[],platform:r,elements:{reference:i,floating:s}={},transform:a=!0,whileElementsMounted:c,open:f}=e,[p,u]=l.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[h,d]=l.useState(o);be(h,o)||d(o);const[m,g]=l.useState(null),[w,v]=l.useState(null),y=l.useCallback(C=>{C!=E.current&&(E.current=C,g(C))},[g]),b=l.useCallback(C=>{C!==R.current&&(R.current=C,v(C))},[v]),$=i||m,x=s||w,E=l.useRef(null),R=l.useRef(null),O=l.useRef(p),S=ot(c),D=ot(r),A=l.useCallback(()=>{if(!E.current||!R.current)return;const C={placement:t,strategy:n,middleware:h};D.current&&(C.platform=D.current),Hn(E.current,R.current,C).then(K=>{const X={...K,isPositioned:!0};N.current&&!be(O.current,X)&&(O.current=X,_e.flushSync(()=>{u(X)}))})},[h,t,n,D]);ge(()=>{f===!1&&O.current.isPositioned&&(O.current.isPositioned=!1,u(C=>({...C,isPositioned:!1})))},[f]);const N=l.useRef(!1);ge(()=>(N.current=!0,()=>{N.current=!1}),[]),ge(()=>{if($&&(E.current=$),x&&(R.current=x),$&&x){if(S.current)return S.current($,x,A);A()}},[$,x,A,S]);const T=l.useMemo(()=>({reference:E,floating:R,setReference:y,setFloating:b}),[y,b]),P=l.useMemo(()=>({reference:$,floating:x}),[$,x]),M=l.useMemo(()=>{const C={position:n,left:0,top:0};if(!P.floating)return C;const K=nt(P.floating,p.x),X=nt(P.floating,p.y);return a?{...C,transform:"translate("+K+"px, "+X+"px)",...vt(P.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:K,top:X}},[n,a,P.floating,p.x,p.y]);return l.useMemo(()=>({...p,update:A,refs:T,elements:P,floatingStyles:M}),[p,A,T,P,M])}const wt=l.forwardRef((e,t)=>{const{children:n,...o}=e,r=l.Children.toArray(n),i=r.find(jn);if(i){const s=i.props.children,a=r.map(c=>c===i?l.Children.count(s)>1?l.Children.only(null):l.isValidElement(s)?s.props.children:null:c);return l.createElement(De,H({},o,{ref:t}),l.isValidElement(s)?l.cloneElement(s,void 0,a):null)}return l.createElement(De,H({},o,{ref:t}),n)});wt.displayName="Slot";const De=l.forwardRef((e,t)=>{const{children:n,...o}=e;return l.isValidElement(n)?l.cloneElement(n,{...Bn(o,n.props),ref:t?at(t,n.ref):n.ref}):l.Children.count(n)>1?l.Children.only(null):null});De.displayName="SlotClone";const Wn=({children:e})=>l.createElement(l.Fragment,null,e);function jn(e){return l.isValidElement(e)&&e.type===Wn}function Bn(e,t){const n={...t};for(const o in t){const r=e[o],i=t[o];/^on[A-Z]/.test(o)?r&&i?n[o]=(...a)=>{i(...a),r(...a)}:r&&(n[o]=r):o==="style"?n[o]={...r,...i}:o==="className"&&(n[o]=[r,i].filter(Boolean).join(" "))}return{...e,...n}}const Un=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"],Ce=Un.reduce((e,t)=>{const n=l.forwardRef((o,r)=>{const{asChild:i,...s}=o,a=i?wt:t;return l.useEffect(()=>{window[Symbol.for("radix-ui")]=!0},[]),l.createElement(a,H({},s,{ref:r}))});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{});function Vn(e,t){e&&_e.flushSync(()=>e.dispatchEvent(t))}const ce=globalThis!=null&&globalThis.document?l.useLayoutEffect:()=>{};function Kn(e){const[t,n]=l.useState(void 0);return ce(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const o=new ResizeObserver(r=>{if(!Array.isArray(r)||!r.length)return;const i=r[0];let s,a;if("borderBoxSize"in i){const c=i.borderBoxSize,f=Array.isArray(c)?c[0]:c;s=f.inlineSize,a=f.blockSize}else s=e.offsetWidth,a=e.offsetHeight;n({width:s,height:a})});return o.observe(e,{box:"border-box"}),()=>o.unobserve(e)}else n(void 0)},[e]),t}const xt="Popper",[yt,bt]=ct(xt),[Xn,$t]=yt(xt),Yn=e=>{const{__scopePopper:t,children:n}=e,[o,r]=l.useState(null);return l.createElement(Xn,{scope:t,anchor:o,onAnchorChange:r},n)},qn="PopperAnchor",Zn=l.forwardRef((e,t)=>{const{__scopePopper:n,virtualRef:o,...r}=e,i=$t(qn,n),s=l.useRef(null),a=ae(t,s);return l.useEffect(()=>{i.onAnchorChange((o==null?void 0:o.current)||s.current)}),o?null:l.createElement(Ce.div,H({},r,{ref:a}))}),Et="PopperContent",[Gn,So]=yt(Et),Jn=l.forwardRef((e,t)=>{var n,o,r,i,s,a,c,f;const{__scopePopper:p,side:u="bottom",sideOffset:h=0,align:d="center",alignOffset:m=0,arrowPadding:g=0,avoidCollisions:w=!0,collisionBoundary:v=[],collisionPadding:y=0,sticky:b="partial",hideWhenDetached:$=!1,updatePositionStrategy:x="optimized",onPlaced:E,...R}=e,O=$t(Et,p),[S,D]=l.useState(null),A=ae(t,ie=>D(ie)),[N,T]=l.useState(null),P=Kn(N),M=(n=P==null?void 0:P.width)!==null&&n!==void 0?n:0,C=(o=P==null?void 0:P.height)!==null&&o!==void 0?o:0,K=u+(d!=="center"?"-"+d:""),X=typeof y=="number"?y:{top:0,right:0,bottom:0,left:0,...y},Ve=Array.isArray(v)?v:[v],Dt=Ve.length>0,fe={padding:X,boundary:Ve.filter(Qn),altBoundary:Dt},{refs:Nt,floatingStyles:Ke,placement:Lt,isPositioned:ue,middlewareData:Q}=zn({strategy:"fixed",placement:K,whileElementsMounted:(...ie)=>Fn(...ie,{animationFrame:x==="always"}),elements:{reference:O.anchor},middleware:[gn({mainAxis:h+C,alignmentAxis:m}),w&&vn({mainAxis:!0,crossAxis:!1,limiter:b==="partial"?wn():void 0,...fe}),w&&pn({...fe}),xn({...fe,apply:({elements:ie,rects:Ye,availableWidth:zt,availableHeight:Wt})=>{const{width:jt,height:Bt}=Ye.reference,pe=ie.floating.style;pe.setProperty("--radix-popper-available-width",`${zt}px`),pe.setProperty("--radix-popper-available-height",`${Wt}px`),pe.setProperty("--radix-popper-anchor-width",`${jt}px`),pe.setProperty("--radix-popper-anchor-height",`${Bt}px`)}}),N&&In({element:N,padding:g}),eo({arrowWidth:M,arrowHeight:C}),$&&mn({strategy:"referenceHidden",...fe})]}),[Xe,_t]=Ot(Lt),de=ne(E);ce(()=>{ue&&(de==null||de())},[ue,de]);const Mt=(r=Q.arrow)===null||r===void 0?void 0:r.x,kt=(i=Q.arrow)===null||i===void 0?void 0:i.y,Ft=((s=Q.arrow)===null||s===void 0?void 0:s.centerOffset)!==0,[Ht,It]=l.useState();return ce(()=>{S&&It(window.getComputedStyle(S).zIndex)},[S]),l.createElement("div",{ref:Nt.setFloating,"data-radix-popper-content-wrapper":"",style:{...Ke,transform:ue?Ke.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Ht,"--radix-popper-transform-origin":[(a=Q.transformOrigin)===null||a===void 0?void 0:a.x,(c=Q.transformOrigin)===null||c===void 0?void 0:c.y].join(" ")},dir:e.dir},l.createElement(Gn,{scope:p,placedSide:Xe,onArrowChange:T,arrowX:Mt,arrowY:kt,shouldHideArrow:Ft},l.createElement(Ce.div,H({"data-side":Xe,"data-align":_t},R,{ref:A,style:{...R.style,animation:ue?void 0:"none",opacity:(f=Q.hide)!==null&&f!==void 0&&f.referenceHidden?0:void 0}}))))});function Qn(e){return e!==null}const eo=e=>({name:"transformOrigin",options:e,fn(t){var n,o,r,i,s;const{placement:a,rects:c,middlewareData:f}=t,u=((n=f.arrow)===null||n===void 0?void 0:n.centerOffset)!==0,h=u?0:e.arrowWidth,d=u?0:e.arrowHeight,[m,g]=Ot(a),w={start:"0%",center:"50%",end:"100%"}[g],v=((o=(r=f.arrow)===null||r===void 0?void 0:r.x)!==null&&o!==void 0?o:0)+h/2,y=((i=(s=f.arrow)===null||s===void 0?void 0:s.y)!==null&&i!==void 0?i:0)+d/2;let b="",$="";return m==="bottom"?(b=u?w:`${v}px`,$=`${-d}px`):m==="top"?(b=u?w:`${v}px`,$=`${c.floating.height+d}px`):m==="right"?(b=`${-d}px`,$=u?w:`${y}px`):m==="left"&&(b=`${c.floating.width+d}px`,$=u?w:`${y}px`),{data:{x:b,y:$}}}});function Ot(e){const[t,n="center"]=e.split("-");return[t,n]}const to=Yn,no=Zn,oo=Jn;function ro(e,t){return l.useReducer((n,o)=>{const r=t[n][o];return r??n},e)}const Ct=e=>{const{present:t,children:n}=e,o=io(t),r=typeof n=="function"?n({present:o.isPresent}):l.Children.only(n),i=ae(o.ref,r.ref);return typeof n=="function"||o.isPresent?l.cloneElement(r,{ref:i}):null};Ct.displayName="Presence";function io(e){const[t,n]=l.useState(),o=l.useRef({}),r=l.useRef(e),i=l.useRef("none"),s=e?"mounted":"unmounted",[a,c]=ro(s,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return l.useEffect(()=>{const f=he(o.current);i.current=a==="mounted"?f:"none"},[a]),ce(()=>{const f=o.current,p=r.current;if(p!==e){const h=i.current,d=he(f);e?c("MOUNT"):d==="none"||(f==null?void 0:f.display)==="none"?c("UNMOUNT"):c(p&&h!==d?"ANIMATION_OUT":"UNMOUNT"),r.current=e}},[e,c]),ce(()=>{if(t){const f=u=>{const d=he(o.current).includes(u.animationName);u.target===t&&d&&_e.flushSync(()=>c("ANIMATION_END"))},p=u=>{u.target===t&&(i.current=he(o.current))};return t.addEventListener("animationstart",p),t.addEventListener("animationcancel",f),t.addEventListener("animationend",f),()=>{t.removeEventListener("animationstart",p),t.removeEventListener("animationcancel",f),t.removeEventListener("animationend",f)}}else c("ANIMATION_END")},[t,c]),{isPresent:["mounted","unmountSuspended"].includes(a),ref:l.useCallback(f=>{f&&(o.current=getComputedStyle(f)),n(f)},[])}}function he(e){return(e==null?void 0:e.animationName)||"none"}function so(e,t=globalThis==null?void 0:globalThis.document){const n=ne(e);l.useEffect(()=>{const o=r=>{r.key==="Escape"&&n(r)};return t.addEventListener("keydown",o),()=>t.removeEventListener("keydown",o)},[n,t])}const Ne="dismissableLayer.update",co="dismissableLayer.pointerDownOutside",ao="dismissableLayer.focusOutside";let rt;const lo=l.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),fo=l.forwardRef((e,t)=>{var n;const{disableOutsidePointerEvents:o=!1,onEscapeKeyDown:r,onPointerDownOutside:i,onFocusOutside:s,onInteractOutside:a,onDismiss:c,...f}=e,p=l.useContext(lo),[u,h]=l.useState(null),d=(n=u==null?void 0:u.ownerDocument)!==null&&n!==void 0?n:globalThis==null?void 0:globalThis.document,[,m]=l.useState({}),g=ae(t,O=>h(O)),w=Array.from(p.layers),[v]=[...p.layersWithOutsidePointerEventsDisabled].slice(-1),y=w.indexOf(v),b=u?w.indexOf(u):-1,$=p.layersWithOutsidePointerEventsDisabled.size>0,x=b>=y,E=uo(O=>{const S=O.target,D=[...p.branches].some(A=>A.contains(S));!x||D||(i==null||i(O),a==null||a(O),O.defaultPrevented||c==null||c())},d),R=po(O=>{const S=O.target;[...p.branches].some(A=>A.contains(S))||(s==null||s(O),a==null||a(O),O.defaultPrevented||c==null||c())},d);return so(O=>{b===p.layers.size-1&&(r==null||r(O),!O.defaultPrevented&&c&&(O.preventDefault(),c()))},d),l.useEffect(()=>{if(u)return o&&(p.layersWithOutsidePointerEventsDisabled.size===0&&(rt=d.body.style.pointerEvents,d.body.style.pointerEvents="none"),p.layersWithOutsidePointerEventsDisabled.add(u)),p.layers.add(u),it(),()=>{o&&p.layersWithOutsidePointerEventsDisabled.size===1&&(d.body.style.pointerEvents=rt)}},[u,d,o,p]),l.useEffect(()=>()=>{u&&(p.layers.delete(u),p.layersWithOutsidePointerEventsDisabled.delete(u),it())},[u,p]),l.useEffect(()=>{const O=()=>m({});return document.addEventListener(Ne,O),()=>document.removeEventListener(Ne,O)},[]),l.createElement(Ce.div,H({},f,{ref:g,style:{pointerEvents:$?x?"auto":"none":void 0,...e.style},onFocusCapture:F(e.onFocusCapture,R.onFocusCapture),onBlurCapture:F(e.onBlurCapture,R.onBlurCapture),onPointerDownCapture:F(e.onPointerDownCapture,E.onPointerDownCapture)}))});function uo(e,t=globalThis==null?void 0:globalThis.document){const n=ne(e),o=l.useRef(!1),r=l.useRef(()=>{});return l.useEffect(()=>{const i=a=>{if(a.target&&!o.current){let f=function(){Pt(co,n,c,{discrete:!0})};const c={originalEvent:a};a.pointerType==="touch"?(t.removeEventListener("click",r.current),r.current=f,t.addEventListener("click",r.current,{once:!0})):f()}else t.removeEventListener("click",r.current);o.current=!1},s=window.setTimeout(()=>{t.addEventListener("pointerdown",i)},0);return()=>{window.clearTimeout(s),t.removeEventListener("pointerdown",i),t.removeEventListener("click",r.current)}},[t,n]),{onPointerDownCapture:()=>o.current=!0}}function po(e,t=globalThis==null?void 0:globalThis.document){const n=ne(e),o=l.useRef(!1);return l.useEffect(()=>{const r=i=>{i.target&&!o.current&&Pt(ao,n,{originalEvent:i},{discrete:!1})};return t.addEventListener("focusin",r),()=>t.removeEventListener("focusin",r)},[t,n]),{onFocusCapture:()=>o.current=!0,onBlurCapture:()=>o.current=!1}}function it(){const e=new CustomEvent(Ne);document.dispatchEvent(e)}function Pt(e,t,n,{discrete:o}){const r=n.originalEvent.target,i=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&r.addEventListener(e,t,{once:!0}),o?Vn(r,i):r.dispatchEvent(i)}let Pe;const At="HoverCard",[Rt,To]=ct(At,[bt]),Be=bt(),[mo,Ue]=Rt(At),ho=e=>{const{__scopeHoverCard:t,children:n,open:o,defaultOpen:r,onOpenChange:i,openDelay:s=700,closeDelay:a=300}=e,c=Be(t),f=l.useRef(0),p=l.useRef(0),u=l.useRef(!1),h=l.useRef(!1),[d=!1,m]=en({prop:o,defaultProp:r,onChange:i}),g=l.useCallback(()=>{clearTimeout(p.current),f.current=window.setTimeout(()=>m(!0),s)},[s,m]),w=l.useCallback(()=>{clearTimeout(f.current),!u.current&&!h.current&&(p.current=window.setTimeout(()=>m(!1),a))},[a,m]),v=l.useCallback(()=>m(!1),[m]);return l.useEffect(()=>()=>{clearTimeout(f.current),clearTimeout(p.current)},[]),l.createElement(mo,{scope:t,open:d,onOpenChange:m,onOpen:g,onClose:w,onDismiss:v,hasSelectionRef:u,isPointerDownOnContentRef:h},l.createElement(to,c,n))},go="HoverCardTrigger",vo=l.forwardRef((e,t)=>{const{__scopeHoverCard:n,...o}=e,r=Ue(go,n),i=Be(n);return l.createElement(no,H({asChild:!0},i),l.createElement(Ce.a,H({"data-state":r.open?"open":"closed"},o,{ref:t,onPointerEnter:F(e.onPointerEnter,$e(r.onOpen)),onPointerLeave:F(e.onPointerLeave,$e(r.onClose)),onFocus:F(e.onFocus,r.onOpen),onBlur:F(e.onBlur,r.onClose),onTouchStart:F(e.onTouchStart,s=>s.preventDefault())})))}),wo="HoverCardPortal",[Do,xo]=Rt(wo,{forceMount:void 0}),Le="HoverCardContent",yo=l.forwardRef((e,t)=>{const n=xo(Le,e.__scopeHoverCard),{forceMount:o=n.forceMount,...r}=e,i=Ue(Le,e.__scopeHoverCard);return l.createElement(Ct,{present:o||i.open},l.createElement(bo,H({"data-state":i.open?"open":"closed"},r,{onPointerEnter:F(e.onPointerEnter,$e(i.onOpen)),onPointerLeave:F(e.onPointerLeave,$e(i.onClose)),ref:t})))}),bo=l.forwardRef((e,t)=>{const{__scopeHoverCard:n,onEscapeKeyDown:o,onPointerDownOutside:r,onFocusOutside:i,onInteractOutside:s,...a}=e,c=Ue(Le,n),f=Be(n),p=l.useRef(null),u=ae(t,p),[h,d]=l.useState(!1);return l.useEffect(()=>{if(h){const m=document.body;return Pe=m.style.userSelect||m.style.webkitUserSelect,m.style.userSelect="none",m.style.webkitUserSelect="none",()=>{m.style.userSelect=Pe,m.style.webkitUserSelect=Pe}}},[h]),l.useEffect(()=>{if(p.current){const m=()=>{d(!1),c.isPointerDownOnContentRef.current=!1,setTimeout(()=>{var g;((g=document.getSelection())===null||g===void 0?void 0:g.toString())!==""&&(c.hasSelectionRef.current=!0)})};return document.addEventListener("pointerup",m),()=>{document.removeEventListener("pointerup",m),c.hasSelectionRef.current=!1,c.isPointerDownOnContentRef.current=!1}}},[c.isPointerDownOnContentRef,c.hasSelectionRef]),l.useEffect(()=>{p.current&&$o(p.current).forEach(g=>g.setAttribute("tabindex","-1"))}),l.createElement(fo,{asChild:!0,disableOutsidePointerEvents:!1,onInteractOutside:s,onEscapeKeyDown:o,onPointerDownOutside:r,onFocusOutside:F(i,m=>{m.preventDefault()}),onDismiss:c.onDismiss},l.createElement(oo,H({},f,a,{onPointerDown:F(a.onPointerDown,m=>{m.currentTarget.contains(m.target)&&d(!0),c.hasSelectionRef.current=!1,c.isPointerDownOnContentRef.current=!0}),ref:u,style:{...a.style,userSelect:h?"text":void 0,WebkitUserSelect:h?"text":void 0,"--radix-hover-card-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-hover-card-content-available-width":"var(--radix-popper-available-width)","--radix-hover-card-content-available-height":"var(--radix-popper-available-height)","--radix-hover-card-trigger-width":"var(--radix-popper-anchor-width)","--radix-hover-card-trigger-height":"var(--radix-popper-anchor-height)"}})))});function $e(e){return t=>t.pointerType==="touch"?void 0:e()}function $o(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:o=>o.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});for(;n.nextNode();)t.push(n.currentNode);return t}const Eo=ho,Oo=vo,St=yo,Co=Oo;function Po(e){return k.jsx(Eo,{closeDelay:100,openDelay:0,...e})}const Tt=l.forwardRef(({className:e,align:t="center",sideOffset:n=4,pointerEvents:o=!1,...r},i)=>k.jsx(St,{ref:i,align:t,sideOffset:n,className:st(o?"pointer-events-auto":"pointer-events-none","bg-gray-200 dark:border dark:border-secondary dark:bg-tertiary shadow-lg w-full max-w-lg p-3 rounded-md dark:text-white hover-card animate-enter z-50",e),...r}));Tt.displayName=St.displayName;function No(e){return k.jsxs("span",{...e.errorMessageProps,className:"h-full flex items-start gap-1 mt-1 font-medium text-red-500",children:[k.jsx(Yt,{className:"mt-1.5 mr-1","aria-hidden":"true"}),e.errorMessage]})}function Lo(e){const n=Ut.useTranslations("Common")("optionalField"),o=e.element??"label";return l.createElement(o,{...e.labelProps,className:st("mb-1 dark:text-white flex items-center gap-1",e.hiddenLabel&&"sr-only",e.labelClassnames)},k.jsxs(k.Fragment,{children:[e.label," ",e.isOptional?k.jsxs("span",{className:"text-sm italic",children:["(",n,")"]}):null,e.description?k.jsx("span",{className:"ml-1",children:k.jsxs(Po,{children:[k.jsx(Co,{asChild:!0,children:k.jsx(Jt,{width:14,height:14})}),k.jsx(Tt,{pointerEvents:!0,children:e.description})]})}):null]}))}export{No as E,Po as H,Lo as L,Co as a,Tt as b}; diff --git a/resources/[sna]/sna-sync/nui/set-status-screen-6a6b1703.js b/resources/[sna]/sna-sync/nui/set-status-screen-6a6b1703.js new file mode 100644 index 0000000..f0cfc31 --- /dev/null +++ b/resources/[sna]/sna-sync/nui/set-status-screen-6a6b1703.js @@ -0,0 +1 @@ +import{$ as A,r as u,a as yl,j as y,b as bl,o as H,d as Ne,u as vl,c as $l}from"./index-f45b8810.js";import{d as N,e as pe,f as He,g as ee,i as xl,j as Kl,k as Pl,l as wl,m as Ue,n as Sl,o as se,p as ae,q as ce,r as J,b as ie,s as Ml,t as Cl,v as Ve,w as Al,x as Il,y as $e,z as kl,A as We,C as El,D as xe,E as Ke,F as Fl,G as Xe,H as Ol,I as Pe,J as Tl,K as Dl,M as jl,N as we,P as T,O as qe,Q as Ze,a as Rl,R as Ll,B as Q,L as Ye,S as Bl,u as zl,h as Nl}from"./fetch.client-5aab1c76.js";import{A as Hl}from"./alert-38484668.js";import{H as Ul,a as Vl,b as Wl,L as Xl,E as ql}from"./label-979d47e9.js";function Ge(l){return null}Ge.getCollectionNode=function*(e,t){let{childItems:s,title:i,children:r}=e,n=e.title||e.children,o=e.textValue||(typeof n=="string"?n:"")||e["aria-label"]||"";!o&&!(t!=null&&t.suppressTextValueWarning)&&console.warn(" with non-plain text contents is unsupported by type to select for accessibility. Please add a `textValue` prop."),yield{type:"item",props:e,rendered:n,textValue:o,"aria-label":e["aria-label"],hasChildNodes:Zl(e),*childNodes(){if(s)for(let a of s)yield{type:"item",value:a};else if(i){let a=[];A.Children.forEach(r,d=>{a.push({type:"item",element:d})}),yield*a}}}};function Zl(l){return l.hasChildItems!=null?l.hasChildItems:!!(l.childItems||l.title&&A.Children.count(l.children)>0)}let Yl=Ge;class Gl{build(e,t){return this.context=t,Se(()=>this.iterateCollection(e))}*iterateCollection(e){let{children:t,items:s}=e;if(typeof t=="function"){if(!s)throw new Error("props.children was a function but props.items is missing");for(let i of e.items)yield*this.getFullNode({value:i},{renderer:t})}else{let i=[];A.Children.forEach(t,n=>{i.push(n)});let r=0;for(let n of i){let o=this.getFullNode({element:n,index:r},{});for(let a of o)r++,yield a}}}getKey(e,t,s,i){if(e.key!=null)return e.key;if(t.type==="cell"&&t.key!=null)return`${i}${t.key}`;let r=t.value;if(r!=null){var n;let o=(n=r.key)!==null&&n!==void 0?n:r.id;if(o==null)throw new Error("No key found for item");return o}return i?`${i}.${t.index}`:`$.${t.index}`}getChildState(e,t){return{renderer:t.renderer||e.renderer}}*getFullNode(e,t,s,i){let r=e.element;if(!r&&e.value&&t&&t.renderer){let a=this.cache.get(e.value);if(a&&(!a.shouldInvalidate||!a.shouldInvalidate(this.context))){a.index=e.index,a.parentKey=i?i.key:null,yield a;return}r=t.renderer(e.value)}if(A.isValidElement(r)){let a=r.type;if(typeof a!="function"&&typeof a.getCollectionNode!="function"){let b=typeof r.type=="function"?r.type.name:r.type;throw new Error(`Unknown element <${b}> in collection.`)}let d=a.getCollectionNode(r.props,this.context),m=e.index,$=d.next();for(;!$.done&&$.value;){let b=$.value;e.index=m;let c=b.key;c||(c=b.element?null:this.getKey(r,e,t,s));let v=[...this.getFullNode({...b,key:c,index:m,wrapper:Jl(e.wrapper,b.wrapper)},this.getChildState(t,b),s?`${s}${r.key}`:r.key,i)];for(let g of v){if(g.value=b.value||e.value,g.value&&this.cache.set(g.value,g),e.type&&g.type!==e.type)throw new Error(`Unsupported type <${re(g.type)}> in <${re(i.type)}>. Only <${re(e.type)}> is supported.`);m++,yield g}$=d.next(v)}return}if(e.key==null)return;let n=this,o={type:e.type,props:e.props,key:e.key,parentKey:i?i.key:null,value:e.value,level:i?i.level+1:0,index:e.index,rendered:e.rendered,textValue:e.textValue,"aria-label":e["aria-label"],wrapper:e.wrapper,shouldInvalidate:e.shouldInvalidate,hasChildNodes:e.hasChildNodes,childNodes:Se(function*(){if(!e.hasChildNodes)return;let a=0;for(let d of e.childNodes()){d.key!=null&&(d.key=`${o.key}${d.key}`),d.index=a;let m=n.getFullNode(d,n.getChildState(t,d),o.key,o);for(let $ of m)a++,yield $}})};yield o}constructor(){this.cache=new WeakMap}}function Se(l){let e=[],t=null;return{*[Symbol.iterator](){for(let s of e)yield s;t||(t=l());for(let s of t)e.push(s),yield s}}}function Jl(l,e){if(l&&e)return t=>l(e(t));if(l)return l;if(e)return e}function re(l){return l[0].toUpperCase()+l.slice(1)}function Ql(l,e,t){let s=u.useMemo(()=>new Gl,[]),{children:i,items:r,collection:n}=l;return u.useMemo(()=>{if(n)return n;let a=s.build({children:i,items:r},t);return e(a)},[s,i,r,n,t,e])}function Je(l,e){return typeof e.getChildren=="function"?e.getChildren(l.key):l.childNodes}function _l(l){return es(l,0)}function es(l,e){if(e<0)return;let t=0;for(let s of l){if(t===e)return s;t++}}function ne(l,e,t){if(e.parentKey===t.parentKey)return e.index-t.index;let s=[...Me(l,e),e],i=[...Me(l,t),t],r=s.slice(0,i.length).findIndex((n,o)=>n!==i[o]);return r!==-1?(e=s[r],t=i[r],e.index-t.index):s.findIndex(n=>n===t)>=0?1:(i.findIndex(n=>n===e)>=0,-1)}function Me(l,e){let t=[];for(;(e==null?void 0:e.parentKey)!=null;)e=l.getItem(e.parentKey),t.unshift(e);return t}const Ce=new WeakMap;function ts(l){let e=Ce.get(l);if(e!=null)return e;e=0;let t=s=>{for(let i of s)i.type==="section"?t(Je(i,l)):e++};return t(l),Ce.set(l,e),e}const Ae={border:0,clip:"rect(0 0 0 0)",clipPath:"inset(50%)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",width:"1px",whiteSpace:"nowrap"};function ls(l={}){let{style:e,isFocusable:t}=l,[s,i]=u.useState(!1),{focusWithinProps:r}=pe({isDisabled:!t,onFocusWithinChange:o=>i(o)}),n=u.useMemo(()=>s?e:e?{...Ae,...e}:Ae,[s]);return{visuallyHiddenProps:{...r,style:n}}}function ss(l){let{children:e,elementType:t="div",isFocusable:s,style:i,...r}=l,{visuallyHiddenProps:n}=ls(l);return A.createElement(t,N(r,n),e)}function is(l){return l&&l.__esModule?l.default:l}const Ie={top:"top",bottom:"top",left:"left",right:"left"},te={top:"bottom",bottom:"top",left:"right",right:"left"},rs={top:"left",left:"top"},de={top:"height",left:"width"},ns={width:"totalWidth",height:"totalHeight"},_={};let q=typeof document<"u"&&window.visualViewport;function ke(l){let e=0,t=0,s=0,i=0,r=0,n=0,o={};if(l.tagName==="BODY"){let m=document.documentElement;s=m.clientWidth,i=m.clientHeight;var a;e=(a=q==null?void 0:q.width)!==null&&a!==void 0?a:s;var d;t=(d=q==null?void 0:q.height)!==null&&d!==void 0?d:i,o.top=m.scrollTop||l.scrollTop,o.left=m.scrollLeft||l.scrollLeft}else({width:e,height:t,top:r,left:n}=Y(l)),o.top=l.scrollTop,o.left=l.scrollLeft,s=e,i=t;return{width:e,height:t,totalWidth:s,totalHeight:i,scroll:o,top:r,left:n}}function os(l){return{top:l.scrollTop,left:l.scrollLeft,width:l.scrollWidth,height:l.scrollHeight}}function Ee(l,e,t,s,i,r){let n=i.scroll[l],o=s[de[l]],a=e-r-n,d=e+r-n+t;return a<0?-a:d>o?Math.max(o-d,-a):0}function as(l){let e=window.getComputedStyle(l);return{top:parseInt(e.marginTop,10)||0,bottom:parseInt(e.marginBottom,10)||0,left:parseInt(e.marginLeft,10)||0,right:parseInt(e.marginRight,10)||0}}function Fe(l){if(_[l])return _[l];let[e,t]=l.split(" "),s=Ie[e]||"right",i=rs[s];Ie[t]||(t="center");let r=de[s],n=de[i];return _[l]={placement:e,crossPlacement:t,axis:s,crossAxis:i,size:r,crossSize:n},_[l]}function oe(l,e,t,s,i,r,n,o,a,d){let{placement:m,crossPlacement:$,axis:b,crossAxis:c,size:h,crossSize:v}=s,g={};g[c]=l[c],$==="center"?g[c]+=(l[v]-t[v])/2:$!==c&&(g[c]+=l[v]-t[v]),g[c]+=r;const w=l[c]-t[v]+a+d,x=l[c]+l[v]-a-d;if(g[c]=ae(g[c],w,x),m===b){const P=o?n[h]:e[ns[h]];g[te[b]]=Math.floor(P-l[b]+i)}else g[b]=Math.floor(l[b]+l[h]+i);return g}function cs(l,e,t,s,i,r){return l.top!=null?Math.max(0,e.height+e.top+e.scroll.top-(t.top+l.top)-(i.top+i.bottom+r)):Math.max(0,s.top+t.top-(e.top+e.scroll.top)-(i.top+i.bottom+r))}function Oe(l,e,t,s,i,r){let{placement:n,axis:o,size:a}=r;return n===o?Math.max(0,t[o]-l[o]-l.scroll[o]+e[o]-s[o]-s[te[o]]-i):Math.max(0,l[a]+l[o]+l.scroll[o]-e[o]-t[o]-t[a]-s[o]-s[te[o]]-i)}function ds(l,e,t,s,i,r,n,o,a,d,m,$,b,c,h,v){let g=Fe(l),{size:w,crossAxis:x,crossSize:P,placement:S,crossPlacement:M}=g,k=oe(e,o,t,g,m,$,d,b,h,v),I=m,F=Oe(o,d,e,i,r+m,g);if(n&&s[w]>F){let V=Fe(`${te[S]} ${M}`),G=oe(e,o,t,V,m,$,d,b,h,v);Oe(o,d,e,i,r+m,V)>F&&(g=V,k=G,I=m)}let O=Ee(x,k[x],t[P],o,a,r);k[x]+=O;let f=cs(k,o,d,e,i,r);c&&c{if(!t||s===null)return;let i=r=>{let n=r.target;if(!e.current||n instanceof Node&&!n.contains(e.current))return;let o=s||Qe.get(e.current);o&&o()};return window.addEventListener("scroll",i,!0),()=>{window.removeEventListener("scroll",i,!0)}},[t,s,e])}let j=typeof document<"u"&&window.visualViewport;function gs(l){let{direction:e}=He(),{arrowSize:t=0,targetRef:s,overlayRef:i,scrollRef:r=i,placement:n="bottom",containerPadding:o=12,shouldFlip:a=!0,boundaryElement:d=typeof document<"u"?document.body:null,offset:m=0,crossOffset:$=0,shouldUpdatePosition:b=!0,isOpen:c=!0,onClose:h,maxHeight:v,arrowBoundaryOffset:g=0}=l,[w,x]=u.useState({position:{},arrowOffsetLeft:void 0,arrowOffsetTop:void 0,maxHeight:void 0,placement:void 0}),P=[b,n,i.current,s.current,r.current,o,a,d,m,$,c,e,v,g,t],S=u.useCallback(()=>{if(b===!1||!c||!i.current||!s.current||!r.current||!d)return;let I=us({placement:ms(n,e),overlayNode:i.current,targetNode:s.current,scrollNode:r.current,padding:o,shouldFlip:a,boundaryElement:d,offset:m,crossOffset:$,maxHeight:v,arrowSize:t,arrowBoundaryOffset:g});Object.keys(I.position).forEach(F=>i.current.style[F]=I.position[F]+"px"),i.current.style.maxHeight=I.maxHeight!=null?I.maxHeight+"px":void 0,x(I)},P);ee(S,P),ps(S),xl({ref:i,onResize:S});let M=u.useRef(!1);ee(()=>{let I,F=()=>{M.current=!0,clearTimeout(I),I=setTimeout(()=>{M.current=!1},500),S()};return j==null||j.addEventListener("resize",F),j==null||j.addEventListener("scroll",F),()=>{j==null||j.removeEventListener("resize",F),j==null||j.removeEventListener("scroll",F)}},[S]);let k=u.useCallback(()=>{M.current||h()},[h,M]);return hs({triggerRef:s,isOpen:c,onClose:h&&k}),{overlayProps:{style:{position:"absolute",zIndex:1e5,...w.position,maxHeight:w.maxHeight}},placement:w.placement,arrowProps:{"aria-hidden":"true",role:"presentation",style:{left:w.arrowOffsetLeft,top:w.arrowOffsetTop}},updatePosition:S}}function ps(l){ee(()=>(window.addEventListener("resize",l,!1),()=>{window.removeEventListener("resize",l,!1)}),[l])}function ms(l,e){return e==="rtl"?l.replace("start","right").replace("end","left"):l.replace("start","left").replace("end","right")}const z=[];function ys(l,e){let{onClose:t,shouldCloseOnBlur:s,isOpen:i,isDismissable:r=!1,isKeyboardDismissDisabled:n=!1,shouldCloseOnInteractOutside:o}=l;u.useEffect(()=>(i&&z.push(e),()=>{let h=z.indexOf(e);h>=0&&z.splice(h,1)}),[i,e]);let a=()=>{z[z.length-1]===e&&t&&t()},d=h=>{(!o||o(h.target))&&z[z.length-1]===e&&(h.stopPropagation(),h.preventDefault())},m=h=>{(!o||o(h.target))&&(z[z.length-1]===e&&(h.stopPropagation(),h.preventDefault()),a())},$=h=>{h.key==="Escape"&&!n&&(h.stopPropagation(),h.preventDefault(),a())};Kl({ref:e,onInteractOutside:r?m:null,onInteractOutsideStart:d});let{focusWithinProps:b}=pe({isDisabled:!s,onBlurWithin:h=>{!h.relatedTarget||Pl(h.relatedTarget)||(!o||o(h.relatedTarget))&&t()}}),c=h=>{h.target===h.currentTarget&&h.preventDefault()};return{overlayProps:{onKeyDown:$,...b},underlayProps:{onPointerDown:c}}}function bs(l,e,t){let{type:s}=l,{isOpen:i}=e;u.useEffect(()=>{t&&t.current&&Qe.set(t.current,e.close)});let r;s==="menu"?r=!0:s==="listbox"&&(r="listbox");let n=se();return{triggerProps:{"aria-haspopup":r,"aria-expanded":i,"aria-controls":i?n:null,onPress:e.toggle},overlayProps:{id:n}}}const le=A.createContext(null);function _e(l){let{children:e}=l,t=u.useContext(le),[s,i]=u.useState(0),r=u.useMemo(()=>({parent:t,modalCount:s,addModal(){i(n=>n+1),t&&t.addModal()},removeModal(){i(n=>n-1),t&&t.removeModal()}}),[t,s]);return A.createElement(le.Provider,{value:r},e)}function vs(){let l=u.useContext(le);return{modalProviderProps:{"aria-hidden":l&&l.modalCount>0?!0:null}}}function $s(l){let{modalProviderProps:e}=vs();return A.createElement("div",{"data-overlay-container":!0,...l,...e})}function xs(l){return A.createElement(_e,null,A.createElement($s,l))}function Ks(l){let e=wl(),{portalContainer:t=e?null:document.body,...s}=l;if(A.useEffect(()=>{if(t!=null&&t.closest("[data-overlay-container]"))throw new Error("An OverlayContainer must not be inside another container. Please change the portalContainer prop.")},[t]),!t)return null;let i=A.createElement(xs,s);return yl.createPortal(i,t)}function Ps(l){let e=u.useContext(le);if(!e)throw new Error("Modal is not contained within a provider");return u.useEffect(()=>{if(!(l!=null&&l.isDisabled||!e||!e.parent))return e.parent.addModal(),()=>{e&&e.parent&&e.parent.removeModal()}},[e,e.parent,l==null?void 0:l.isDisabled]),{modalProps:{"data-ismodal":!(l!=null&&l.isDisabled)}}}var et={},tt={};tt={dismiss:"تجاهل"};var lt={};lt={dismiss:"Отхвърляне"};var st={};st={dismiss:"Odstranit"};var it={};it={dismiss:"Luk"};var rt={};rt={dismiss:"Schließen"};var nt={};nt={dismiss:"Απόρριψη"};var ot={};ot={dismiss:"Dismiss"};var at={};at={dismiss:"Descartar"};var ct={};ct={dismiss:"Lõpeta"};var dt={};dt={dismiss:"Hylkää"};var ut={};ut={dismiss:"Rejeter"};var ft={};ft={dismiss:"התעלם"};var ht={};ht={dismiss:"Odbaci"};var gt={};gt={dismiss:"Elutasítás"};var pt={};pt={dismiss:"Ignora"};var mt={};mt={dismiss:"閉じる"};var yt={};yt={dismiss:"무시"};var bt={};bt={dismiss:"Atmesti"};var vt={};vt={dismiss:"Nerādīt"};var $t={};$t={dismiss:"Lukk"};var xt={};xt={dismiss:"Negeren"};var Kt={};Kt={dismiss:"Zignoruj"};var Pt={};Pt={dismiss:"Descartar"};var wt={};wt={dismiss:"Dispensar"};var St={};St={dismiss:"Revocare"};var Mt={};Mt={dismiss:"Пропустить"};var Ct={};Ct={dismiss:"Zrušiť"};var At={};At={dismiss:"Opusti"};var It={};It={dismiss:"Odbaci"};var kt={};kt={dismiss:"Avvisa"};var Et={};Et={dismiss:"Kapat"};var Ft={};Ft={dismiss:"Скасувати"};var Ot={};Ot={dismiss:"取消"};var Tt={};Tt={dismiss:"關閉"};et={"ar-AE":tt,"bg-BG":lt,"cs-CZ":st,"da-DK":it,"de-DE":rt,"el-GR":nt,"en-US":ot,"es-ES":at,"et-EE":ct,"fi-FI":dt,"fr-FR":ut,"he-IL":ft,"hr-HR":ht,"hu-HU":gt,"it-IT":pt,"ja-JP":mt,"ko-KR":yt,"lt-LT":bt,"lv-LV":vt,"nb-NO":$t,"nl-NL":xt,"pl-PL":Kt,"pt-BR":Pt,"pt-PT":wt,"ro-RO":St,"ru-RU":Mt,"sk-SK":Ct,"sl-SI":At,"sr-SP":It,"sv-SE":kt,"tr-TR":Et,"uk-UA":Ft,"zh-CN":Ot,"zh-TW":Tt};function ws(l){let{onDismiss:e,...t}=l,s=Ue(is(et)),i=Sl(t,s.format("dismiss")),r=()=>{e&&e()};return A.createElement(ss,null,A.createElement("button",{...i,tabIndex:-1,onClick:r}))}const Ss=A.createContext(null);function Ms(){let l=u.useContext(Ss),e=l==null?void 0:l.setContain;ee(()=>{e==null||e(!0)},[e])}function Cs(l,e){let{role:t="dialog"}=l,s=ce();s=l["aria-label"]?void 0:s;let i=u.useRef(!1);return u.useEffect(()=>{if(e.current&&!e.current.contains(document.activeElement)){J(e.current);let r=setTimeout(()=>{document.activeElement===e.current&&(i.current=!0,e.current.blur(),J(e.current),i.current=!1)},500);return()=>{clearTimeout(r)}}},[e]),Ms(),{dialogProps:{...ie(l,{labelable:!0}),role:t,tabIndex:-1,"aria-labelledby":l["aria-labelledby"]||s,onBlur:r=>{i.current&&r.stopPropagation()}},titleProps:{id:s}}}const je=300;function As(l){var P,S,M;const e=u.useRef(null),t=u.useRef(null),{popoverRef:s=e,isOpen:i,onClose:r,children:n,isCalendar:o,...a}=l,{overlayProps:d}=ys({isOpen:i,onClose:r,isDismissable:!0},s),{modalProps:m}=Ps(),{dialogProps:$}=Cs(a,s),{overlayProps:b,updatePosition:c}=gs({isOpen:i,offset:2,containerPadding:0,overlayRef:e,targetRef:t,placement:"bottom start"});u.useLayoutEffect(()=>{i&&requestAnimationFrame(()=>{c()})},[i,c]);const h=((P=t.current)==null?void 0:P.clientWidth)??0,v=parseInt(((M=(S=b.style)==null?void 0:S.left)==null?void 0:M.toString())||"0",10),g=o?je:h,w=o?h-je+v:v,x={...b.style,left:w,width:g};return y.jsx("div",{ref:t,children:y.jsx(Ks,{children:y.jsx(Ml,{contain:!0,children:y.jsxs("div",{...N(d,m,$),ref:s,className:"w-full absolute top-full bg-gray-200 dark:bg-primary border border-gray-400 dark:border-secondary rounded-md shadow-lg mt-2 p-2 z-10",style:{zIndex:999,...x},children:[n,y.jsx(ws,{onDismiss:r})]})})})})}function ue(l){return Fl()?l.altKey:l.ctrlKey}function Z(l){return Xe()?l.metaKey:l.ctrlKey}const Is=1e3;function ks(l){let{keyboardDelegate:e,selectionManager:t,onTypeSelect:s}=l,i=u.useRef({search:"",timeout:null}).current,r=n=>{let o=Es(n.key);if(!o||n.ctrlKey||n.metaKey||!n.currentTarget.contains(n.target))return;o===" "&&i.search.trim().length>0&&(n.preventDefault(),"continuePropagation"in n||n.stopPropagation()),i.search+=o;let a=e.getKeyForSearch(i.search,t.focusedKey);a==null&&(a=e.getKeyForSearch(i.search)),a!=null&&(t.setFocusedKey(a),s&&s(a)),clearTimeout(i.timeout),i.timeout=setTimeout(()=>{i.search=""},Is)};return{typeSelectProps:{onKeyDownCapture:e.getKeyForSearch?r:null}}}function Es(l){return l.length===1||!/^[A-Z]/i.test(l)?l:""}function Fs(l){let{selectionManager:e,keyboardDelegate:t,ref:s,autoFocus:i=!1,shouldFocusWrap:r=!1,disallowEmptySelection:n=!1,disallowSelectAll:o=!1,selectOnFocus:a=e.selectionBehavior==="replace",disallowTypeAhead:d=!1,shouldUseVirtualFocus:m,allowsTabNavigation:$=!1,isVirtualized:b,scrollRef:c=s,linkBehavior:h="action"}=l,{direction:v}=He(),g=Ve(),w=f=>{if(f.altKey&&f.key==="Tab"&&f.preventDefault(),!s.current.contains(f.target))return;const C=(K,W)=>{if(K!=null){if(e.isLink(K)&&h==="selection"&&a&&!ue(f)){bl.flushSync(()=>{e.setFocusedKey(K,W)});let X=c.current.querySelector(`[data-key="${K}"]`);g.open(X,f);return}if(e.setFocusedKey(K,W),e.isLink(K)&&h==="override")return;f.shiftKey&&e.selectionMode==="multiple"?e.extendSelection(K):a&&!ue(f)&&e.replaceSelection(K)}};switch(f.key){case"ArrowDown":if(t.getKeyBelow){var D,E;f.preventDefault();let K=e.focusedKey!=null?t.getKeyBelow(e.focusedKey):(D=t.getFirstKey)===null||D===void 0?void 0:D.call(t);K==null&&r&&(K=(E=t.getFirstKey)===null||E===void 0?void 0:E.call(t,e.focusedKey)),C(K)}break;case"ArrowUp":if(t.getKeyAbove){var R,L;f.preventDefault();let K=e.focusedKey!=null?t.getKeyAbove(e.focusedKey):(R=t.getLastKey)===null||R===void 0?void 0:R.call(t);K==null&&r&&(K=(L=t.getLastKey)===null||L===void 0?void 0:L.call(t,e.focusedKey)),C(K)}break;case"ArrowLeft":if(t.getKeyLeftOf){var U,p;f.preventDefault();let K=t.getKeyLeftOf(e.focusedKey);K==null&&r&&(K=v==="rtl"?(U=t.getFirstKey)===null||U===void 0?void 0:U.call(t,e.focusedKey):(p=t.getLastKey)===null||p===void 0?void 0:p.call(t,e.focusedKey)),C(K,v==="rtl"?"first":"last")}break;case"ArrowRight":if(t.getKeyRightOf){var V,G;f.preventDefault();let K=t.getKeyRightOf(e.focusedKey);K==null&&r&&(K=v==="rtl"?(V=t.getLastKey)===null||V===void 0?void 0:V.call(t,e.focusedKey):(G=t.getFirstKey)===null||G===void 0?void 0:G.call(t,e.focusedKey)),C(K,v==="rtl"?"last":"first")}break;case"Home":if(t.getFirstKey){f.preventDefault();let K=t.getFirstKey(e.focusedKey,Z(f));e.setFocusedKey(K),Z(f)&&f.shiftKey&&e.selectionMode==="multiple"?e.extendSelection(K):a&&e.replaceSelection(K)}break;case"End":if(t.getLastKey){f.preventDefault();let K=t.getLastKey(e.focusedKey,Z(f));e.setFocusedKey(K),Z(f)&&f.shiftKey&&e.selectionMode==="multiple"?e.extendSelection(K):a&&e.replaceSelection(K)}break;case"PageDown":if(t.getKeyPageBelow){f.preventDefault();let K=t.getKeyPageBelow(e.focusedKey);C(K)}break;case"PageUp":if(t.getKeyPageAbove){f.preventDefault();let K=t.getKeyPageAbove(e.focusedKey);C(K)}break;case"a":Z(f)&&e.selectionMode==="multiple"&&o!==!0&&(f.preventDefault(),e.selectAll());break;case"Escape":f.preventDefault(),n||e.clearSelection();break;case"Tab":if(!$){if(f.shiftKey)s.current.focus();else{let K=Ol(s.current,{tabbable:!0}),W,X;do X=K.lastChild(),X&&(W=X);while(X);W&&!W.contains(document.activeElement)&&Pe(W)}break}}},x=u.useRef({top:0,left:0});Al(c,"scroll",b?null:()=>{x.current={top:c.current.scrollTop,left:c.current.scrollLeft}});let P=f=>{if(e.isFocused){f.currentTarget.contains(f.target)||e.setFocused(!1);return}if(f.currentTarget.contains(f.target)){if(e.setFocused(!0),e.focusedKey==null){let E=L=>{L!=null&&(e.setFocusedKey(L),a&&e.replaceSelection(L))},R=f.relatedTarget;var C,D;R&&f.currentTarget.compareDocumentPosition(R)&Node.DOCUMENT_POSITION_FOLLOWING?E((C=e.lastSelectedKey)!==null&&C!==void 0?C:t.getLastKey()):E((D=e.firstSelectedKey)!==null&&D!==void 0?D:t.getFirstKey())}else b||(c.current.scrollTop=x.current.top,c.current.scrollLeft=x.current.left);if(!b&&e.focusedKey!=null){let E=c.current.querySelector(`[data-key="${e.focusedKey}"]`);E&&(E.contains(document.activeElement)||Pe(E),Ke()==="keyboard"&&$e(E,{containingElement:s.current}))}}},S=f=>{f.currentTarget.contains(f.relatedTarget)||e.setFocused(!1)};const M=u.useRef(i);u.useEffect(()=>{if(M.current){let f=null;i==="first"&&(f=t.getFirstKey()),i==="last"&&(f=t.getLastKey());let C=e.selectedKeys;C.size&&(f=C.values().next().value),e.setFocused(!0),e.setFocusedKey(f),f==null&&!m&&J(s.current)}M.current=!1},[]);let k=u.useRef(e.focusedKey);u.useEffect(()=>{let f=Ke();if(e.isFocused&&e.focusedKey!=null&&(c!=null&&c.current)){let C=c.current.querySelector(`[data-key="${e.focusedKey}"]`);C&&f==="keyboard"&&(b||Il(c.current,C),$e(C,{containingElement:s.current}))}e.isFocused&&e.focusedKey==null&&k.current!=null&&J(s.current),k.current=e.focusedKey},[b,c,e.focusedKey,e.isFocused,s]);let I={onKeyDown:w,onFocus:P,onBlur:S,onMouseDown(f){c.current===f.target&&f.preventDefault()}},{typeSelectProps:F}=ks({keyboardDelegate:t,selectionManager:e});d||(I=N(F,I));let O;return m||(O=e.focusedKey==null?0:-1),{collectionProps:{...I,tabIndex:O}}}function Os(l){let{selectionManager:e,key:t,ref:s,shouldSelectOnPressUp:i,shouldUseVirtualFocus:r,focus:n,isDisabled:o,onAction:a,allowsDifferentPressOrigin:d,linkBehavior:m="action"}=l,$=Ve(),b=p=>{if(p.pointerType==="keyboard"&&ue(p))e.toggleSelection(t);else{if(e.selectionMode==="none")return;if(e.isLink(t)){if(m==="selection"){$.open(s.current,p),e.setSelectedKeys(e.selectedKeys);return}else if(m==="override"||m==="none")return}e.selectionMode==="single"?e.isSelected(t)&&!e.disallowEmptySelection?e.toggleSelection(t):e.replaceSelection(t):p&&p.shiftKey?e.extendSelection(t):e.selectionBehavior==="toggle"||p&&(Z(p)||p.pointerType==="touch"||p.pointerType==="virtual")?e.toggleSelection(t):e.replaceSelection(t)}};u.useEffect(()=>{t===e.focusedKey&&e.isFocused&&!r&&(n?n():document.activeElement!==s.current&&J(s.current))},[s,t,e.focusedKey,e.childFocusStrategy,e.isFocused,r]),o=o||e.isDisabled(t);let c={};!r&&!o?c={tabIndex:t===e.focusedKey?0:-1,onFocus(p){p.target===s.current&&e.setFocusedKey(t)}}:o&&(c.onMouseDown=p=>{p.preventDefault()});let h=e.isLink(t)&&m==="override",v=e.isLink(t)&&m!=="selection"&&m!=="none",g=!o&&e.canSelectItem(t)&&!h,w=(a||v)&&!o,x=w&&(e.selectionBehavior==="replace"?!g:!g||e.isEmpty),P=w&&g&&e.selectionBehavior==="replace",S=x||P,M=u.useRef(null),k=S&&g,I=u.useRef(!1),F=u.useRef(!1),O=p=>{a&&a(),v&&$.open(s.current,p)},f={};i?(f.onPressStart=p=>{M.current=p.pointerType,I.current=k,p.pointerType==="keyboard"&&(!S||Le())&&b(p)},d?(f.onPressUp=x?null:p=>{p.pointerType!=="keyboard"&&g&&b(p)},f.onPress=x?O:null):f.onPress=p=>{if(x||P&&p.pointerType!=="mouse"){if(p.pointerType==="keyboard"&&!Re())return;O(p)}else p.pointerType!=="keyboard"&&g&&b(p)}):(f.onPressStart=p=>{M.current=p.pointerType,I.current=k,F.current=x,g&&(p.pointerType==="mouse"&&!x||p.pointerType==="keyboard"&&(!w||Le()))&&b(p)},f.onPress=p=>{(p.pointerType==="touch"||p.pointerType==="pen"||p.pointerType==="virtual"||p.pointerType==="keyboard"&&S&&Re()||p.pointerType==="mouse"&&F.current)&&(S?O(p):g&&b(p))}),c["data-key"]=t,f.preventFocusOnPress=r;let{pressProps:C,isPressed:D}=kl(f),E=P?p=>{M.current==="mouse"&&(p.stopPropagation(),p.preventDefault(),O(p))}:void 0,{longPressProps:R}=We({isDisabled:!k,onLongPress(p){p.pointerType==="touch"&&(b(p),e.setSelectionBehavior("toggle"))}}),L=p=>{M.current==="touch"&&I.current&&p.preventDefault()},U=e.isLink(t)?p=>{El.isOpening||p.preventDefault()}:void 0;return{itemProps:N(c,g||x?C:{},k?R:{},{onDoubleClick:E,onDragStartCapture:L,onClick:U}),isPressed:D,isSelected:e.isSelected(t),isFocused:e.isFocused&&e.focusedKey===t,isDisabled:o,allowsSelection:g,hasAction:S}}function Re(){let l=window.event;return(l==null?void 0:l.key)==="Enter"}function Le(){let l=window.event;return(l==null?void 0:l.key)===" "||(l==null?void 0:l.code)==="Space"}class Ts{getNextKey(e){for(e=this.collection.getKeyAfter(e);e!=null;){if(this.collection.getItem(e).type==="item"&&!this.disabledKeys.has(e))return e;e=this.collection.getKeyAfter(e)}return null}getPreviousKey(e){for(e=this.collection.getKeyBefore(e);e!=null;){if(this.collection.getItem(e).type==="item"&&!this.disabledKeys.has(e))return e;e=this.collection.getKeyBefore(e)}return null}findKey(e,t,s){let i=this.getItem(e);if(!i)return null;let r=i.getBoundingClientRect();do e=t(e),i=this.getItem(e);while(i&&s(r,i.getBoundingClientRect()));return e}isSameRow(e,t){return e.top===t.top||e.left!==t.left}isSameColumn(e,t){return e.left===t.left||e.top!==t.top}getKeyBelow(e){return this.layout==="grid"&&this.orientation==="vertical"?this.findKey(e,t=>this.getNextKey(t),this.isSameRow):this.getNextKey(e)}getKeyAbove(e){return this.layout==="grid"&&this.orientation==="vertical"?this.findKey(e,t=>this.getPreviousKey(t),this.isSameRow):this.getPreviousKey(e)}getNextColumn(e,t){return t?this.getPreviousKey(e):this.getNextKey(e)}getKeyRightOf(e){return this.layout==="grid"?this.orientation==="vertical"?this.getNextColumn(e,this.direction==="rtl"):this.findKey(e,t=>this.getNextColumn(t,this.direction==="rtl"),this.isSameColumn):this.orientation==="horizontal"?this.getNextColumn(e,this.direction==="rtl"):null}getKeyLeftOf(e){return this.layout==="grid"?this.orientation==="vertical"?this.getNextColumn(e,this.direction==="ltr"):this.findKey(e,t=>this.getNextColumn(t,this.direction==="ltr"),this.isSameColumn):this.orientation==="horizontal"?this.getNextColumn(e,this.direction==="ltr"):null}getFirstKey(){let e=this.collection.getFirstKey();for(;e!=null;){if(this.collection.getItem(e).type==="item"&&!this.disabledKeys.has(e))return e;e=this.collection.getKeyAfter(e)}return null}getLastKey(){let e=this.collection.getLastKey();for(;e!=null;){if(this.collection.getItem(e).type==="item"&&!this.disabledKeys.has(e))return e;e=this.collection.getKeyBefore(e)}return null}getItem(e){return this.ref.current.querySelector(`[data-key="${e}"]`)}getKeyPageAbove(e){let t=this.ref.current,s=this.getItem(e);if(!s)return null;if(!xe(t))return this.getFirstKey();let i=t.getBoundingClientRect(),r=s.getBoundingClientRect();if(this.orientation==="horizontal"){let n=i.x-t.scrollLeft,o=Math.max(0,r.x-n+r.width-i.width);for(;s&&r.x-n>o;)e=this.getKeyAbove(e),s=e==null?null:this.getItem(e),r=s==null?void 0:s.getBoundingClientRect()}else{let n=i.y-t.scrollTop,o=Math.max(0,r.y-n+r.height-i.height);for(;s&&r.y-n>o;)e=this.getKeyAbove(e),s=e==null?null:this.getItem(e),r=s==null?void 0:s.getBoundingClientRect()}return e??this.getFirstKey()}getKeyPageBelow(e){let t=this.ref.current,s=this.getItem(e);if(!s)return null;if(!xe(t))return this.getLastKey();let i=t.getBoundingClientRect(),r=s.getBoundingClientRect();if(this.orientation==="horizontal"){let n=i.x-t.scrollLeft,o=Math.min(t.scrollWidth,r.x-n-r.width+i.width);for(;s&&r.x-nr||new Ts(t,o==="selection"?new Set:s,i,n),[r,t,s,i,n,o]),{collectionProps:d}=Fs({...l,ref:i,selectionManager:e,keyboardDelegate:a});return{listProps:d}}const me=new WeakMap;function js(l){return typeof l=="string"?l.replace(/\s*/g,""):""+l}function Rs(l,e){let t=me.get(l);if(!t)throw new Error("Unknown list");return`${t.id}-option-${js(e)}`}function Ls(l,e,t){let s=ie(l,{labelable:!0}),i=l.selectionBehavior||"toggle",r=l.linkBehavior||(i==="replace"?"action":"override");i==="toggle"&&r==="action"&&(r="override");let{listProps:n}=Ds({...l,ref:t,selectionManager:e.selectionManager,collection:e.collection,disabledKeys:e.disabledKeys,linkBehavior:r}),{focusWithinProps:o}=pe({onFocusWithin:l.onFocus,onBlurWithin:l.onBlur,onFocusWithinChange:l.onFocusChange}),a=se(l.id);me.set(e,{id:a,shouldUseVirtualFocus:l.shouldUseVirtualFocus,shouldSelectOnPressUp:l.shouldSelectOnPressUp,shouldFocusOnHover:l.shouldFocusOnHover,isVirtualized:l.isVirtualized,onAction:l.onAction,linkBehavior:r});let{labelProps:d,fieldProps:m}=Tl({...l,id:a,labelElementType:"span"});return{labelProps:d,listBoxProps:N(s,o,e.selectionManager.selectionMode==="multiple"?{"aria-multiselectable":"true"}:{},{role:"listbox",...N(m,n)})}}function Bs(l,e,t){var s;let{key:i}=l,r=me.get(e);var n;let o=(n=l.isDisabled)!==null&&n!==void 0?n:e.disabledKeys.has(i);var a;let d=(a=l.isSelected)!==null&&a!==void 0?a:e.selectionManager.isSelected(i);var m;let $=(m=l.shouldSelectOnPressUp)!==null&&m!==void 0?m:r==null?void 0:r.shouldSelectOnPressUp;var b;let c=(b=l.shouldFocusOnHover)!==null&&b!==void 0?b:r==null?void 0:r.shouldFocusOnHover;var h;let v=(h=l.shouldUseVirtualFocus)!==null&&h!==void 0?h:r==null?void 0:r.shouldUseVirtualFocus;var g;let w=(g=l.isVirtualized)!==null&&g!==void 0?g:r==null?void 0:r.isVirtualized,x=ce(),P=ce(),S={role:"option","aria-disabled":o||void 0,"aria-selected":e.selectionManager.selectionMode!=="none"?d:void 0};Xe()&&Dl()||(S["aria-label"]=l["aria-label"],S["aria-labelledby"]=x,S["aria-describedby"]=P);let M=e.collection.getItem(i);if(w){let E=Number(M==null?void 0:M.index);S["aria-posinset"]=Number.isNaN(E)?void 0:E+1,S["aria-setsize"]=ts(e.collection)}let{itemProps:k,isPressed:I,isFocused:F,hasAction:O,allowsSelection:f}=Os({selectionManager:e.selectionManager,key:i,ref:t,shouldSelectOnPressUp:$,allowsDifferentPressOrigin:$&&c,isVirtualized:w,shouldUseVirtualFocus:v,isDisabled:o,onAction:r!=null&&r.onAction?()=>{var E;return r==null||(E=r.onAction)===null||E===void 0?void 0:E.call(r,i)}:void 0,linkBehavior:r==null?void 0:r.linkBehavior}),{hoverProps:C}=jl({isDisabled:o||!c,onHoverStart(){we()||(e.selectionManager.setFocused(!0),e.selectionManager.setFocusedKey(i))}}),D=ie(M==null?void 0:M.props,{isLink:!!(!(M==null||(s=M.props)===null||s===void 0)&&s.href)});return delete D.id,{optionProps:{...S,...N(D,k,C),id:Rs(e,i)},labelProps:{id:x},descriptionProps:{id:P},isFocused:F,isFocusVisible:F&&we(),isSelected:d,isDisabled:o,isPressed:I,allowsSelection:f,hasAction:O}}var zs=["color","size","title"];function fe(){return fe=Object.assign||function(l){for(var e=1;e=0)&&Object.prototype.propertyIsEnumerable.call(l,s)&&(t[s]=l[s])}return t}function Hs(l,e){if(l==null)return{};var t={},s=Object.keys(l),i,r;for(r=0;r=0)&&(t[i]=l[i]);return t}var ye=u.forwardRef(function(l,e){var t=l.color,s=l.size,i=l.title,r=Ns(l,zs);return A.createElement("svg",fe({ref:e,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:s,height:s,fill:t},r),i?A.createElement("title",null,i):null,A.createElement("path",{d:"M10.97 4.97a.75.75 0 0 1 1.07 1.05l-3.99 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425a.267.267 0 0 1 .02-.022z"}))});ye.propTypes={color:T.string,size:T.oneOfType([T.string,T.number]),title:T.string};ye.defaultProps={color:"currentColor",size:"1em",title:null};const Us=ye;var Vs=["color","size","title"];function he(){return he=Object.assign||function(l){for(var e=1;e=0)&&Object.prototype.propertyIsEnumerable.call(l,s)&&(t[s]=l[s])}return t}function Xs(l,e){if(l==null)return{};var t={},s=Object.keys(l),i,r;for(r=0;r=0)&&(t[i]=l[i]);return t}var be=u.forwardRef(function(l,e){var t=l.color,s=l.size,i=l.title,r=Ws(l,Vs);return A.createElement("svg",he({ref:e,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:s,height:s,fill:t},r),i?A.createElement("title",null,i):null,A.createElement("path",{fillRule:"evenodd",d:"M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z"}))});be.propTypes={color:T.string,size:T.oneOfType([T.string,T.number]),title:T.string};be.defaultProps={color:"currentColor",size:"1em",title:null};const qs=be;var Zs=["color","size","title"];function ge(){return ge=Object.assign||function(l){for(var e=1;e=0)&&Object.prototype.propertyIsEnumerable.call(l,s)&&(t[s]=l[s])}return t}function Gs(l,e){if(l==null)return{};var t={},s=Object.keys(l),i,r;for(r=0;r=0)&&(t[i]=l[i]);return t}var ve=u.forwardRef(function(l,e){var t=l.color,s=l.size,i=l.title,r=Ys(l,Zs);return A.createElement("svg",ge({ref:e,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:s,height:s,fill:t},r),i?A.createElement("title",null,i):null,A.createElement("path",{d:"M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z"}))});ve.propTypes={color:T.string,size:T.oneOfType([T.string,T.number]),title:T.string};ve.defaultProps={color:"currentColor",size:"1em",title:null};const Dt=ve;function Js(l){const e=u.useRef(null),{optionProps:t,isDisabled:s,isSelected:i,isFocusVisible:r}=Bs({key:l.item.key},l.state,e);return y.jsxs("li",{...t,ref:e,className:qe({variant:"transparent",size:"md",className:H("flex items-center justify-between my-1 hover:bg-gray-300 dark:hover:bg-secondary focus:bg-gray-300 dark:focus:bg-secondary",(i||r)&&"dark:bg-secondary bg-gray-300",s&&"cursor-not-allowed opacity-70")}),children:[l.item.rendered,i?y.jsx(Us,{"aria-label":`Selected ${l.item.textValue}`,className:"dark:text-gray-400"}):null]})}function Qs(l){const e=u.useRef(null),{listBoxRef:t=e,state:s}=l,{listBoxProps:i}=Ls(l,s,t),r=Ne.useTranslations("Common");return y.jsx("ul",{...i,ref:t,className:"max-h-72 overflow-auto outline-none",children:s.collection.size<=0?y.jsx("li",{className:"text-center text-sm dark:text-gray-400 text-neutral-700",children:r("noOptions")}):[...s.collection].map(n=>y.jsx(Js,{item:n,state:s},n.key))})}function _s(l){let[e,t]=Ze(l.isOpen,l.defaultOpen||!1,l.onOpenChange);const s=u.useCallback(()=>{t(!0)},[t]),i=u.useCallback(()=>{t(!1)},[t]),r=u.useCallback(()=>{t(!e)},[t,e]);return{isOpen:e,setOpen:t,open:s,close:i,toggle:r}}function ei(l){let e=_s(l),[t,s]=u.useState(null);return{focusStrategy:t,...e,open(i=null){s(i),e.open()},toggle(i=null){s(i),e.toggle()}}}class B extends Set{constructor(e,t,s){super(e),e instanceof B?(this.anchorKey=t||e.anchorKey,this.currentKey=s||e.currentKey):(this.anchorKey=t,this.currentKey=s)}}function ti(l,e){if(l.size!==e.size)return!1;for(let t of l)if(!e.has(t))return!1;return!0}function li(l){let{selectionMode:e="none",disallowEmptySelection:t,allowDuplicateSelectionEvents:s,selectionBehavior:i="toggle",disabledBehavior:r="all"}=l,n=u.useRef(!1),[,o]=u.useState(!1),a=u.useRef(null),d=u.useRef(null),[,m]=u.useState(null),$=u.useMemo(()=>Be(l.selectedKeys),[l.selectedKeys]),b=u.useMemo(()=>Be(l.defaultSelectedKeys,new B),[l.defaultSelectedKeys]),[c,h]=Ze($,b,l.onSelectionChange),v=u.useMemo(()=>l.disabledKeys?new Set(l.disabledKeys):new Set,[l.disabledKeys]),[g,w]=u.useState(i);i==="replace"&&g==="toggle"&&typeof c=="object"&&c.size===0&&w("replace");let x=u.useRef(i);return u.useEffect(()=>{i!==x.current&&(w(i),x.current=i)},[i]),{selectionMode:e,disallowEmptySelection:t,selectionBehavior:g,setSelectionBehavior:w,get isFocused(){return n.current},setFocused(P){n.current=P,o(P)},get focusedKey(){return a.current},get childFocusStrategy(){return d.current},setFocusedKey(P,S="first"){a.current=P,d.current=S,m(P)},selectedKeys:c,setSelectedKeys(P){(s||!ti(P,c))&&h(P)},disabledKeys:v,disabledBehavior:r}}function Be(l,e){return l?l==="all"?"all":new B(l):e}class si{get selectionMode(){return this.state.selectionMode}get disallowEmptySelection(){return this.state.disallowEmptySelection}get selectionBehavior(){return this.state.selectionBehavior}setSelectionBehavior(e){this.state.setSelectionBehavior(e)}get isFocused(){return this.state.isFocused}setFocused(e){this.state.setFocused(e)}get focusedKey(){return this.state.focusedKey}get childFocusStrategy(){return this.state.childFocusStrategy}setFocusedKey(e,t){(e==null||this.collection.getItem(e))&&this.state.setFocusedKey(e,t)}get selectedKeys(){return this.state.selectedKeys==="all"?new Set(this.getSelectAllKeys()):this.state.selectedKeys}get rawSelection(){return this.state.selectedKeys}isSelected(e){return this.state.selectionMode==="none"?!1:(e=this.getKey(e),this.state.selectedKeys==="all"?this.canSelectItem(e):this.state.selectedKeys.has(e))}get isEmpty(){return this.state.selectedKeys!=="all"&&this.state.selectedKeys.size===0}get isSelectAll(){if(this.isEmpty)return!1;if(this.state.selectedKeys==="all")return!0;if(this._isSelectAll!=null)return this._isSelectAll;let e=this.getSelectAllKeys(),t=this.state.selectedKeys;return this._isSelectAll=e.every(s=>t.has(s)),this._isSelectAll}get firstSelectedKey(){let e=null;for(let t of this.state.selectedKeys){let s=this.collection.getItem(t);(!e||s&&ne(this.collection,s,e)<0)&&(e=s)}return e==null?void 0:e.key}get lastSelectedKey(){let e=null;for(let t of this.state.selectedKeys){let s=this.collection.getItem(t);(!e||s&&ne(this.collection,s,e)>0)&&(e=s)}return e==null?void 0:e.key}get disabledKeys(){return this.state.disabledKeys}get disabledBehavior(){return this.state.disabledBehavior}extendSelection(e){if(this.selectionMode==="none")return;if(this.selectionMode==="single"){this.replaceSelection(e);return}e=this.getKey(e);let t;if(this.state.selectedKeys==="all")t=new B([e],e,e);else{let s=this.state.selectedKeys,i=s.anchorKey||e;t=new B(s,i,e);for(let r of this.getKeyRange(i,s.currentKey||e))t.delete(r);for(let r of this.getKeyRange(e,i))this.canSelectItem(r)&&t.add(r)}this.state.setSelectedKeys(t)}getKeyRange(e,t){let s=this.collection.getItem(e),i=this.collection.getItem(t);return s&&i?ne(this.collection,s,i)<=0?this.getKeyRangeInternal(e,t):this.getKeyRangeInternal(t,e):[]}getKeyRangeInternal(e,t){let s=[],i=e;for(;i;){let r=this.collection.getItem(i);if((r&&r.type==="item"||r.type==="cell"&&this.allowsCellSelection)&&s.push(i),i===t)return s;i=this.collection.getKeyAfter(i)}return[]}getKey(e){let t=this.collection.getItem(e);if(!t||t.type==="cell"&&this.allowsCellSelection)return e;for(;t.type!=="item"&&t.parentKey!=null;)t=this.collection.getItem(t.parentKey);return!t||t.type!=="item"?null:t.key}toggleSelection(e){if(this.selectionMode==="none")return;if(this.selectionMode==="single"&&!this.isSelected(e)){this.replaceSelection(e);return}if(e=this.getKey(e),e==null)return;let t=new B(this.state.selectedKeys==="all"?this.getSelectAllKeys():this.state.selectedKeys);t.has(e)?t.delete(e):this.canSelectItem(e)&&(t.add(e),t.anchorKey=e,t.currentKey=e),!(this.disallowEmptySelection&&t.size===0)&&this.state.setSelectedKeys(t)}replaceSelection(e){if(this.selectionMode==="none"||(e=this.getKey(e),e==null))return;let t=this.canSelectItem(e)?new B([e],e,e):new B;this.state.setSelectedKeys(t)}setSelectedKeys(e){if(this.selectionMode==="none")return;let t=new B;for(let s of e)if(s=this.getKey(s),s!=null&&(t.add(s),this.selectionMode==="single"))break;this.state.setSelectedKeys(t)}getSelectAllKeys(){let e=[],t=s=>{for(;s;){if(this.canSelectItem(s)){let i=this.collection.getItem(s);i.type==="item"&&e.push(s),i.hasChildNodes&&(this.allowsCellSelection||i.type!=="item")&&t(_l(Je(i,this.collection)).key)}s=this.collection.getKeyAfter(s)}};return t(this.collection.getFirstKey()),e}selectAll(){!this.isSelectAll&&this.selectionMode==="multiple"&&this.state.setSelectedKeys("all")}clearSelection(){!this.disallowEmptySelection&&(this.state.selectedKeys==="all"||this.state.selectedKeys.size>0)&&this.state.setSelectedKeys(new B)}toggleSelectAll(){this.isSelectAll?this.clearSelection():this.selectAll()}select(e,t){this.selectionMode!=="none"&&(this.selectionMode==="single"?this.isSelected(e)&&!this.disallowEmptySelection?this.toggleSelection(e):this.replaceSelection(e):this.selectionBehavior==="toggle"||t&&(t.pointerType==="touch"||t.pointerType==="virtual")?this.toggleSelection(e):this.replaceSelection(e))}isSelectionEqual(e){if(e===this.state.selectedKeys)return!0;let t=this.selectedKeys;if(e.size!==t.size)return!1;for(let s of e)if(!t.has(s))return!1;for(let s of t)if(!e.has(s))return!1;return!0}canSelectItem(e){if(this.state.selectionMode==="none"||this.state.disabledKeys.has(e))return!1;let t=this.collection.getItem(e);return!(!t||t.type==="cell"&&!this.allowsCellSelection)}isDisabled(e){return this.state.disabledKeys.has(e)&&this.state.disabledBehavior==="all"}isLink(e){var t,s;return!!(!((t=this.collection.getItem(e))===null||t===void 0||(s=t.props)===null||s===void 0)&&s.href)}constructor(e,t,s){this.collection=e,this.state=t;var i;this.allowsCellSelection=(i=s==null?void 0:s.allowsCellSelection)!==null&&i!==void 0?i:!1,this._isSelectAll=null}}class ze{*[Symbol.iterator](){yield*this.iterable}get size(){return this.keyMap.size}getKeys(){return this.keyMap.keys()}getKeyBefore(e){let t=this.keyMap.get(e);return t?t.prevKey:null}getKeyAfter(e){let t=this.keyMap.get(e);return t?t.nextKey:null}getFirstKey(){return this.firstKey}getLastKey(){return this.lastKey}getItem(e){return this.keyMap.get(e)}at(e){const t=[...this.getKeys()];return this.getItem(t[e])}getChildren(e){let t=this.keyMap.get(e);return(t==null?void 0:t.childNodes)||[]}constructor(e){this.keyMap=new Map,this.iterable=e;let t=r=>{if(this.keyMap.set(r.key,r),r.childNodes&&r.type==="section")for(let n of r.childNodes)t(n)};for(let r of e)t(r);let s,i=0;for(let[r,n]of this.keyMap)s?(s.nextKey=r,n.prevKey=s.key):(this.firstKey=r,n.prevKey=void 0),n.type==="item"&&(n.index=i++),s=n,s.nextKey=void 0;this.lastKey=s==null?void 0:s.key}}function ii(l){let{filter:e}=l,t=li(l),s=u.useMemo(()=>l.disabledKeys?new Set(l.disabledKeys):new Set,[l.disabledKeys]),i=u.useCallback(d=>e?new ze(e(d)):new ze(d),[e]),r=u.useMemo(()=>({suppressTextValueWarning:l.suppressTextValueWarning}),[l.suppressTextValueWarning]),n=Ql(l,i,r),o=u.useMemo(()=>new si(n,t),[n,t]);const a=u.useRef(null);return u.useEffect(()=>{if(t.focusedKey!=null&&!n.getItem(t.focusedKey)){const d=a.current.getItem(t.focusedKey),m=[...a.current.getKeys()].map(v=>{const g=a.current.getItem(v);return g.type==="item"?g:null}).filter(v=>v!==null),$=[...n.getKeys()].map(v=>{const g=n.getItem(v);return g.type==="item"?g:null}).filter(v=>v!==null),b=m.length-$.length;let c=Math.min(b>1?Math.max(d.index-b+1,0):d.index,$.length-1),h;for(;c>=0;){if(!o.isDisabled($[c].key)){h=$[c];break}c<$.length-1?c++:(c>d.index&&(c=d.index),c--)}t.setFocusedKey(h?h.key:null)}a.current=n},[n,o,t,t.focusedKey]),{collection:n,disabledKeys:s,selectionManager:o}}function ri(l){const{collection:e,disabledKeys:t,selectionManager:s,selectionManager:{setSelectedKeys:i,selectedKeys:r,selectionMode:n}}=ii(l),o=[],a=r.size!==0?Array.from(r).map(d=>{const m=e.getItem(d);return m||o.push(d),m}).filter(Boolean):null;return o.length&&console.warn(`Select: Keys "${o.join(", ")}" passed to "selectedKeys" are not present in the collection.`),{collection:e,disabledKeys:t,selectionManager:s,selectionMode:n,selectedKeys:r,setSelectedKeys:i.bind(s),selectedItems:a}}function ni(l){const[e,t]=u.useState(!1),s=ei(l),i=ri({...l,onSelectionChange:r=>{if(typeof l.onSelectionChange=="function")if(r==="all"&&l.onSelectionChange([...new Set(i.collection.getKeys()).values()]),l.selectionMode==="single"&&r!=="all"){const n=[...r.values()][0]??null;l.onSelectionChange(n)}else{const n=typeof r=="object"&&[...r.values()];if(!n)return;l.onSelectionChange(n)}l.selectionMode==="single"&&s.close()}});return{...i,...s,isFocused:e,setIsFocused:t}}function oi(l){return l&&l.__esModule?l.default:l}var jt={},Rt={};Rt={longPressMessage:"اضغط مطولاً أو اضغط على Alt + السهم لأسفل لفتح القائمة"};var Lt={};Lt={longPressMessage:"Натиснете продължително или натиснете Alt+ стрелка надолу, за да отворите менюто"};var Bt={};Bt={longPressMessage:"Dlouhým stiskem nebo stisknutím kláves Alt + šipka dolů otevřete nabídku"};var zt={};zt={longPressMessage:"Langt tryk eller tryk på Alt + pil ned for at åbne menuen"};var Nt={};Nt={longPressMessage:"Drücken Sie lange oder drücken Sie Alt + Nach-unten, um das Menü zu öffnen"};var Ht={};Ht={longPressMessage:"Πιέστε παρατεταμένα ή πατήστε Alt + κάτω βέλος για να ανοίξετε το μενού"};var Ut={};Ut={longPressMessage:"Long press or press Alt + ArrowDown to open menu"};var Vt={};Vt={longPressMessage:"Mantenga pulsado o pulse Alt + flecha abajo para abrir el menú"};var Wt={};Wt={longPressMessage:"Menüü avamiseks vajutage pikalt või vajutage klahve Alt + allanool"};var Xt={};Xt={longPressMessage:"Avaa valikko painamalla pohjassa tai näppäinyhdistelmällä Alt + Alanuoli"};var qt={};qt={longPressMessage:"Appuyez de manière prolongée ou appuyez sur Alt + Flèche vers le bas pour ouvrir le menu."};var Zt={};Zt={longPressMessage:"לחץ לחיצה ארוכה או הקש Alt + ArrowDown כדי לפתוח את התפריט"};var Yt={};Yt={longPressMessage:"Dugo pritisnite ili pritisnite Alt + strelicu prema dolje za otvaranje izbornika"};var Gt={};Gt={longPressMessage:"Nyomja meg hosszan, vagy nyomja meg az Alt + lefele nyíl gombot a menü megnyitásához"};var Jt={};Jt={longPressMessage:"Premere a lungo o premere Alt + Freccia giù per aprire il menu"};var Qt={};Qt={longPressMessage:"長押しまたは Alt+下矢印キーでメニューを開く"};var _t={};_t={longPressMessage:"길게 누르거나 Alt + 아래쪽 화살표를 눌러 메뉴 열기"};var el={};el={longPressMessage:"Norėdami atidaryti meniu, nuspaudę palaikykite arba paspauskite „Alt + ArrowDown“."};var tl={};tl={longPressMessage:"Lai atvērtu izvēlni, turiet nospiestu vai nospiediet taustiņu kombināciju Alt + lejupvērstā bultiņa"};var ll={};ll={longPressMessage:"Langt trykk eller trykk Alt + PilNed for å åpne menyen"};var sl={};sl={longPressMessage:"Druk lang op Alt + pijl-omlaag of druk op Alt om het menu te openen"};var il={};il={longPressMessage:"Naciśnij i przytrzymaj lub naciśnij klawisze Alt + Strzałka w dół, aby otworzyć menu"};var rl={};rl={longPressMessage:"Pressione e segure ou pressione Alt + Seta para baixo para abrir o menu"};var nl={};nl={longPressMessage:"Prima continuamente ou prima Alt + Seta Para Baixo para abrir o menu"};var ol={};ol={longPressMessage:"Apăsați lung sau apăsați pe Alt + săgeată în jos pentru a deschide meniul"};var al={};al={longPressMessage:"Нажмите и удерживайте или нажмите Alt + Стрелка вниз, чтобы открыть меню"};var cl={};cl={longPressMessage:"Ponuku otvoríte dlhým stlačením alebo stlačením klávesu Alt + klávesu so šípkou nadol"};var dl={};dl={longPressMessage:"Za odprtje menija pritisnite in držite gumb ali pritisnite Alt+puščica navzdol"};var ul={};ul={longPressMessage:"Dugo pritisnite ili pritisnite Alt + strelicu prema dole da otvorite meni"};var fl={};fl={longPressMessage:"Håll nedtryckt eller tryck på Alt + pil nedåt för att öppna menyn"};var hl={};hl={longPressMessage:"Menüyü açmak için uzun basın veya Alt + Aşağı Ok tuşuna basın"};var gl={};gl={longPressMessage:"Довго або звичайно натисніть комбінацію клавіш Alt і стрілка вниз, щоб відкрити меню"};var pl={};pl={longPressMessage:"长按或按 Alt + 向下方向键以打开菜单"};var ml={};ml={longPressMessage:"長按或按 Alt+向下鍵以開啟功能表"};jt={"ar-AE":Rt,"bg-BG":Lt,"cs-CZ":Bt,"da-DK":zt,"de-DE":Nt,"el-GR":Ht,"en-US":Ut,"es-ES":Vt,"et-EE":Wt,"fi-FI":Xt,"fr-FR":qt,"he-IL":Zt,"hr-HR":Yt,"hu-HU":Gt,"it-IT":Jt,"ja-JP":Qt,"ko-KR":_t,"lt-LT":el,"lv-LV":tl,"nb-NO":ll,"nl-NL":sl,"pl-PL":il,"pt-BR":rl,"pt-PT":nl,"ro-RO":ol,"ru-RU":al,"sk-SK":cl,"sl-SI":dl,"sr-SP":ul,"sv-SE":fl,"tr-TR":hl,"uk-UA":gl,"zh-CN":pl,"zh-TW":ml};function ai(l,e,t){let{type:s="menu",isDisabled:i,trigger:r="press"}=l,n=se(),{triggerProps:o,overlayProps:a}=bs({type:s},e,t),d=c=>{if(!i&&!(r==="longPress"&&!c.altKey)&&t&&t.current)switch(c.key){case"Enter":case" ":if(r==="longPress")return;case"ArrowDown":"continuePropagation"in c||c.stopPropagation(),c.preventDefault(),e.toggle("first");break;case"ArrowUp":"continuePropagation"in c||c.stopPropagation(),c.preventDefault(),e.toggle("last");break;default:"continuePropagation"in c&&c.continuePropagation()}},m=Ue(oi(jt)),{longPressProps:$}=We({isDisabled:i||r!=="longPress",accessibilityDescription:m.format("longPressMessage"),onLongPressStart(){e.close()},onLongPress(){e.open("first")}}),b={onPressStart(c){c.pointerType!=="touch"&&c.pointerType!=="keyboard"&&!i&&e.toggle(c.pointerType==="virtual"?"first":null)},onPress(c){c.pointerType==="touch"&&!i&&e.toggle()}};return delete o.onPress,{menuTriggerProps:{...o,...r==="press"?b:$,id:n,onKeyDown:d},menuProps:{...a,"aria-labelledby":n,autoFocus:e.focusStrategy||!0,onClose:e.close}}}function ci(l,e,t){const{disallowEmptySelection:s,isDisabled:i}=l,{menuTriggerProps:r,menuProps:n}=ai({isDisabled:i,type:"listbox"},e,t),{labelProps:o,errorMessageProps:a,fieldProps:d}=Rl(l),m=ie(l,{labelable:!0}),$=N(r,d),b=se();return{errorMessageProps:a,labelProps:{...o,onClick:()=>{var c;e.isFocused||i||((c=t.current)==null||c.focus(),e.setIsFocused(!0),Ll("keyboard"),e.setOpen(!0))}},triggerProps:N(m,{...$,onFocus(c){e.isFocused||(e.setIsFocused(!0),l.onFocus&&l.onFocus(c))},onBlur(c){e.isOpen||(e.setIsFocused(!1),l.onBlur&&l.onBlur(c))}}),valueProps:{id:b},menuProps:{...n,disallowEmptySelection:s,shouldSelectOnPressUp:!0}}}function di(l){return typeof l.selectedKey>"u"&&typeof l.selectedKeys>"u"?[]:l.selectedKey!==null&&typeof l.selectedKey<"u"?l.selectedKey.toString().trim().length<=0?[]:[l.selectedKey]:l.selectedKey===null?[]:l.selectedKeys==="all"?"all":l.selectedKeys instanceof Set||Array.isArray(l.selectedKeys)?l.selectedKeys:[l.selectedKeys]}function ui(l){var i;const e=Ne.useTranslations("Common"),t=l.selectionMode==="multiple"?l.state.selectedItems:null,s=l.selectionMode==="single"?(i=l.state.selectedItems)==null?void 0:i[0]:null;return t&&t.length>0?y.jsx(y.Fragment,{children:t.map(r=>{const n=l.options.find(o=>o.value===r.key);return y.jsxs("span",{className:"text-sm flex items-center justify-between px-1.5 rounded-sm bg-gray-300 dark:bg-tertiary",children:[y.jsxs(Ul,{open:n!=null&&n.description?void 0:!1,children:[y.jsx(Vl,{asChild:!0,children:y.jsx("span",{className:"pr-1",children:r.textValue})}),y.jsx(Wl,{sideOffset:7,side:"bottom",align:"center",pointerEvents:!0,children:n==null?void 0:n.description})]}),y.jsx(Q,{className:"!px-0.5 hover:!bg-gray-400 dark:hover:!bg-primary",variant:"transparent",role:"button",onPress:()=>{const o=[...l.state.selectedKeys].filter(a=>a!==r.key);l.state.setSelectedKeys(o)},children:y.jsx(Dt,{className:"w-5 h-5"})})]},r.key)})}):s?y.jsx("span",{className:"w-full inline-block overflow-hidden whitespace-nowrap text-ellipsis",children:s.textValue}):y.jsx("span",{children:e("select")})}function fi(l){var i;const e=l.selectionMode==="multiple"?l.state.selectedItems:null,t=l.selectionMode==="single"?(i=l.state.selectedItems)==null?void 0:i[0]:null,s=l.isClearable&&(e||t);return y.jsxs(y.Fragment,{children:[l.isLoading?y.jsx("div",{className:H("absolute top-0 bottom-0 flex items-center justify-center",s?"right-[82px]":"right-12"),children:y.jsx(Ye,{})}):null,s?y.jsx(Q,{isDisabled:l.isDisabled,onPress:()=>{l.state.setSelectedKeys([])},className:H("px-2 !rounded-none -mx-[1.5px]","group-hover:dark:!border-gray-500 group-hover:!border-gray-500",l.state.isOpen&&"!border-gray-800 dark:!border-gray-500",l.errorMessage&&"!border-red-500 focus:!border-red-700 dark:!focus:border-red-700"),type:"button",children:y.jsx(Dt,{className:"w-5 h-5 dark:fill-white"})}):null,y.jsx(Q,{isDisabled:l.isDisabled,onPress:()=>l.state.open(),size:"xs",type:"button",className:H("rounded-l-none",!s&&"-ml-[1.5px]","group-hover:dark:!border-gray-500 group-hover:!border-gray-500",l.state.isOpen&&"!border-gray-800 dark:!border-gray-500",l.errorMessage&&"!border-red-500 focus:!border-red-700 dark:!focus:border-red-700"),children:y.jsx(qs,{className:"w-5 h-5 dark:fill-white"})})]})}function hi(l){var g;const e=l.selectionMode??"single",t=u.useMemo(()=>l.options.map(w=>y.jsx(Yl,{textValue:w.textValue||void 0,children:w.label},w.value)),[l.options]),s=u.useMemo(()=>l.options.filter(w=>!!w.isDisabled).map(w=>w.value),[l.options]),i=u.useMemo(()=>di({selectedKey:l.selectedKey,selectedKeys:l.selectedKeys}),[l.selectedKeys,l.selectedKey]),r=!l.isClearable,n=ni({...l,selectedKeys:i,children:t,disabledKeys:s,disallowEmptySelection:r,selectionMode:e}),o=u.useRef(null),{labelProps:a,triggerProps:d,errorMessageProps:m,valueProps:$,menuProps:b}=ci({...l,selectedKey:void 0,disallowEmptySelection:r,children:t,disabledKeys:s},n,o),{buttonProps:c}=Bl(d,o),h=e==="multiple"?n.selectedItems:null,v=e==="single"?(g=n.selectedItems)==null?void 0:g[0]:null;return y.jsx(_e,{children:y.jsxs("div",{className:H("flex flex-col mb-3",l.className),children:[y.jsx(Xl,{...l,labelProps:a}),y.jsxs("div",{className:"relative group",children:[y.jsxs("div",{className:"flex",children:[y.jsx("div",{role:"button",...c,className:H(qe({variant:"default",size:"sm",className:H("px-2 cursor-default !rounded-r-none w-full min-h-[39px] h-auto flex items-center justify-between border !bg-white dark:!bg-secondary hover:dark:!bg-secondary hover:dark:!brightness-100 group-hover:dark:!border-gray-500 group-hover:!border-gray-500",l.errorMessage&&"!border-red-500 focus:!border-red-700 dark:focus:!border-red-700",n.isOpen&&"dark:!border-gray-500 !border-gray-500",l.isDisabled&&"!cursor-not-allowed opacity-60")})),ref:o,children:y.jsx("div",{...$,className:H("flex items-center gap-2 flex-wrap",!(h||v)&&"text-neutral-700 dark:text-gray-400"),children:y.jsx(ui,{options:l.options,selectionMode:e,state:n})})}),y.jsx(fi,{selectionMode:e,state:n,isClearable:l.isClearable,errorMessage:l.errorMessage,isDisabled:l.isDisabled,isLoading:l.isLoading})]}),n.isOpen&&y.jsx(As,{isCalendar:l.isCalendar,isOpen:n.isOpen,onClose:n.close,children:y.jsx(Qs,{...b,state:n})})]}),l.children,l.errorMessage&&y.jsx(ql,{errorMessage:l.errorMessage,errorMessageProps:m})]})})}function bi(){const[l,e]=u.useState(null),{hide:t,data:s}=vl(),i=zl({mutationKey:["set-unit-status"],onSuccess(n){var o;t(),$l({title:"Status updated",message:`Successfully updated your status to ${(o=n.status)==null?void 0:o.value.value}.`})},mutationFn:async n=>{if(!(s!=null&&s.url)||!s.userApiToken)throw new Error("SnailyCAD API URL and/or Personal API Token not provided.");const{data:o,error:a,errorMessage:d}=await Nl({url:s.url,path:`/dispatch/status/${s.unitId}`,method:"PUT",data:{status:n.statusId},headers:{userApiToken:s.userApiToken}});if(a||!o)throw new Error((a==null?void 0:a.message)||d||"Unknown error occurred. Please see F8 console for further details.");return o}});function r(n){n.preventDefault(),l&&i.mutate({statusId:l})}return y.jsxs("div",{className:"max-w-lg rounded-md bg-primary p-8",children:[y.jsxs("header",{className:"mb-2",children:[y.jsxs("div",{className:"mb-3 flex items-center justify-between",children:[y.jsx("h1",{className:"text-2xl font-bold text-white",children:"Set Status"}),y.jsx(Q,{className:"px-1 text-base",onPress:t,children:y.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",fill:"currentColor",className:"bi bi-x",viewBox:"0 0 16 16",children:y.jsx("path",{d:"M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z"})})})]}),y.jsx("p",{className:"text-neutral-200",children:"Set the status for your active unit."})]}),i.error?y.jsx(Hl,{type:"error",title:"An error occurred",message:i.error.message}):null,y.jsxs("form",{onSubmit:r,className:"mt-3",children:[y.jsx(hi,{selectedKey:l,onSelectionChange:n=>e(n),label:"Status",options:((s==null?void 0:s.statusCodes)??[]).map(n=>({label:n.value.value,value:n.id}))}),y.jsxs("p",{className:"text-neutral-200 mt-2",children:["Additionally use",y.jsx("code",{className:"inline-block bg-secondary p-0.5",children:"/sn-set-status "})]}),y.jsxs(Q,{className:"flex gap-2 items-center",type:"submit",isDisabled:i.isPending,children:[i.isPending?y.jsx(Ye,{}):null,"Save"]})]})]})}export{bi as SetStatusScreen}; diff --git a/resources/[sna]/sna-sync/server/server.js b/resources/[sna]/sna-sync/server/server.js new file mode 100644 index 0000000..5d31984 --- /dev/null +++ b/resources/[sna]/sna-sync/server/server.js @@ -0,0 +1,24852 @@ +"use strict"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var __accessCheck = (obj, member, msg) => { + if (!member.has(obj)) + throw TypeError("Cannot " + msg); +}; +var __privateGet = (obj, member, getter) => { + __accessCheck(obj, member, "read from private field"); + return getter ? getter.call(obj) : member.get(obj); +}; +var __privateAdd = (obj, member, value) => { + if (member.has(obj)) + throw TypeError("Cannot add the same private member more than once"); + member instanceof WeakSet ? member.add(obj) : member.set(obj, value); +}; +var __privateSet = (obj, member, value, setter) => { + __accessCheck(obj, member, "write to private field"); + setter ? setter.call(obj, value) : member.set(obj, value); + return value; +}; +var __privateMethod = (obj, member, method) => { + __accessCheck(obj, member, "access private method"); + return method; +}; + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/symbols.js +var require_symbols = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/symbols.js"(exports2, module2) { + module2.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"), + kHeadersList: Symbol("headers list"), + 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"), + 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"), + 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"), + kHTTP2BuildRequest: Symbol("http2 build request"), + kHTTP1BuildRequest: Symbol("http1 build request"), + kHTTP2CopyHeaders: Symbol("http2 copy headers"), + kHTTPConnVersion: Symbol("http connection version") + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/errors.js +var require_errors = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/errors.js"(exports2, module2) { + "use strict"; + var UndiciError = class extends Error { + constructor(message) { + super(message); + this.name = "UndiciError"; + this.code = "UND_ERR"; + } + }; + var ConnectTimeoutError = class _ConnectTimeoutError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _ConnectTimeoutError); + this.name = "ConnectTimeoutError"; + this.message = message || "Connect Timeout Error"; + this.code = "UND_ERR_CONNECT_TIMEOUT"; + } + }; + var HeadersTimeoutError = class _HeadersTimeoutError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _HeadersTimeoutError); + this.name = "HeadersTimeoutError"; + this.message = message || "Headers Timeout Error"; + this.code = "UND_ERR_HEADERS_TIMEOUT"; + } + }; + var HeadersOverflowError = class _HeadersOverflowError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _HeadersOverflowError); + this.name = "HeadersOverflowError"; + this.message = message || "Headers Overflow Error"; + this.code = "UND_ERR_HEADERS_OVERFLOW"; + } + }; + var BodyTimeoutError = class _BodyTimeoutError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _BodyTimeoutError); + this.name = "BodyTimeoutError"; + this.message = message || "Body Timeout Error"; + this.code = "UND_ERR_BODY_TIMEOUT"; + } + }; + var ResponseStatusCodeError = class _ResponseStatusCodeError extends UndiciError { + constructor(message, statusCode, headers, body) { + super(message); + Error.captureStackTrace(this, _ResponseStatusCodeError); + this.name = "ResponseStatusCodeError"; + this.message = message || "Response Status Code Error"; + this.code = "UND_ERR_RESPONSE_STATUS_CODE"; + this.body = body; + this.status = statusCode; + this.statusCode = statusCode; + this.headers = headers; + } + }; + var InvalidArgumentError = class _InvalidArgumentError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _InvalidArgumentError); + this.name = "InvalidArgumentError"; + this.message = message || "Invalid Argument Error"; + this.code = "UND_ERR_INVALID_ARG"; + } + }; + var InvalidReturnValueError = class _InvalidReturnValueError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _InvalidReturnValueError); + this.name = "InvalidReturnValueError"; + this.message = message || "Invalid Return Value Error"; + this.code = "UND_ERR_INVALID_RETURN_VALUE"; + } + }; + var RequestAbortedError = class _RequestAbortedError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _RequestAbortedError); + this.name = "AbortError"; + this.message = message || "Request aborted"; + this.code = "UND_ERR_ABORTED"; + } + }; + var InformationalError = class _InformationalError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _InformationalError); + this.name = "InformationalError"; + this.message = message || "Request information"; + this.code = "UND_ERR_INFO"; + } + }; + var RequestContentLengthMismatchError = class _RequestContentLengthMismatchError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _RequestContentLengthMismatchError); + this.name = "RequestContentLengthMismatchError"; + this.message = message || "Request body length does not match content-length header"; + this.code = "UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"; + } + }; + var ResponseContentLengthMismatchError = class _ResponseContentLengthMismatchError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _ResponseContentLengthMismatchError); + this.name = "ResponseContentLengthMismatchError"; + this.message = message || "Response body length does not match content-length header"; + this.code = "UND_ERR_RES_CONTENT_LENGTH_MISMATCH"; + } + }; + var ClientDestroyedError = class _ClientDestroyedError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _ClientDestroyedError); + this.name = "ClientDestroyedError"; + this.message = message || "The client is destroyed"; + this.code = "UND_ERR_DESTROYED"; + } + }; + var ClientClosedError = class _ClientClosedError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _ClientClosedError); + this.name = "ClientClosedError"; + this.message = message || "The client is closed"; + this.code = "UND_ERR_CLOSED"; + } + }; + var SocketError = class _SocketError extends UndiciError { + constructor(message, socket) { + super(message); + Error.captureStackTrace(this, _SocketError); + this.name = "SocketError"; + this.message = message || "Socket error"; + this.code = "UND_ERR_SOCKET"; + this.socket = socket; + } + }; + var NotSupportedError = class _NotSupportedError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _NotSupportedError); + this.name = "NotSupportedError"; + this.message = message || "Not supported error"; + this.code = "UND_ERR_NOT_SUPPORTED"; + } + }; + var BalancedPoolMissingUpstreamError = class extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, NotSupportedError); + this.name = "MissingUpstreamError"; + this.message = message || "No upstream has been added to the BalancedPool"; + this.code = "UND_ERR_BPL_MISSING_UPSTREAM"; + } + }; + var HTTPParserError = class _HTTPParserError extends Error { + constructor(message, code, data) { + super(message); + Error.captureStackTrace(this, _HTTPParserError); + this.name = "HTTPParserError"; + this.code = code ? `HPE_${code}` : void 0; + this.data = data ? data.toString() : void 0; + } + }; + var ResponseExceededMaxSizeError = class _ResponseExceededMaxSizeError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _ResponseExceededMaxSizeError); + this.name = "ResponseExceededMaxSizeError"; + this.message = message || "Response content exceeded max size"; + this.code = "UND_ERR_RES_EXCEEDED_MAX_SIZE"; + } + }; + module2.exports = { + HTTPParserError, + UndiciError, + HeadersTimeoutError, + HeadersOverflowError, + BodyTimeoutError, + RequestContentLengthMismatchError, + ConnectTimeoutError, + ResponseStatusCodeError, + InvalidArgumentError, + InvalidReturnValueError, + RequestAbortedError, + ClientDestroyedError, + ClientClosedError, + InformationalError, + SocketError, + NotSupportedError, + ResponseContentLengthMismatchError, + BalancedPoolMissingUpstreamError, + ResponseExceededMaxSizeError + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/util.js +var require_util = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/util.js"(exports2, module2) { + "use strict"; + var assert = require("assert"); + var { kDestroyed, kBodyUsed } = require_symbols(); + var { IncomingMessage } = require("http"); + var stream = require("stream"); + var net = require("net"); + var { InvalidArgumentError } = require_errors(); + var { Blob: Blob2 } = require("buffer"); + var nodeUtil = require("util"); + var { stringify } = require("querystring"); + var [nodeMajor, nodeMinor] = process.versions.node.split(".").map((v) => Number(v)); + function nop() { + } + function isStream(obj) { + return obj && typeof obj === "object" && typeof obj.pipe === "function" && typeof obj.on === "function"; + } + function isBlobLike(object) { + return Blob2 && object instanceof Blob2 || object && typeof object === "object" && (typeof object.stream === "function" || typeof object.arrayBuffer === "function") && /^(Blob|File)$/.test(object[Symbol.toStringTag]); + } + function buildURL(url, queryParams) { + if (url.includes("?") || url.includes("#")) { + throw new Error('Query params cannot be passed when url already contains "?" or "#".'); + } + const stringified = stringify(queryParams); + if (stringified) { + url += "?" + stringified; + } + return url; + } + function parseURL(url) { + if (typeof url === "string") { + url = new URL(url); + if (!/^https?:/.test(url.origin || url.protocol)) { + throw new InvalidArgumentError("Invalid URL protocol: the URL must start with `http:` or `https:`."); + } + return url; + } + if (!url || typeof url !== "object") { + throw new InvalidArgumentError("Invalid URL: The URL argument must be a non-null object."); + } + if (!/^https?:/.test(url.origin || url.protocol)) { + throw new InvalidArgumentError("Invalid URL protocol: the URL must start with `http:` or `https:`."); + } + if (!(url instanceof URL)) { + if (url.port != null && url.port !== "" && !Number.isFinite(parseInt(url.port))) { + throw new InvalidArgumentError("Invalid URL: port must be a valid integer or a string representation of an integer."); + } + if (url.path != null && typeof url.path !== "string") { + throw new InvalidArgumentError("Invalid URL path: the path must be a string or null/undefined."); + } + if (url.pathname != null && typeof url.pathname !== "string") { + throw new InvalidArgumentError("Invalid URL pathname: the pathname must be a string or null/undefined."); + } + if (url.hostname != null && typeof url.hostname !== "string") { + throw new InvalidArgumentError("Invalid URL hostname: the hostname must be a string or null/undefined."); + } + if (url.origin != null && typeof url.origin !== "string") { + throw new InvalidArgumentError("Invalid URL origin: the origin must be a string or null/undefined."); + } + const port = url.port != null ? url.port : url.protocol === "https:" ? 443 : 80; + let origin = url.origin != null ? url.origin : `${url.protocol}//${url.hostname}:${port}`; + let path = url.path != null ? url.path : `${url.pathname || ""}${url.search || ""}`; + if (origin.endsWith("/")) { + origin = origin.substring(0, origin.length - 1); + } + if (path && !path.startsWith("/")) { + path = `/${path}`; + } + url = new URL(origin + path); + } + return url; + } + function parseOrigin(url) { + url = parseURL(url); + if (url.pathname !== "/" || url.search || url.hash) { + throw new InvalidArgumentError("invalid url"); + } + return url; + } + function getHostname(host) { + if (host[0] === "[") { + const idx2 = host.indexOf("]"); + assert(idx2 !== -1); + return host.substr(1, idx2 - 1); + } + const idx = host.indexOf(":"); + if (idx === -1) + return host; + return host.substr(0, idx); + } + function getServerName(host) { + if (!host) { + return null; + } + assert.strictEqual(typeof host, "string"); + const servername = getHostname(host); + if (net.isIP(servername)) { + return ""; + } + return servername; + } + function deepClone(obj) { + return JSON.parse(JSON.stringify(obj)); + } + function isAsyncIterable(obj) { + return !!(obj != null && typeof obj[Symbol.asyncIterator] === "function"); + } + function isIterable(obj) { + return !!(obj != null && (typeof obj[Symbol.iterator] === "function" || typeof obj[Symbol.asyncIterator] === "function")); + } + function bodyLength(body) { + if (body == null) { + return 0; + } else if (isStream(body)) { + const state = body._readableState; + return state && state.objectMode === false && state.ended === true && Number.isFinite(state.length) ? state.length : null; + } else if (isBlobLike(body)) { + return body.size != null ? body.size : null; + } else if (isBuffer(body)) { + return body.byteLength; + } + return null; + } + function isDestroyed(stream2) { + return !stream2 || !!(stream2.destroyed || stream2[kDestroyed]); + } + function isReadableAborted(stream2) { + const state = stream2 && stream2._readableState; + return isDestroyed(stream2) && state && !state.endEmitted; + } + function destroy(stream2, err) { + if (!isStream(stream2) || isDestroyed(stream2)) { + return; + } + if (typeof stream2.destroy === "function") { + if (Object.getPrototypeOf(stream2).constructor === IncomingMessage) { + stream2.socket = null; + } + stream2.destroy(err); + } else if (err) { + process.nextTick((stream3, err2) => { + stream3.emit("error", err2); + }, stream2, err); + } + if (stream2.destroyed !== true) { + stream2[kDestroyed] = true; + } + } + var KEEPALIVE_TIMEOUT_EXPR = /timeout=(\d+)/; + function parseKeepAliveTimeout(val) { + const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR); + return m ? parseInt(m[1], 10) * 1e3 : null; + } + function parseHeaders(headers, obj = {}) { + if (!Array.isArray(headers)) + return headers; + for (let i = 0; i < headers.length; i += 2) { + const key = headers[i].toString().toLowerCase(); + let val = obj[key]; + if (!val) { + if (Array.isArray(headers[i + 1])) { + obj[key] = headers[i + 1]; + } else { + obj[key] = headers[i + 1].toString("utf8"); + } + } else { + if (!Array.isArray(val)) { + val = [val]; + obj[key] = val; + } + val.push(headers[i + 1].toString("utf8")); + } + } + if ("content-length" in obj && "content-disposition" in obj) { + obj["content-disposition"] = Buffer.from(obj["content-disposition"]).toString("latin1"); + } + return obj; + } + function parseRawHeaders(headers) { + const ret = []; + let hasContentLength = false; + let contentDispositionIdx = -1; + for (let n = 0; n < headers.length; n += 2) { + const key = headers[n + 0].toString(); + const val = headers[n + 1].toString("utf8"); + if (key.length === 14 && (key === "content-length" || key.toLowerCase() === "content-length")) { + ret.push(key, val); + hasContentLength = true; + } else if (key.length === 19 && (key === "content-disposition" || key.toLowerCase() === "content-disposition")) { + contentDispositionIdx = ret.push(key, val) - 1; + } else { + ret.push(key, val); + } + } + if (hasContentLength && contentDispositionIdx !== -1) { + ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString("latin1"); + } + return ret; + } + function isBuffer(buffer) { + return buffer instanceof Uint8Array || Buffer.isBuffer(buffer); + } + function validateHandler(handler, method, upgrade) { + if (!handler || typeof handler !== "object") { + throw new InvalidArgumentError("handler must be an object"); + } + if (typeof handler.onConnect !== "function") { + throw new InvalidArgumentError("invalid onConnect method"); + } + if (typeof handler.onError !== "function") { + throw new InvalidArgumentError("invalid onError method"); + } + if (typeof handler.onBodySent !== "function" && handler.onBodySent !== void 0) { + throw new InvalidArgumentError("invalid onBodySent method"); + } + if (upgrade || method === "CONNECT") { + if (typeof handler.onUpgrade !== "function") { + throw new InvalidArgumentError("invalid onUpgrade method"); + } + } else { + if (typeof handler.onHeaders !== "function") { + throw new InvalidArgumentError("invalid onHeaders method"); + } + if (typeof handler.onData !== "function") { + throw new InvalidArgumentError("invalid onData method"); + } + if (typeof handler.onComplete !== "function") { + throw new InvalidArgumentError("invalid onComplete method"); + } + } + } + function isDisturbed(body) { + return !!(body && (stream.isDisturbed ? stream.isDisturbed(body) || body[kBodyUsed] : body[kBodyUsed] || body.readableDidRead || body._readableState && body._readableState.dataEmitted || isReadableAborted(body))); + } + function isErrored(body) { + return !!(body && (stream.isErrored ? stream.isErrored(body) : /state: 'errored'/.test( + nodeUtil.inspect(body) + ))); + } + function isReadable(body) { + return !!(body && (stream.isReadable ? stream.isReadable(body) : /state: 'readable'/.test( + nodeUtil.inspect(body) + ))); + } + function getSocketInfo(socket) { + return { + localAddress: socket.localAddress, + localPort: socket.localPort, + remoteAddress: socket.remoteAddress, + remotePort: socket.remotePort, + remoteFamily: socket.remoteFamily, + timeout: socket.timeout, + bytesWritten: socket.bytesWritten, + bytesRead: socket.bytesRead + }; + } + async function* convertIterableToBuffer(iterable) { + for await (const chunk of iterable) { + yield Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk); + } + } + var ReadableStream; + function ReadableStreamFrom(iterable) { + if (!ReadableStream) { + ReadableStream = require("stream/web").ReadableStream; + } + if (ReadableStream.from) { + return ReadableStream.from(convertIterableToBuffer(iterable)); + } + let iterator; + return new ReadableStream( + { + async start() { + iterator = iterable[Symbol.asyncIterator](); + }, + async pull(controller) { + const { done, value } = await iterator.next(); + if (done) { + queueMicrotask(() => { + controller.close(); + }); + } else { + const buf = Buffer.isBuffer(value) ? value : Buffer.from(value); + controller.enqueue(new Uint8Array(buf)); + } + return controller.desiredSize > 0; + }, + async cancel(reason) { + await iterator.return(); + } + }, + 0 + ); + } + function isFormDataLike(object) { + return object && typeof object === "object" && typeof object.append === "function" && typeof object.delete === "function" && typeof object.get === "function" && typeof object.getAll === "function" && typeof object.has === "function" && typeof object.set === "function" && object[Symbol.toStringTag] === "FormData"; + } + function throwIfAborted(signal) { + if (!signal) { + return; + } + if (typeof signal.throwIfAborted === "function") { + signal.throwIfAborted(); + } else { + if (signal.aborted) { + const err = new Error("The operation was aborted"); + err.name = "AbortError"; + throw err; + } + } + } + var events; + function addAbortListener(signal, listener) { + if (typeof Symbol.dispose === "symbol") { + if (!events) { + events = require("events"); + } + if (typeof events.addAbortListener === "function" && "aborted" in signal) { + return events.addAbortListener(signal, listener); + } + } + if ("addEventListener" in signal) { + signal.addEventListener("abort", listener, { once: true }); + return () => signal.removeEventListener("abort", listener); + } + signal.addListener("abort", listener); + return () => signal.removeListener("abort", listener); + } + var hasToWellFormed = !!String.prototype.toWellFormed; + function toUSVString(val) { + if (hasToWellFormed) { + return `${val}`.toWellFormed(); + } else if (nodeUtil.toUSVString) { + return nodeUtil.toUSVString(val); + } + return `${val}`; + } + var kEnumerableProperty = /* @__PURE__ */ Object.create(null); + kEnumerableProperty.enumerable = true; + module2.exports = { + kEnumerableProperty, + nop, + isDisturbed, + isErrored, + isReadable, + toUSVString, + isReadableAborted, + isBlobLike, + parseOrigin, + parseURL, + getServerName, + isStream, + isIterable, + isAsyncIterable, + isDestroyed, + parseRawHeaders, + parseHeaders, + parseKeepAliveTimeout, + destroy, + bodyLength, + deepClone, + ReadableStreamFrom, + isBuffer, + validateHandler, + getSocketInfo, + isFormDataLike, + buildURL, + throwIfAborted, + addAbortListener, + nodeMajor, + nodeMinor, + nodeHasAutoSelectFamily: nodeMajor > 18 || nodeMajor === 18 && nodeMinor >= 13 + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/timers.js +var require_timers = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/timers.js"(exports2, module2) { + "use strict"; + var fastNow = Date.now(); + var fastNowTimeout; + var fastTimers = []; + function onTimeout() { + fastNow = Date.now(); + let len = fastTimers.length; + let idx = 0; + while (idx < len) { + const timer = fastTimers[idx]; + if (timer.state === 0) { + timer.state = fastNow + timer.delay; + } else if (timer.state > 0 && fastNow >= timer.state) { + timer.state = -1; + timer.callback(timer.opaque); + } + if (timer.state === -1) { + timer.state = -2; + if (idx !== len - 1) { + fastTimers[idx] = fastTimers.pop(); + } else { + fastTimers.pop(); + } + len -= 1; + } else { + idx += 1; + } + } + if (fastTimers.length > 0) { + refreshTimeout(); + } + } + function refreshTimeout() { + if (fastNowTimeout && fastNowTimeout.refresh) { + fastNowTimeout.refresh(); + } else { + clearTimeout(fastNowTimeout); + fastNowTimeout = setTimeout(onTimeout, 1e3); + if (fastNowTimeout.unref) { + fastNowTimeout.unref(); + } + } + } + var Timeout = class { + constructor(callback, delay, opaque) { + this.callback = callback; + this.delay = delay; + this.opaque = opaque; + this.state = -2; + this.refresh(); + } + refresh() { + if (this.state === -2) { + fastTimers.push(this); + if (!fastNowTimeout || fastTimers.length === 1) { + refreshTimeout(); + } + } + this.state = 0; + } + clear() { + this.state = -1; + } + }; + module2.exports = { + setTimeout(callback, delay, opaque) { + return delay < 1e3 ? setTimeout(callback, delay, opaque) : new Timeout(callback, delay, opaque); + }, + clearTimeout(timeout) { + if (timeout instanceof Timeout) { + timeout.clear(); + } else { + clearTimeout(timeout); + } + } + }; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/deps/streamsearch/sbmh.js +var require_sbmh = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/deps/streamsearch/sbmh.js"(exports2, module2) { + "use strict"; + var EventEmitter = require("events").EventEmitter; + var inherits = require("util").inherits; + function SBMH(needle) { + if (typeof needle === "string") { + needle = Buffer.from(needle); + } + if (!Buffer.isBuffer(needle)) { + throw new TypeError("The needle has to be a String or a Buffer."); + } + const needleLength = needle.length; + if (needleLength === 0) { + throw new Error("The needle cannot be an empty String/Buffer."); + } + if (needleLength > 256) { + throw new Error("The needle cannot have a length bigger than 256."); + } + this.maxMatches = Infinity; + this.matches = 0; + this._occ = new Array(256).fill(needleLength); + this._lookbehind_size = 0; + this._needle = needle; + this._bufpos = 0; + this._lookbehind = Buffer.alloc(needleLength); + for (var i = 0; i < needleLength - 1; ++i) { + this._occ[needle[i]] = needleLength - 1 - i; + } + } + inherits(SBMH, EventEmitter); + SBMH.prototype.reset = function() { + this._lookbehind_size = 0; + this.matches = 0; + this._bufpos = 0; + }; + SBMH.prototype.push = function(chunk, pos) { + if (!Buffer.isBuffer(chunk)) { + chunk = Buffer.from(chunk, "binary"); + } + const chlen = chunk.length; + this._bufpos = pos || 0; + let r; + while (r !== chlen && this.matches < this.maxMatches) { + r = this._sbmh_feed(chunk); + } + return r; + }; + SBMH.prototype._sbmh_feed = function(data) { + const len = data.length; + const needle = this._needle; + const needleLength = needle.length; + const lastNeedleChar = needle[needleLength - 1]; + let pos = -this._lookbehind_size; + let ch; + if (pos < 0) { + while (pos < 0 && pos <= len - needleLength) { + ch = this._sbmh_lookup_char(data, pos + needleLength - 1); + if (ch === lastNeedleChar && this._sbmh_memcmp(data, pos, needleLength - 1)) { + this._lookbehind_size = 0; + ++this.matches; + this.emit("info", true); + return this._bufpos = pos + needleLength; + } + pos += this._occ[ch]; + } + if (pos < 0) { + while (pos < 0 && !this._sbmh_memcmp(data, pos, len - pos)) { + ++pos; + } + } + if (pos >= 0) { + this.emit("info", false, this._lookbehind, 0, this._lookbehind_size); + this._lookbehind_size = 0; + } else { + const bytesToCutOff = this._lookbehind_size + pos; + if (bytesToCutOff > 0) { + this.emit("info", false, this._lookbehind, 0, bytesToCutOff); + } + this._lookbehind.copy( + this._lookbehind, + 0, + bytesToCutOff, + this._lookbehind_size - bytesToCutOff + ); + this._lookbehind_size -= bytesToCutOff; + data.copy(this._lookbehind, this._lookbehind_size); + this._lookbehind_size += len; + this._bufpos = len; + return len; + } + } + pos += (pos >= 0) * this._bufpos; + if (data.indexOf(needle, pos) !== -1) { + pos = data.indexOf(needle, pos); + ++this.matches; + if (pos > 0) { + this.emit("info", true, data, this._bufpos, pos); + } else { + this.emit("info", true); + } + return this._bufpos = pos + needleLength; + } else { + pos = len - needleLength; + } + while (pos < len && (data[pos] !== needle[0] || Buffer.compare( + data.subarray(pos, pos + len - pos), + needle.subarray(0, len - pos) + ) !== 0)) { + ++pos; + } + if (pos < len) { + data.copy(this._lookbehind, 0, pos, pos + (len - pos)); + this._lookbehind_size = len - pos; + } + if (pos > 0) { + this.emit("info", false, data, this._bufpos, pos < len ? pos : len); + } + this._bufpos = len; + return len; + }; + SBMH.prototype._sbmh_lookup_char = function(data, pos) { + return pos < 0 ? this._lookbehind[this._lookbehind_size + pos] : data[pos]; + }; + SBMH.prototype._sbmh_memcmp = function(data, pos, len) { + for (var i = 0; i < len; ++i) { + if (this._sbmh_lookup_char(data, pos + i) !== this._needle[i]) { + return false; + } + } + return true; + }; + module2.exports = SBMH; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/deps/dicer/lib/PartStream.js +var require_PartStream = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/deps/dicer/lib/PartStream.js"(exports2, module2) { + "use strict"; + var inherits = require("util").inherits; + var ReadableStream = require("stream").Readable; + function PartStream(opts) { + ReadableStream.call(this, opts); + } + inherits(PartStream, ReadableStream); + PartStream.prototype._read = function(n) { + }; + module2.exports = PartStream; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/getLimit.js +var require_getLimit = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/getLimit.js"(exports2, module2) { + "use strict"; + module2.exports = function getLimit(limits, name, defaultLimit) { + if (!limits || limits[name] === void 0 || limits[name] === null) { + return defaultLimit; + } + if (typeof limits[name] !== "number" || isNaN(limits[name])) { + throw new TypeError("Limit " + name + " is not a valid number"); + } + return limits[name]; + }; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/deps/dicer/lib/HeaderParser.js +var require_HeaderParser = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/deps/dicer/lib/HeaderParser.js"(exports2, module2) { + "use strict"; + var EventEmitter = require("events").EventEmitter; + var inherits = require("util").inherits; + var getLimit = require_getLimit(); + var StreamSearch = require_sbmh(); + var B_DCRLF = Buffer.from("\r\n\r\n"); + var RE_CRLF = /\r\n/g; + var RE_HDR = /^([^:]+):[ \t]?([\x00-\xFF]+)?$/; + function HeaderParser(cfg) { + EventEmitter.call(this); + cfg = cfg || {}; + const self = this; + this.nread = 0; + this.maxed = false; + this.npairs = 0; + this.maxHeaderPairs = getLimit(cfg, "maxHeaderPairs", 2e3); + this.maxHeaderSize = getLimit(cfg, "maxHeaderSize", 80 * 1024); + this.buffer = ""; + this.header = {}; + this.finished = false; + this.ss = new StreamSearch(B_DCRLF); + this.ss.on("info", function(isMatch, data, start, end) { + if (data && !self.maxed) { + if (self.nread + end - start >= self.maxHeaderSize) { + end = self.maxHeaderSize - self.nread + start; + self.nread = self.maxHeaderSize; + self.maxed = true; + } else { + self.nread += end - start; + } + self.buffer += data.toString("binary", start, end); + } + if (isMatch) { + self._finish(); + } + }); + } + inherits(HeaderParser, EventEmitter); + HeaderParser.prototype.push = function(data) { + const r = this.ss.push(data); + if (this.finished) { + return r; + } + }; + HeaderParser.prototype.reset = function() { + this.finished = false; + this.buffer = ""; + this.header = {}; + this.ss.reset(); + }; + HeaderParser.prototype._finish = function() { + if (this.buffer) { + this._parseHeader(); + } + this.ss.matches = this.ss.maxMatches; + const header = this.header; + this.header = {}; + this.buffer = ""; + this.finished = true; + this.nread = this.npairs = 0; + this.maxed = false; + this.emit("header", header); + }; + HeaderParser.prototype._parseHeader = function() { + if (this.npairs === this.maxHeaderPairs) { + return; + } + const lines = this.buffer.split(RE_CRLF); + const len = lines.length; + let m, h; + for (var i = 0; i < len; ++i) { + if (lines[i].length === 0) { + continue; + } + if (lines[i][0] === " " || lines[i][0] === " ") { + if (h) { + this.header[h][this.header[h].length - 1] += lines[i]; + continue; + } + } + const posColon = lines[i].indexOf(":"); + if (posColon === -1 || posColon === 0) { + return; + } + m = RE_HDR.exec(lines[i]); + h = m[1].toLowerCase(); + this.header[h] = this.header[h] || []; + this.header[h].push(m[2] || ""); + if (++this.npairs === this.maxHeaderPairs) { + break; + } + } + }; + module2.exports = HeaderParser; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/deps/dicer/lib/Dicer.js +var require_Dicer = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/deps/dicer/lib/Dicer.js"(exports2, module2) { + "use strict"; + var WritableStream = require("stream").Writable; + var inherits = require("util").inherits; + var StreamSearch = require_sbmh(); + var PartStream = require_PartStream(); + var HeaderParser = require_HeaderParser(); + var DASH = 45; + var B_ONEDASH = Buffer.from("-"); + var B_CRLF = Buffer.from("\r\n"); + var EMPTY_FN = function() { + }; + function Dicer(cfg) { + if (!(this instanceof Dicer)) { + return new Dicer(cfg); + } + WritableStream.call(this, cfg); + if (!cfg || !cfg.headerFirst && typeof cfg.boundary !== "string") { + throw new TypeError("Boundary required"); + } + if (typeof cfg.boundary === "string") { + this.setBoundary(cfg.boundary); + } else { + this._bparser = void 0; + } + this._headerFirst = cfg.headerFirst; + this._dashes = 0; + this._parts = 0; + this._finished = false; + this._realFinish = false; + this._isPreamble = true; + this._justMatched = false; + this._firstWrite = true; + this._inHeader = true; + this._part = void 0; + this._cb = void 0; + this._ignoreData = false; + this._partOpts = { highWaterMark: cfg.partHwm }; + this._pause = false; + const self = this; + this._hparser = new HeaderParser(cfg); + this._hparser.on("header", function(header) { + self._inHeader = false; + self._part.emit("header", header); + }); + } + inherits(Dicer, WritableStream); + Dicer.prototype.emit = function(ev) { + if (ev === "finish" && !this._realFinish) { + if (!this._finished) { + const self = this; + process.nextTick(function() { + self.emit("error", new Error("Unexpected end of multipart data")); + if (self._part && !self._ignoreData) { + const type = self._isPreamble ? "Preamble" : "Part"; + self._part.emit("error", new Error(type + " terminated early due to unexpected end of multipart data")); + self._part.push(null); + process.nextTick(function() { + self._realFinish = true; + self.emit("finish"); + self._realFinish = false; + }); + return; + } + self._realFinish = true; + self.emit("finish"); + self._realFinish = false; + }); + } + } else { + WritableStream.prototype.emit.apply(this, arguments); + } + }; + Dicer.prototype._write = function(data, encoding, cb) { + if (!this._hparser && !this._bparser) { + return cb(); + } + if (this._headerFirst && this._isPreamble) { + if (!this._part) { + this._part = new PartStream(this._partOpts); + if (this._events.preamble) { + this.emit("preamble", this._part); + } else { + this._ignore(); + } + } + const r = this._hparser.push(data); + if (!this._inHeader && r !== void 0 && r < data.length) { + data = data.slice(r); + } else { + return cb(); + } + } + if (this._firstWrite) { + this._bparser.push(B_CRLF); + this._firstWrite = false; + } + this._bparser.push(data); + if (this._pause) { + this._cb = cb; + } else { + cb(); + } + }; + Dicer.prototype.reset = function() { + this._part = void 0; + this._bparser = void 0; + this._hparser = void 0; + }; + Dicer.prototype.setBoundary = function(boundary) { + const self = this; + this._bparser = new StreamSearch("\r\n--" + boundary); + this._bparser.on("info", function(isMatch, data, start, end) { + self._oninfo(isMatch, data, start, end); + }); + }; + Dicer.prototype._ignore = function() { + if (this._part && !this._ignoreData) { + this._ignoreData = true; + this._part.on("error", EMPTY_FN); + this._part.resume(); + } + }; + Dicer.prototype._oninfo = function(isMatch, data, start, end) { + let buf; + const self = this; + let i = 0; + let r; + let shouldWriteMore = true; + if (!this._part && this._justMatched && data) { + while (this._dashes < 2 && start + i < end) { + if (data[start + i] === DASH) { + ++i; + ++this._dashes; + } else { + if (this._dashes) { + buf = B_ONEDASH; + } + this._dashes = 0; + break; + } + } + if (this._dashes === 2) { + if (start + i < end && this._events.trailer) { + this.emit("trailer", data.slice(start + i, end)); + } + this.reset(); + this._finished = true; + if (self._parts === 0) { + self._realFinish = true; + self.emit("finish"); + self._realFinish = false; + } + } + if (this._dashes) { + return; + } + } + if (this._justMatched) { + this._justMatched = false; + } + if (!this._part) { + this._part = new PartStream(this._partOpts); + this._part._read = function(n) { + self._unpause(); + }; + if (this._isPreamble && this._events.preamble) { + this.emit("preamble", this._part); + } else if (this._isPreamble !== true && this._events.part) { + this.emit("part", this._part); + } else { + this._ignore(); + } + if (!this._isPreamble) { + this._inHeader = true; + } + } + if (data && start < end && !this._ignoreData) { + if (this._isPreamble || !this._inHeader) { + if (buf) { + shouldWriteMore = this._part.push(buf); + } + shouldWriteMore = this._part.push(data.slice(start, end)); + if (!shouldWriteMore) { + this._pause = true; + } + } else if (!this._isPreamble && this._inHeader) { + if (buf) { + this._hparser.push(buf); + } + r = this._hparser.push(data.slice(start, end)); + if (!this._inHeader && r !== void 0 && r < end) { + this._oninfo(false, data, start + r, end); + } + } + } + if (isMatch) { + this._hparser.reset(); + if (this._isPreamble) { + this._isPreamble = false; + } else { + if (start !== end) { + ++this._parts; + this._part.on("end", function() { + if (--self._parts === 0) { + if (self._finished) { + self._realFinish = true; + self.emit("finish"); + self._realFinish = false; + } else { + self._unpause(); + } + } + }); + } + } + this._part.push(null); + this._part = void 0; + this._ignoreData = false; + this._justMatched = true; + this._dashes = 0; + } + }; + Dicer.prototype._unpause = function() { + if (!this._pause) { + return; + } + this._pause = false; + if (this._cb) { + const cb = this._cb; + this._cb = void 0; + cb(); + } + }; + module2.exports = Dicer; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/decodeText.js +var require_decodeText = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/decodeText.js"(exports2, module2) { + "use strict"; + var utf8Decoder = new TextDecoder("utf-8"); + var textDecoders = /* @__PURE__ */ new Map([ + ["utf-8", utf8Decoder], + ["utf8", utf8Decoder] + ]); + function decodeText(text, textEncoding, destEncoding) { + if (text) { + if (textDecoders.has(destEncoding)) { + try { + return textDecoders.get(destEncoding).decode(Buffer.from(text, textEncoding)); + } catch (e) { + } + } else { + try { + textDecoders.set(destEncoding, new TextDecoder(destEncoding)); + return textDecoders.get(destEncoding).decode(Buffer.from(text, textEncoding)); + } catch (e) { + } + } + } + return text; + } + module2.exports = decodeText; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/parseParams.js +var require_parseParams = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/parseParams.js"(exports2, module2) { + "use strict"; + var decodeText = require_decodeText(); + var RE_ENCODED = /%([a-fA-F0-9]{2})/g; + function encodedReplacer(match, byte) { + return String.fromCharCode(parseInt(byte, 16)); + } + function parseParams(str) { + const res = []; + let state = "key"; + let charset = ""; + let inquote = false; + let escaping = false; + let p = 0; + let tmp = ""; + for (var i = 0, len = str.length; i < len; ++i) { + const char = str[i]; + if (char === "\\" && inquote) { + if (escaping) { + escaping = false; + } else { + escaping = true; + continue; + } + } else if (char === '"') { + if (!escaping) { + if (inquote) { + inquote = false; + state = "key"; + } else { + inquote = true; + } + continue; + } else { + escaping = false; + } + } else { + if (escaping && inquote) { + tmp += "\\"; + } + escaping = false; + if ((state === "charset" || state === "lang") && char === "'") { + if (state === "charset") { + state = "lang"; + charset = tmp.substring(1); + } else { + state = "value"; + } + tmp = ""; + continue; + } else if (state === "key" && (char === "*" || char === "=") && res.length) { + if (char === "*") { + state = "charset"; + } else { + state = "value"; + } + res[p] = [tmp, void 0]; + tmp = ""; + continue; + } else if (!inquote && char === ";") { + state = "key"; + if (charset) { + if (tmp.length) { + tmp = decodeText( + tmp.replace(RE_ENCODED, encodedReplacer), + "binary", + charset + ); + } + charset = ""; + } else if (tmp.length) { + tmp = decodeText(tmp, "binary", "utf8"); + } + if (res[p] === void 0) { + res[p] = tmp; + } else { + res[p][1] = tmp; + } + tmp = ""; + ++p; + continue; + } else if (!inquote && (char === " " || char === " ")) { + continue; + } + } + tmp += char; + } + if (charset && tmp.length) { + tmp = decodeText( + tmp.replace(RE_ENCODED, encodedReplacer), + "binary", + charset + ); + } else if (tmp) { + tmp = decodeText(tmp, "binary", "utf8"); + } + if (res[p] === void 0) { + if (tmp) { + res[p] = tmp; + } + } else { + res[p][1] = tmp; + } + return res; + } + module2.exports = parseParams; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/basename.js +var require_basename = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/basename.js"(exports2, module2) { + "use strict"; + module2.exports = function basename(path) { + if (typeof path !== "string") { + return ""; + } + for (var i = path.length - 1; i >= 0; --i) { + switch (path.charCodeAt(i)) { + case 47: + case 92: + path = path.slice(i + 1); + return path === ".." || path === "." ? "" : path; + } + } + return path === ".." || path === "." ? "" : path; + }; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/types/multipart.js +var require_multipart = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/types/multipart.js"(exports2, module2) { + "use strict"; + var { Readable } = require("stream"); + var { inherits } = require("util"); + var Dicer = require_Dicer(); + var parseParams = require_parseParams(); + var decodeText = require_decodeText(); + var basename = require_basename(); + var getLimit = require_getLimit(); + var RE_BOUNDARY = /^boundary$/i; + var RE_FIELD = /^form-data$/i; + var RE_CHARSET = /^charset$/i; + var RE_FILENAME = /^filename$/i; + var RE_NAME = /^name$/i; + Multipart.detect = /^multipart\/form-data/i; + function Multipart(boy, cfg) { + let i; + let len; + const self = this; + let boundary; + const limits = cfg.limits; + const isPartAFile = cfg.isPartAFile || ((fieldName, contentType, fileName) => contentType === "application/octet-stream" || fileName !== void 0); + const parsedConType = cfg.parsedConType || []; + const defCharset = cfg.defCharset || "utf8"; + const preservePath = cfg.preservePath; + const fileOpts = { highWaterMark: cfg.fileHwm }; + for (i = 0, len = parsedConType.length; i < len; ++i) { + if (Array.isArray(parsedConType[i]) && RE_BOUNDARY.test(parsedConType[i][0])) { + boundary = parsedConType[i][1]; + break; + } + } + function checkFinished() { + if (nends === 0 && finished && !boy._done) { + finished = false; + self.end(); + } + } + if (typeof boundary !== "string") { + throw new Error("Multipart: Boundary not found"); + } + const fieldSizeLimit = getLimit(limits, "fieldSize", 1 * 1024 * 1024); + const fileSizeLimit = getLimit(limits, "fileSize", Infinity); + const filesLimit = getLimit(limits, "files", Infinity); + const fieldsLimit = getLimit(limits, "fields", Infinity); + const partsLimit = getLimit(limits, "parts", Infinity); + const headerPairsLimit = getLimit(limits, "headerPairs", 2e3); + const headerSizeLimit = getLimit(limits, "headerSize", 80 * 1024); + let nfiles = 0; + let nfields = 0; + let nends = 0; + let curFile; + let curField; + let finished = false; + this._needDrain = false; + this._pause = false; + this._cb = void 0; + this._nparts = 0; + this._boy = boy; + const parserCfg = { + boundary, + maxHeaderPairs: headerPairsLimit, + maxHeaderSize: headerSizeLimit, + partHwm: fileOpts.highWaterMark, + highWaterMark: cfg.highWaterMark + }; + this.parser = new Dicer(parserCfg); + this.parser.on("drain", function() { + self._needDrain = false; + if (self._cb && !self._pause) { + const cb = self._cb; + self._cb = void 0; + cb(); + } + }).on("part", function onPart(part) { + if (++self._nparts > partsLimit) { + self.parser.removeListener("part", onPart); + self.parser.on("part", skipPart); + boy.hitPartsLimit = true; + boy.emit("partsLimit"); + return skipPart(part); + } + if (curField) { + const field = curField; + field.emit("end"); + field.removeAllListeners("end"); + } + part.on("header", function(header) { + let contype; + let fieldname; + let parsed; + let charset; + let encoding; + let filename; + let nsize = 0; + if (header["content-type"]) { + parsed = parseParams(header["content-type"][0]); + if (parsed[0]) { + contype = parsed[0].toLowerCase(); + for (i = 0, len = parsed.length; i < len; ++i) { + if (RE_CHARSET.test(parsed[i][0])) { + charset = parsed[i][1].toLowerCase(); + break; + } + } + } + } + if (contype === void 0) { + contype = "text/plain"; + } + if (charset === void 0) { + charset = defCharset; + } + if (header["content-disposition"]) { + parsed = parseParams(header["content-disposition"][0]); + if (!RE_FIELD.test(parsed[0])) { + return skipPart(part); + } + for (i = 0, len = parsed.length; i < len; ++i) { + if (RE_NAME.test(parsed[i][0])) { + fieldname = parsed[i][1]; + } else if (RE_FILENAME.test(parsed[i][0])) { + filename = parsed[i][1]; + if (!preservePath) { + filename = basename(filename); + } + } + } + } else { + return skipPart(part); + } + if (header["content-transfer-encoding"]) { + encoding = header["content-transfer-encoding"][0].toLowerCase(); + } else { + encoding = "7bit"; + } + let onData, onEnd; + if (isPartAFile(fieldname, contype, filename)) { + if (nfiles === filesLimit) { + if (!boy.hitFilesLimit) { + boy.hitFilesLimit = true; + boy.emit("filesLimit"); + } + return skipPart(part); + } + ++nfiles; + if (!boy._events.file) { + self.parser._ignore(); + return; + } + ++nends; + const file = new FileStream(fileOpts); + curFile = file; + file.on("end", function() { + --nends; + self._pause = false; + checkFinished(); + if (self._cb && !self._needDrain) { + const cb = self._cb; + self._cb = void 0; + cb(); + } + }); + file._read = function(n) { + if (!self._pause) { + return; + } + self._pause = false; + if (self._cb && !self._needDrain) { + const cb = self._cb; + self._cb = void 0; + cb(); + } + }; + boy.emit("file", fieldname, file, filename, encoding, contype); + onData = function(data) { + if ((nsize += data.length) > fileSizeLimit) { + const extralen = fileSizeLimit - nsize + data.length; + if (extralen > 0) { + file.push(data.slice(0, extralen)); + } + file.truncated = true; + file.bytesRead = fileSizeLimit; + part.removeAllListeners("data"); + file.emit("limit"); + return; + } else if (!file.push(data)) { + self._pause = true; + } + file.bytesRead = nsize; + }; + onEnd = function() { + curFile = void 0; + file.push(null); + }; + } else { + if (nfields === fieldsLimit) { + if (!boy.hitFieldsLimit) { + boy.hitFieldsLimit = true; + boy.emit("fieldsLimit"); + } + return skipPart(part); + } + ++nfields; + ++nends; + let buffer = ""; + let truncated = false; + curField = part; + onData = function(data) { + if ((nsize += data.length) > fieldSizeLimit) { + const extralen = fieldSizeLimit - (nsize - data.length); + buffer += data.toString("binary", 0, extralen); + truncated = true; + part.removeAllListeners("data"); + } else { + buffer += data.toString("binary"); + } + }; + onEnd = function() { + curField = void 0; + if (buffer.length) { + buffer = decodeText(buffer, "binary", charset); + } + boy.emit("field", fieldname, buffer, false, truncated, encoding, contype); + --nends; + checkFinished(); + }; + } + part._readableState.sync = false; + part.on("data", onData); + part.on("end", onEnd); + }).on("error", function(err) { + if (curFile) { + curFile.emit("error", err); + } + }); + }).on("error", function(err) { + boy.emit("error", err); + }).on("finish", function() { + finished = true; + checkFinished(); + }); + } + Multipart.prototype.write = function(chunk, cb) { + const r = this.parser.write(chunk); + if (r && !this._pause) { + cb(); + } else { + this._needDrain = !r; + this._cb = cb; + } + }; + Multipart.prototype.end = function() { + const self = this; + if (self.parser.writable) { + self.parser.end(); + } else if (!self._boy._done) { + process.nextTick(function() { + self._boy._done = true; + self._boy.emit("finish"); + }); + } + }; + function skipPart(part) { + part.resume(); + } + function FileStream(opts) { + Readable.call(this, opts); + this.bytesRead = 0; + this.truncated = false; + } + inherits(FileStream, Readable); + FileStream.prototype._read = function(n) { + }; + module2.exports = Multipart; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/Decoder.js +var require_Decoder = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/utils/Decoder.js"(exports2, module2) { + "use strict"; + var RE_PLUS = /\+/g; + var HEX = [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ]; + function Decoder() { + this.buffer = void 0; + } + Decoder.prototype.write = function(str) { + str = str.replace(RE_PLUS, " "); + let res = ""; + let i = 0; + let p = 0; + const len = str.length; + for (; i < len; ++i) { + if (this.buffer !== void 0) { + if (!HEX[str.charCodeAt(i)]) { + res += "%" + this.buffer; + this.buffer = void 0; + --i; + } else { + this.buffer += str[i]; + ++p; + if (this.buffer.length === 2) { + res += String.fromCharCode(parseInt(this.buffer, 16)); + this.buffer = void 0; + } + } + } else if (str[i] === "%") { + if (i > p) { + res += str.substring(p, i); + p = i; + } + this.buffer = ""; + ++p; + } + } + if (p < len && this.buffer === void 0) { + res += str.substring(p); + } + return res; + }; + Decoder.prototype.reset = function() { + this.buffer = void 0; + }; + module2.exports = Decoder; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/types/urlencoded.js +var require_urlencoded = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/types/urlencoded.js"(exports2, module2) { + "use strict"; + var Decoder = require_Decoder(); + var decodeText = require_decodeText(); + var getLimit = require_getLimit(); + var RE_CHARSET = /^charset$/i; + UrlEncoded.detect = /^application\/x-www-form-urlencoded/i; + function UrlEncoded(boy, cfg) { + const limits = cfg.limits; + const parsedConType = cfg.parsedConType; + this.boy = boy; + this.fieldSizeLimit = getLimit(limits, "fieldSize", 1 * 1024 * 1024); + this.fieldNameSizeLimit = getLimit(limits, "fieldNameSize", 100); + this.fieldsLimit = getLimit(limits, "fields", Infinity); + let charset; + for (var i = 0, len = parsedConType.length; i < len; ++i) { + if (Array.isArray(parsedConType[i]) && RE_CHARSET.test(parsedConType[i][0])) { + charset = parsedConType[i][1].toLowerCase(); + break; + } + } + if (charset === void 0) { + charset = cfg.defCharset || "utf8"; + } + this.decoder = new Decoder(); + this.charset = charset; + this._fields = 0; + this._state = "key"; + this._checkingBytes = true; + this._bytesKey = 0; + this._bytesVal = 0; + this._key = ""; + this._val = ""; + this._keyTrunc = false; + this._valTrunc = false; + this._hitLimit = false; + } + UrlEncoded.prototype.write = function(data, cb) { + if (this._fields === this.fieldsLimit) { + if (!this.boy.hitFieldsLimit) { + this.boy.hitFieldsLimit = true; + this.boy.emit("fieldsLimit"); + } + return cb(); + } + let idxeq; + let idxamp; + let i; + let p = 0; + const len = data.length; + while (p < len) { + if (this._state === "key") { + idxeq = idxamp = void 0; + for (i = p; i < len; ++i) { + if (!this._checkingBytes) { + ++p; + } + if (data[i] === 61) { + idxeq = i; + break; + } else if (data[i] === 38) { + idxamp = i; + break; + } + if (this._checkingBytes && this._bytesKey === this.fieldNameSizeLimit) { + this._hitLimit = true; + break; + } else if (this._checkingBytes) { + ++this._bytesKey; + } + } + if (idxeq !== void 0) { + if (idxeq > p) { + this._key += this.decoder.write(data.toString("binary", p, idxeq)); + } + this._state = "val"; + this._hitLimit = false; + this._checkingBytes = true; + this._val = ""; + this._bytesVal = 0; + this._valTrunc = false; + this.decoder.reset(); + p = idxeq + 1; + } else if (idxamp !== void 0) { + ++this._fields; + let key; + const keyTrunc = this._keyTrunc; + if (idxamp > p) { + key = this._key += this.decoder.write(data.toString("binary", p, idxamp)); + } else { + key = this._key; + } + this._hitLimit = false; + this._checkingBytes = true; + this._key = ""; + this._bytesKey = 0; + this._keyTrunc = false; + this.decoder.reset(); + if (key.length) { + this.boy.emit( + "field", + decodeText(key, "binary", this.charset), + "", + keyTrunc, + false + ); + } + p = idxamp + 1; + if (this._fields === this.fieldsLimit) { + return cb(); + } + } else if (this._hitLimit) { + if (i > p) { + this._key += this.decoder.write(data.toString("binary", p, i)); + } + p = i; + if ((this._bytesKey = this._key.length) === this.fieldNameSizeLimit) { + this._checkingBytes = false; + this._keyTrunc = true; + } + } else { + if (p < len) { + this._key += this.decoder.write(data.toString("binary", p)); + } + p = len; + } + } else { + idxamp = void 0; + for (i = p; i < len; ++i) { + if (!this._checkingBytes) { + ++p; + } + if (data[i] === 38) { + idxamp = i; + break; + } + if (this._checkingBytes && this._bytesVal === this.fieldSizeLimit) { + this._hitLimit = true; + break; + } else if (this._checkingBytes) { + ++this._bytesVal; + } + } + if (idxamp !== void 0) { + ++this._fields; + if (idxamp > p) { + this._val += this.decoder.write(data.toString("binary", p, idxamp)); + } + this.boy.emit( + "field", + decodeText(this._key, "binary", this.charset), + decodeText(this._val, "binary", this.charset), + this._keyTrunc, + this._valTrunc + ); + this._state = "key"; + this._hitLimit = false; + this._checkingBytes = true; + this._key = ""; + this._bytesKey = 0; + this._keyTrunc = false; + this.decoder.reset(); + p = idxamp + 1; + if (this._fields === this.fieldsLimit) { + return cb(); + } + } else if (this._hitLimit) { + if (i > p) { + this._val += this.decoder.write(data.toString("binary", p, i)); + } + p = i; + if (this._val === "" && this.fieldSizeLimit === 0 || (this._bytesVal = this._val.length) === this.fieldSizeLimit) { + this._checkingBytes = false; + this._valTrunc = true; + } + } else { + if (p < len) { + this._val += this.decoder.write(data.toString("binary", p)); + } + p = len; + } + } + } + cb(); + }; + UrlEncoded.prototype.end = function() { + if (this.boy._done) { + return; + } + if (this._state === "key" && this._key.length > 0) { + this.boy.emit( + "field", + decodeText(this._key, "binary", this.charset), + "", + this._keyTrunc, + false + ); + } else if (this._state === "val") { + this.boy.emit( + "field", + decodeText(this._key, "binary", this.charset), + decodeText(this._val, "binary", this.charset), + this._keyTrunc, + this._valTrunc + ); + } + this.boy._done = true; + this.boy.emit("finish"); + }; + module2.exports = UrlEncoded; + } +}); + +// node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/main.js +var require_main = __commonJS({ + "node_modules/.pnpm/@fastify+busboy@2.0.0/node_modules/@fastify/busboy/lib/main.js"(exports2, module2) { + "use strict"; + var WritableStream = require("stream").Writable; + var { inherits } = require("util"); + var Dicer = require_Dicer(); + var MultipartParser = require_multipart(); + var UrlencodedParser = require_urlencoded(); + var parseParams = require_parseParams(); + function Busboy(opts) { + if (!(this instanceof Busboy)) { + return new Busboy(opts); + } + if (typeof opts !== "object") { + throw new TypeError("Busboy expected an options-Object."); + } + if (typeof opts.headers !== "object") { + throw new TypeError("Busboy expected an options-Object with headers-attribute."); + } + if (typeof opts.headers["content-type"] !== "string") { + throw new TypeError("Missing Content-Type-header."); + } + const { + headers, + ...streamOptions + } = opts; + this.opts = { + autoDestroy: false, + ...streamOptions + }; + WritableStream.call(this, this.opts); + this._done = false; + this._parser = this.getParserByHeaders(headers); + this._finished = false; + } + inherits(Busboy, WritableStream); + Busboy.prototype.emit = function(ev) { + var _a; + if (ev === "finish") { + if (!this._done) { + (_a = this._parser) == null ? void 0 : _a.end(); + return; + } else if (this._finished) { + return; + } + this._finished = true; + } + WritableStream.prototype.emit.apply(this, arguments); + }; + Busboy.prototype.getParserByHeaders = function(headers) { + const parsed = parseParams(headers["content-type"]); + const cfg = { + defCharset: this.opts.defCharset, + fileHwm: this.opts.fileHwm, + headers, + highWaterMark: this.opts.highWaterMark, + isPartAFile: this.opts.isPartAFile, + limits: this.opts.limits, + parsedConType: parsed, + preservePath: this.opts.preservePath + }; + if (MultipartParser.detect.test(parsed[0])) { + return new MultipartParser(this, cfg); + } + if (UrlencodedParser.detect.test(parsed[0])) { + return new UrlencodedParser(this, cfg); + } + throw new Error("Unsupported Content-Type."); + }; + Busboy.prototype._write = function(chunk, encoding, cb) { + this._parser.write(chunk, cb); + }; + module2.exports = Busboy; + module2.exports.default = Busboy; + module2.exports.Busboy = Busboy; + module2.exports.Dicer = Dicer; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/constants.js +var require_constants = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/constants.js"(exports2, module2) { + "use strict"; + var { MessageChannel, receiveMessageOnPort } = require("worker_threads"); + var corsSafeListedMethods = ["GET", "HEAD", "POST"]; + var corsSafeListedMethodsSet = new Set(corsSafeListedMethods); + var nullBodyStatus = [101, 204, 205, 304]; + var redirectStatus = [301, 302, 303, 307, 308]; + var redirectStatusSet = new Set(redirectStatus); + var badPorts = [ + "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", + "5060", + "5061", + "6000", + "6566", + "6665", + "6666", + "6667", + "6668", + "6669", + "6697", + "10080" + ]; + var badPortsSet = new Set(badPorts); + var referrerPolicy = [ + "", + "no-referrer", + "no-referrer-when-downgrade", + "same-origin", + "origin", + "strict-origin", + "origin-when-cross-origin", + "strict-origin-when-cross-origin", + "unsafe-url" + ]; + var referrerPolicySet = new Set(referrerPolicy); + var requestRedirect = ["follow", "manual", "error"]; + var safeMethods = ["GET", "HEAD", "OPTIONS", "TRACE"]; + var safeMethodsSet = new Set(safeMethods); + var requestMode = ["navigate", "same-origin", "no-cors", "cors"]; + var requestCredentials = ["omit", "same-origin", "include"]; + var requestCache = [ + "default", + "no-store", + "reload", + "no-cache", + "force-cache", + "only-if-cached" + ]; + var requestBodyHeader = [ + "content-encoding", + "content-language", + "content-location", + "content-type", + // See https://github.com/nodejs/undici/issues/2021 + // 'Content-Length' is a forbidden header name, which is typically + // removed in the Headers implementation. However, undici doesn't + // filter out headers, so we add it here. + "content-length" + ]; + var requestDuplex = [ + "half" + ]; + var forbiddenMethods = ["CONNECT", "TRACE", "TRACK"]; + var forbiddenMethodsSet = new Set(forbiddenMethods); + var subresource = [ + "audio", + "audioworklet", + "font", + "image", + "manifest", + "paintworklet", + "script", + "style", + "track", + "video", + "xslt", + "" + ]; + var subresourceSet = new Set(subresource); + var DOMException2 = globalThis.DOMException ?? (() => { + try { + atob("~"); + } catch (err) { + return Object.getPrototypeOf(err).constructor; + } + })(); + var channel; + var structuredClone = globalThis.structuredClone ?? // https://github.com/nodejs/node/blob/b27ae24dcc4251bad726d9d84baf678d1f707fed/lib/internal/structured_clone.js + // structuredClone was added in v17.0.0, but fetch supports v16.8 + function structuredClone2(value, options = void 0) { + if (arguments.length === 0) { + throw new TypeError("missing argument"); + } + if (!channel) { + channel = new MessageChannel(); + } + channel.port1.unref(); + channel.port2.unref(); + channel.port1.postMessage(value, options == null ? void 0 : options.transfer); + return receiveMessageOnPort(channel.port2).message; + }; + module2.exports = { + DOMException: DOMException2, + structuredClone, + subresource, + forbiddenMethods, + requestBodyHeader, + referrerPolicy, + requestRedirect, + requestMode, + requestCredentials, + requestCache, + redirectStatus, + corsSafeListedMethods, + nullBodyStatus, + safeMethods, + badPorts, + requestDuplex, + subresourceSet, + badPortsSet, + redirectStatusSet, + corsSafeListedMethodsSet, + safeMethodsSet, + forbiddenMethodsSet, + referrerPolicySet + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/global.js +var require_global = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/global.js"(exports2, module2) { + "use strict"; + var globalOrigin = Symbol.for("undici.globalOrigin.1"); + function getGlobalOrigin() { + return globalThis[globalOrigin]; + } + function setGlobalOrigin(newOrigin) { + if (newOrigin === void 0) { + Object.defineProperty(globalThis, globalOrigin, { + value: void 0, + writable: true, + enumerable: false, + configurable: false + }); + return; + } + const parsedURL = new URL(newOrigin); + if (parsedURL.protocol !== "http:" && parsedURL.protocol !== "https:") { + throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`); + } + Object.defineProperty(globalThis, globalOrigin, { + value: parsedURL, + writable: true, + enumerable: false, + configurable: false + }); + } + module2.exports = { + getGlobalOrigin, + setGlobalOrigin + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/util.js +var require_util2 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/util.js"(exports2, module2) { + "use strict"; + var { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = require_constants(); + var { getGlobalOrigin } = require_global(); + var { performance: performance2 } = require("perf_hooks"); + var { isBlobLike, toUSVString, ReadableStreamFrom } = require_util(); + var assert = require("assert"); + var { isUint8Array } = require("util/types"); + var crypto; + try { + crypto = require("crypto"); + } catch { + } + function responseURL(response) { + const urlList = response.urlList; + const length = urlList.length; + return length === 0 ? null : urlList[length - 1].toString(); + } + function responseLocationURL(response, requestFragment) { + if (!redirectStatusSet.has(response.status)) { + return null; + } + let location = response.headersList.get("location"); + if (location !== null && isValidHeaderValue(location)) { + location = new URL(location, responseURL(response)); + } + if (location && !location.hash) { + location.hash = requestFragment; + } + return location; + } + function requestCurrentURL(request3) { + return request3.urlList[request3.urlList.length - 1]; + } + function requestBadPort(request3) { + const url = requestCurrentURL(request3); + if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) { + return "blocked"; + } + return "allowed"; + } + function isErrorLike(object) { + var _a, _b; + return object instanceof Error || (((_a = object == null ? void 0 : object.constructor) == null ? void 0 : _a.name) === "Error" || ((_b = object == null ? void 0 : object.constructor) == null ? void 0 : _b.name) === "DOMException"); + } + function isValidReasonPhrase(statusText) { + for (let i = 0; i < statusText.length; ++i) { + const c = statusText.charCodeAt(i); + if (!(c === 9 || // HTAB + c >= 32 && c <= 126 || // SP / VCHAR + c >= 128 && c <= 255)) { + return false; + } + } + return true; + } + function isTokenChar(c) { + return !(c >= 127 || c <= 32 || c === "(" || c === ")" || c === "<" || c === ">" || c === "@" || c === "," || c === ";" || c === ":" || c === "\\" || c === '"' || c === "/" || c === "[" || c === "]" || c === "?" || c === "=" || c === "{" || c === "}"); + } + function isValidHTTPToken(characters) { + if (!characters || typeof characters !== "string") { + return false; + } + for (let i = 0; i < characters.length; ++i) { + const c = characters.charCodeAt(i); + if (c > 127 || !isTokenChar(c)) { + return false; + } + } + return true; + } + function isValidHeaderName(potentialValue) { + if (potentialValue.length === 0) { + return false; + } + return isValidHTTPToken(potentialValue); + } + function isValidHeaderValue(potentialValue) { + if (potentialValue.startsWith(" ") || potentialValue.startsWith(" ") || potentialValue.endsWith(" ") || potentialValue.endsWith(" ")) { + return false; + } + if (potentialValue.includes("\0") || potentialValue.includes("\r") || potentialValue.includes("\n")) { + return false; + } + return true; + } + function setRequestReferrerPolicyOnRedirect(request3, actualResponse) { + const { headersList } = actualResponse; + const policyHeader = (headersList.get("referrer-policy") ?? "").split(","); + let policy = ""; + if (policyHeader.length > 0) { + for (let i = policyHeader.length; i !== 0; i--) { + const token = policyHeader[i - 1].trim(); + if (referrerPolicyTokens.has(token)) { + policy = token; + break; + } + } + } + if (policy !== "") { + request3.referrerPolicy = policy; + } + } + function crossOriginResourcePolicyCheck() { + return "allowed"; + } + function corsCheck() { + return "success"; + } + function TAOCheck() { + return "success"; + } + function appendFetchMetadata(httpRequest) { + let header = null; + header = httpRequest.mode; + httpRequest.headersList.set("sec-fetch-mode", header); + } + function appendRequestOriginHeader(request3) { + let serializedOrigin = request3.origin; + if (request3.responseTainting === "cors" || request3.mode === "websocket") { + if (serializedOrigin) { + request3.headersList.append("origin", serializedOrigin); + } + } else if (request3.method !== "GET" && request3.method !== "HEAD") { + switch (request3.referrerPolicy) { + case "no-referrer": + serializedOrigin = null; + break; + case "no-referrer-when-downgrade": + case "strict-origin": + case "strict-origin-when-cross-origin": + if (request3.origin && urlHasHttpsScheme(request3.origin) && !urlHasHttpsScheme(requestCurrentURL(request3))) { + serializedOrigin = null; + } + break; + case "same-origin": + if (!sameOrigin(request3, requestCurrentURL(request3))) { + serializedOrigin = null; + } + break; + default: + } + if (serializedOrigin) { + request3.headersList.append("origin", serializedOrigin); + } + } + } + function coarsenedSharedCurrentTime(crossOriginIsolatedCapability) { + return performance2.now(); + } + function createOpaqueTimingInfo(timingInfo) { + return { + startTime: timingInfo.startTime ?? 0, + redirectStartTime: 0, + redirectEndTime: 0, + postRedirectStartTime: timingInfo.startTime ?? 0, + finalServiceWorkerStartTime: 0, + finalNetworkResponseStartTime: 0, + finalNetworkRequestStartTime: 0, + endTime: 0, + encodedBodySize: 0, + decodedBodySize: 0, + finalConnectionTimingInfo: null + }; + } + function makePolicyContainer() { + return { + referrerPolicy: "strict-origin-when-cross-origin" + }; + } + function clonePolicyContainer(policyContainer) { + return { + referrerPolicy: policyContainer.referrerPolicy + }; + } + function determineRequestsReferrer(request3) { + const policy = request3.referrerPolicy; + assert(policy); + let referrerSource = null; + if (request3.referrer === "client") { + const globalOrigin = getGlobalOrigin(); + if (!globalOrigin || globalOrigin.origin === "null") { + return "no-referrer"; + } + referrerSource = new URL(globalOrigin); + } else if (request3.referrer instanceof URL) { + referrerSource = request3.referrer; + } + let referrerURL = stripURLForReferrer(referrerSource); + const referrerOrigin = stripURLForReferrer(referrerSource, true); + if (referrerURL.toString().length > 4096) { + referrerURL = referrerOrigin; + } + const areSameOrigin = sameOrigin(request3, referrerURL); + const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(request3.url); + switch (policy) { + case "origin": + return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true); + case "unsafe-url": + return referrerURL; + case "same-origin": + return areSameOrigin ? referrerOrigin : "no-referrer"; + case "origin-when-cross-origin": + return areSameOrigin ? referrerURL : referrerOrigin; + case "strict-origin-when-cross-origin": { + const currentURL = requestCurrentURL(request3); + if (sameOrigin(referrerURL, currentURL)) { + return referrerURL; + } + if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) { + return "no-referrer"; + } + return referrerOrigin; + } + case "strict-origin": + case "no-referrer-when-downgrade": + default: + return isNonPotentiallyTrustWorthy ? "no-referrer" : referrerOrigin; + } + } + function stripURLForReferrer(url, originOnly) { + assert(url instanceof URL); + if (url.protocol === "file:" || url.protocol === "about:" || url.protocol === "blank:") { + return "no-referrer"; + } + url.username = ""; + url.password = ""; + url.hash = ""; + if (originOnly) { + url.pathname = ""; + url.search = ""; + } + return url; + } + function isURLPotentiallyTrustworthy(url) { + if (!(url instanceof URL)) { + return false; + } + if (url.href === "about:blank" || url.href === "about:srcdoc") { + return true; + } + if (url.protocol === "data:") + return true; + if (url.protocol === "file:") + return true; + return isOriginPotentiallyTrustworthy(url.origin); + function isOriginPotentiallyTrustworthy(origin) { + if (origin == null || origin === "null") + return false; + const originAsURL = new URL(origin); + if (originAsURL.protocol === "https:" || originAsURL.protocol === "wss:") { + return true; + } + if (/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(originAsURL.hostname) || (originAsURL.hostname === "localhost" || originAsURL.hostname.includes("localhost.")) || originAsURL.hostname.endsWith(".localhost")) { + return true; + } + return false; + } + } + function bytesMatch(bytes, metadataList) { + if (crypto === void 0) { + return true; + } + const parsedMetadata = parseMetadata(metadataList); + if (parsedMetadata === "no metadata") { + return true; + } + if (parsedMetadata.length === 0) { + return true; + } + const list = parsedMetadata.sort((c, d) => d.algo.localeCompare(c.algo)); + const strongest = list[0].algo; + const metadata = list.filter((item) => item.algo === strongest); + for (const item of metadata) { + const algorithm = item.algo; + let expectedValue = item.hash; + if (expectedValue.endsWith("==")) { + expectedValue = expectedValue.slice(0, -2); + } + let actualValue = crypto.createHash(algorithm).update(bytes).digest("base64"); + if (actualValue.endsWith("==")) { + actualValue = actualValue.slice(0, -2); + } + if (actualValue === expectedValue) { + return true; + } + let actualBase64URL = crypto.createHash(algorithm).update(bytes).digest("base64url"); + if (actualBase64URL.endsWith("==")) { + actualBase64URL = actualBase64URL.slice(0, -2); + } + if (actualBase64URL === expectedValue) { + return true; + } + } + return false; + } + var parseHashWithOptions = /((?sha256|sha384|sha512)-(?[A-z0-9+/]{1}.*={0,2}))( +[\x21-\x7e]?)?/i; + function parseMetadata(metadata) { + const result = []; + let empty = true; + const supportedHashes = crypto.getHashes(); + for (const token of metadata.split(" ")) { + empty = false; + const parsedToken = parseHashWithOptions.exec(token); + if (parsedToken === null || parsedToken.groups === void 0) { + continue; + } + const algorithm = parsedToken.groups.algo; + if (supportedHashes.includes(algorithm.toLowerCase())) { + result.push(parsedToken.groups); + } + } + if (empty === true) { + return "no metadata"; + } + return result; + } + function tryUpgradeRequestToAPotentiallyTrustworthyURL(request3) { + } + function sameOrigin(A, B) { + if (A.origin === B.origin && A.origin === "null") { + return true; + } + if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) { + return true; + } + return false; + } + function createDeferredPromise() { + let res; + let rej; + const promise = new Promise((resolve, reject) => { + res = resolve; + rej = reject; + }); + return { promise, resolve: res, reject: rej }; + } + function isAborted(fetchParams) { + return fetchParams.controller.state === "aborted"; + } + function isCancelled(fetchParams) { + return fetchParams.controller.state === "aborted" || fetchParams.controller.state === "terminated"; + } + function normalizeMethod(method) { + return /^(DELETE|GET|HEAD|OPTIONS|POST|PUT)$/i.test(method) ? method.toUpperCase() : method; + } + function serializeJavascriptValueToJSONString(value) { + const result = JSON.stringify(value); + if (result === void 0) { + throw new TypeError("Value is not JSON serializable"); + } + assert(typeof result === "string"); + return result; + } + var esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())); + function makeIterator(iterator, name, kind) { + const object = { + index: 0, + kind, + target: iterator + }; + const i = { + next() { + if (Object.getPrototypeOf(this) !== i) { + throw new TypeError( + `'next' called on an object that does not implement interface ${name} Iterator.` + ); + } + const { index, kind: kind2, target } = object; + const values = target(); + const len = values.length; + if (index >= len) { + return { value: void 0, done: true }; + } + const pair = values[index]; + object.index = index + 1; + return iteratorResult(pair, kind2); + }, + // The class string of an iterator prototype object for a given interface is the + // result of concatenating the identifier of the interface and the string " Iterator". + [Symbol.toStringTag]: `${name} Iterator` + }; + Object.setPrototypeOf(i, esIteratorPrototype); + return Object.setPrototypeOf({}, i); + } + function iteratorResult(pair, kind) { + let result; + switch (kind) { + case "key": { + result = pair[0]; + break; + } + case "value": { + result = pair[1]; + break; + } + case "key+value": { + result = pair; + break; + } + } + return { value: result, done: false }; + } + async function fullyReadBody(body, processBody, processBodyError) { + const successSteps = processBody; + const errorSteps = processBodyError; + let reader; + try { + reader = body.stream.getReader(); + } catch (e) { + errorSteps(e); + return; + } + try { + const result = await readAllBytes(reader); + successSteps(result); + } catch (e) { + errorSteps(e); + } + } + var ReadableStream = globalThis.ReadableStream; + function isReadableStreamLike(stream) { + if (!ReadableStream) { + ReadableStream = require("stream/web").ReadableStream; + } + return stream instanceof ReadableStream || stream[Symbol.toStringTag] === "ReadableStream" && typeof stream.tee === "function"; + } + var MAXIMUM_ARGUMENT_LENGTH = 65535; + function isomorphicDecode(input) { + if (input.length < MAXIMUM_ARGUMENT_LENGTH) { + return String.fromCharCode(...input); + } + return input.reduce((previous, current) => previous + String.fromCharCode(current), ""); + } + function readableStreamClose(controller) { + try { + controller.close(); + } catch (err) { + if (!err.message.includes("Controller is already closed")) { + throw err; + } + } + } + function isomorphicEncode(input) { + for (let i = 0; i < input.length; i++) { + assert(input.charCodeAt(i) <= 255); + } + return input; + } + async function readAllBytes(reader) { + const bytes = []; + let byteLength = 0; + while (true) { + const { done, value: chunk } = await reader.read(); + if (done) { + return Buffer.concat(bytes, byteLength); + } + if (!isUint8Array(chunk)) { + throw new TypeError("Received non-Uint8Array chunk"); + } + bytes.push(chunk); + byteLength += chunk.length; + } + } + function urlIsLocal(url) { + assert("protocol" in url); + const protocol = url.protocol; + return protocol === "about:" || protocol === "blob:" || protocol === "data:"; + } + function urlHasHttpsScheme(url) { + if (typeof url === "string") { + return url.startsWith("https:"); + } + return url.protocol === "https:"; + } + function urlIsHttpHttpsScheme(url) { + assert("protocol" in url); + const protocol = url.protocol; + return protocol === "http:" || protocol === "https:"; + } + var hasOwn = Object.hasOwn || ((dict, key) => Object.prototype.hasOwnProperty.call(dict, key)); + module2.exports = { + isAborted, + isCancelled, + createDeferredPromise, + ReadableStreamFrom, + toUSVString, + tryUpgradeRequestToAPotentiallyTrustworthyURL, + coarsenedSharedCurrentTime, + determineRequestsReferrer, + makePolicyContainer, + clonePolicyContainer, + appendFetchMetadata, + appendRequestOriginHeader, + TAOCheck, + corsCheck, + crossOriginResourcePolicyCheck, + createOpaqueTimingInfo, + setRequestReferrerPolicyOnRedirect, + isValidHTTPToken, + requestBadPort, + requestCurrentURL, + responseURL, + responseLocationURL, + isBlobLike, + isURLPotentiallyTrustworthy, + isValidReasonPhrase, + sameOrigin, + normalizeMethod, + serializeJavascriptValueToJSONString, + makeIterator, + isValidHeaderName, + isValidHeaderValue, + hasOwn, + isErrorLike, + fullyReadBody, + bytesMatch, + isReadableStreamLike, + readableStreamClose, + isomorphicEncode, + isomorphicDecode, + urlIsLocal, + urlHasHttpsScheme, + urlIsHttpHttpsScheme, + readAllBytes + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/symbols.js +var require_symbols2 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/symbols.js"(exports2, module2) { + "use strict"; + module2.exports = { + kUrl: Symbol("url"), + kHeaders: Symbol("headers"), + kSignal: Symbol("signal"), + kState: Symbol("state"), + kGuard: Symbol("guard"), + kRealm: Symbol("realm") + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/webidl.js +var require_webidl = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/webidl.js"(exports2, module2) { + "use strict"; + var { types } = require("util"); + var { hasOwn, toUSVString } = require_util2(); + var webidl = {}; + webidl.converters = {}; + webidl.util = {}; + webidl.errors = {}; + webidl.errors.exception = function(message) { + return new TypeError(`${message.header}: ${message.message}`); + }; + webidl.errors.conversionFailed = function(context) { + const plural = context.types.length === 1 ? "" : " one of"; + const message = `${context.argument} could not be converted to${plural}: ${context.types.join(", ")}.`; + return webidl.errors.exception({ + header: context.prefix, + message + }); + }; + webidl.errors.invalidArgument = function(context) { + return webidl.errors.exception({ + header: context.prefix, + message: `"${context.value}" is an invalid ${context.type}.` + }); + }; + webidl.brandCheck = function(V, I, opts = void 0) { + if ((opts == null ? void 0 : opts.strict) !== false && !(V instanceof I)) { + throw new TypeError("Illegal invocation"); + } else { + return (V == null ? void 0 : V[Symbol.toStringTag]) === I.prototype[Symbol.toStringTag]; + } + }; + webidl.argumentLengthCheck = function({ length }, min, ctx) { + if (length < min) { + throw webidl.errors.exception({ + message: `${min} argument${min !== 1 ? "s" : ""} required, but${length ? " only" : ""} ${length} found.`, + ...ctx + }); + } + }; + webidl.illegalConstructor = function() { + throw webidl.errors.exception({ + header: "TypeError", + message: "Illegal constructor" + }); + }; + webidl.util.Type = function(V) { + switch (typeof V) { + 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": { + if (V === null) { + return "Null"; + } + return "Object"; + } + } + }; + webidl.util.ConvertToInt = function(V, bitLength, signedness, opts = {}) { + let upperBound; + let lowerBound; + if (bitLength === 64) { + upperBound = Math.pow(2, 53) - 1; + if (signedness === "unsigned") { + lowerBound = 0; + } else { + lowerBound = Math.pow(-2, 53) + 1; + } + } else if (signedness === "unsigned") { + lowerBound = 0; + upperBound = Math.pow(2, bitLength) - 1; + } else { + lowerBound = Math.pow(-2, bitLength) - 1; + upperBound = Math.pow(2, bitLength - 1) - 1; + } + let x = Number(V); + if (x === 0) { + x = 0; + } + if (opts.enforceRange === true) { + if (Number.isNaN(x) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) { + throw webidl.errors.exception({ + header: "Integer conversion", + message: `Could not convert ${V} to an integer.` + }); + } + x = webidl.util.IntegerPart(x); + if (x < lowerBound || x > upperBound) { + throw webidl.errors.exception({ + header: "Integer conversion", + message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.` + }); + } + return x; + } + if (!Number.isNaN(x) && opts.clamp === true) { + x = Math.min(Math.max(x, lowerBound), upperBound); + if (Math.floor(x) % 2 === 0) { + x = Math.floor(x); + } else { + x = Math.ceil(x); + } + return x; + } + if (Number.isNaN(x) || x === 0 && Object.is(0, x) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) { + return 0; + } + x = webidl.util.IntegerPart(x); + x = x % Math.pow(2, bitLength); + if (signedness === "signed" && x >= Math.pow(2, bitLength) - 1) { + return x - Math.pow(2, bitLength); + } + return x; + }; + webidl.util.IntegerPart = function(n) { + const r = Math.floor(Math.abs(n)); + if (n < 0) { + return -1 * r; + } + return r; + }; + webidl.sequenceConverter = function(converter) { + return (V) => { + var _a; + if (webidl.util.Type(V) !== "Object") { + throw webidl.errors.exception({ + header: "Sequence", + message: `Value of type ${webidl.util.Type(V)} is not an Object.` + }); + } + const method = (_a = V == null ? void 0 : V[Symbol.iterator]) == null ? void 0 : _a.call(V); + const seq = []; + if (method === void 0 || typeof method.next !== "function") { + throw webidl.errors.exception({ + header: "Sequence", + message: "Object is not an iterator." + }); + } + while (true) { + const { done, value } = method.next(); + if (done) { + break; + } + seq.push(converter(value)); + } + return seq; + }; + }; + webidl.recordConverter = function(keyConverter, valueConverter) { + return (O) => { + if (webidl.util.Type(O) !== "Object") { + throw webidl.errors.exception({ + header: "Record", + message: `Value of type ${webidl.util.Type(O)} is not an Object.` + }); + } + const result = {}; + if (!types.isProxy(O)) { + const keys2 = Object.keys(O); + for (const key of keys2) { + const typedKey = keyConverter(key); + const typedValue = valueConverter(O[key]); + result[typedKey] = typedValue; + } + return result; + } + const keys = Reflect.ownKeys(O); + for (const key of keys) { + const desc = Reflect.getOwnPropertyDescriptor(O, key); + if (desc == null ? void 0 : desc.enumerable) { + const typedKey = keyConverter(key); + const typedValue = valueConverter(O[key]); + result[typedKey] = typedValue; + } + } + return result; + }; + }; + webidl.interfaceConverter = function(i) { + return (V, opts = {}) => { + if (opts.strict !== false && !(V instanceof i)) { + throw webidl.errors.exception({ + header: i.name, + message: `Expected ${V} to be an instance of ${i.name}.` + }); + } + return V; + }; + }; + webidl.dictionaryConverter = function(converters) { + return (dictionary) => { + const type = webidl.util.Type(dictionary); + const dict = {}; + if (type === "Null" || type === "Undefined") { + return dict; + } else if (type !== "Object") { + throw webidl.errors.exception({ + header: "Dictionary", + message: `Expected ${dictionary} to be one of: Null, Undefined, Object.` + }); + } + for (const options of converters) { + const { key, defaultValue, required, converter } = options; + if (required === true) { + if (!hasOwn(dictionary, key)) { + throw webidl.errors.exception({ + header: "Dictionary", + message: `Missing required key "${key}".` + }); + } + } + let value = dictionary[key]; + const hasDefault = hasOwn(options, "defaultValue"); + if (hasDefault && value !== null) { + value = value ?? defaultValue; + } + if (required || hasDefault || value !== void 0) { + value = converter(value); + if (options.allowedValues && !options.allowedValues.includes(value)) { + throw webidl.errors.exception({ + header: "Dictionary", + message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(", ")}.` + }); + } + dict[key] = value; + } + } + return dict; + }; + }; + webidl.nullableConverter = function(converter) { + return (V) => { + if (V === null) { + return V; + } + return converter(V); + }; + }; + webidl.converters.DOMString = function(V, opts = {}) { + if (V === null && opts.legacyNullToEmptyString) { + return ""; + } + if (typeof V === "symbol") { + throw new TypeError("Could not convert argument of type symbol to string."); + } + return String(V); + }; + webidl.converters.ByteString = function(V) { + const x = webidl.converters.DOMString(V); + for (let index = 0; index < x.length; index++) { + const charCode = x.charCodeAt(index); + if (charCode > 255) { + throw new TypeError( + `Cannot convert argument to a ByteString because the character at index ${index} has a value of ${charCode} which is greater than 255.` + ); + } + } + return x; + }; + webidl.converters.USVString = toUSVString; + webidl.converters.boolean = function(V) { + const x = Boolean(V); + return x; + }; + webidl.converters.any = function(V) { + return V; + }; + webidl.converters["long long"] = function(V) { + const x = webidl.util.ConvertToInt(V, 64, "signed"); + return x; + }; + webidl.converters["unsigned long long"] = function(V) { + const x = webidl.util.ConvertToInt(V, 64, "unsigned"); + return x; + }; + webidl.converters["unsigned long"] = function(V) { + const x = webidl.util.ConvertToInt(V, 32, "unsigned"); + return x; + }; + webidl.converters["unsigned short"] = function(V, opts) { + const x = webidl.util.ConvertToInt(V, 16, "unsigned", opts); + return x; + }; + webidl.converters.ArrayBuffer = function(V, opts = {}) { + if (webidl.util.Type(V) !== "Object" || !types.isAnyArrayBuffer(V)) { + throw webidl.errors.conversionFailed({ + prefix: `${V}`, + argument: `${V}`, + types: ["ArrayBuffer"] + }); + } + if (opts.allowShared === false && types.isSharedArrayBuffer(V)) { + throw webidl.errors.exception({ + header: "ArrayBuffer", + message: "SharedArrayBuffer is not allowed." + }); + } + return V; + }; + webidl.converters.TypedArray = function(V, T, opts = {}) { + if (webidl.util.Type(V) !== "Object" || !types.isTypedArray(V) || V.constructor.name !== T.name) { + throw webidl.errors.conversionFailed({ + prefix: `${T.name}`, + argument: `${V}`, + types: [T.name] + }); + } + if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: "ArrayBuffer", + message: "SharedArrayBuffer is not allowed." + }); + } + return V; + }; + webidl.converters.DataView = function(V, opts = {}) { + if (webidl.util.Type(V) !== "Object" || !types.isDataView(V)) { + throw webidl.errors.exception({ + header: "DataView", + message: "Object is not a DataView." + }); + } + if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: "ArrayBuffer", + message: "SharedArrayBuffer is not allowed." + }); + } + return V; + }; + webidl.converters.BufferSource = function(V, opts = {}) { + if (types.isAnyArrayBuffer(V)) { + return webidl.converters.ArrayBuffer(V, opts); + } + if (types.isTypedArray(V)) { + return webidl.converters.TypedArray(V, V.constructor); + } + if (types.isDataView(V)) { + return webidl.converters.DataView(V, opts); + } + throw new TypeError(`Could not convert ${V} to a BufferSource.`); + }; + webidl.converters["sequence"] = webidl.sequenceConverter( + webidl.converters.ByteString + ); + webidl.converters["sequence>"] = webidl.sequenceConverter( + webidl.converters["sequence"] + ); + webidl.converters["record"] = webidl.recordConverter( + webidl.converters.ByteString, + webidl.converters.ByteString + ); + module2.exports = { + webidl + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/dataURL.js +var require_dataURL = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/dataURL.js"(exports2, module2) { + var assert = require("assert"); + var { atob: atob2 } = require("buffer"); + var { isomorphicDecode } = require_util2(); + var encoder = new TextEncoder(); + var HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+-.^_|~A-Za-z0-9]+$/; + var HTTP_WHITESPACE_REGEX = /(\u000A|\u000D|\u0009|\u0020)/; + var HTTP_QUOTED_STRING_TOKENS = /[\u0009|\u0020-\u007E|\u0080-\u00FF]/; + function dataURLProcessor(dataURL) { + assert(dataURL.protocol === "data:"); + let input = URLSerializer(dataURL, true); + input = input.slice(5); + const position = { position: 0 }; + let mimeType = collectASequenceOfCodePointsFast( + ",", + input, + position + ); + const mimeTypeLength = mimeType.length; + mimeType = removeASCIIWhitespace(mimeType, true, true); + if (position.position >= input.length) { + return "failure"; + } + position.position++; + const encodedBody = input.slice(mimeTypeLength + 1); + let body = stringPercentDecode(encodedBody); + if (/;(\u0020){0,}base64$/i.test(mimeType)) { + const stringBody = isomorphicDecode(body); + body = forgivingBase64(stringBody); + if (body === "failure") { + return "failure"; + } + mimeType = mimeType.slice(0, -6); + mimeType = mimeType.replace(/(\u0020)+$/, ""); + mimeType = mimeType.slice(0, -1); + } + if (mimeType.startsWith(";")) { + mimeType = "text/plain" + mimeType; + } + let mimeTypeRecord = parseMIMEType(mimeType); + if (mimeTypeRecord === "failure") { + mimeTypeRecord = parseMIMEType("text/plain;charset=US-ASCII"); + } + return { mimeType: mimeTypeRecord, body }; + } + function URLSerializer(url, excludeFragment = false) { + const href = url.href; + if (!excludeFragment) { + return href; + } + const hash = href.lastIndexOf("#"); + if (hash === -1) { + return href; + } + return href.slice(0, hash); + } + function collectASequenceOfCodePoints(condition, input, position) { + let result = ""; + while (position.position < input.length && condition(input[position.position])) { + result += input[position.position]; + position.position++; + } + return result; + } + function collectASequenceOfCodePointsFast(char, input, position) { + const idx = input.indexOf(char, position.position); + const start = position.position; + if (idx === -1) { + position.position = input.length; + return input.slice(start); + } + position.position = idx; + return input.slice(start, position.position); + } + function stringPercentDecode(input) { + const bytes = encoder.encode(input); + return percentDecode(bytes); + } + function percentDecode(input) { + const output = []; + for (let i = 0; i < input.length; i++) { + const byte = input[i]; + if (byte !== 37) { + output.push(byte); + } else if (byte === 37 && !/^[0-9A-Fa-f]{2}$/i.test(String.fromCharCode(input[i + 1], input[i + 2]))) { + output.push(37); + } else { + const nextTwoBytes = String.fromCharCode(input[i + 1], input[i + 2]); + const bytePoint = Number.parseInt(nextTwoBytes, 16); + output.push(bytePoint); + i += 2; + } + } + return Uint8Array.from(output); + } + function parseMIMEType(input) { + input = removeHTTPWhitespace(input, true, true); + const position = { position: 0 }; + const type = collectASequenceOfCodePointsFast( + "/", + input, + position + ); + if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) { + return "failure"; + } + if (position.position > input.length) { + return "failure"; + } + position.position++; + let subtype = collectASequenceOfCodePointsFast( + ";", + input, + position + ); + subtype = removeHTTPWhitespace(subtype, false, true); + if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) { + return "failure"; + } + const typeLowercase = type.toLowerCase(); + const subtypeLowercase = subtype.toLowerCase(); + const mimeType = { + type: typeLowercase, + subtype: subtypeLowercase, + /** @type {Map} */ + parameters: /* @__PURE__ */ new Map(), + // https://mimesniff.spec.whatwg.org/#mime-type-essence + essence: `${typeLowercase}/${subtypeLowercase}` + }; + while (position.position < input.length) { + position.position++; + collectASequenceOfCodePoints( + // https://fetch.spec.whatwg.org/#http-whitespace + (char) => HTTP_WHITESPACE_REGEX.test(char), + input, + position + ); + let parameterName = collectASequenceOfCodePoints( + (char) => char !== ";" && char !== "=", + input, + position + ); + parameterName = parameterName.toLowerCase(); + if (position.position < input.length) { + if (input[position.position] === ";") { + continue; + } + position.position++; + } + if (position.position > input.length) { + break; + } + let parameterValue = null; + if (input[position.position] === '"') { + parameterValue = collectAnHTTPQuotedString(input, position, true); + collectASequenceOfCodePointsFast( + ";", + input, + position + ); + } else { + parameterValue = collectASequenceOfCodePointsFast( + ";", + input, + position + ); + parameterValue = removeHTTPWhitespace(parameterValue, false, true); + if (parameterValue.length === 0) { + continue; + } + } + if (parameterName.length !== 0 && HTTP_TOKEN_CODEPOINTS.test(parameterName) && (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) && !mimeType.parameters.has(parameterName)) { + mimeType.parameters.set(parameterName, parameterValue); + } + } + return mimeType; + } + function forgivingBase64(data) { + data = data.replace(/[\u0009\u000A\u000C\u000D\u0020]/g, ""); + if (data.length % 4 === 0) { + data = data.replace(/=?=$/, ""); + } + if (data.length % 4 === 1) { + return "failure"; + } + if (/[^+/0-9A-Za-z]/.test(data)) { + return "failure"; + } + const binary = atob2(data); + const bytes = new Uint8Array(binary.length); + for (let byte = 0; byte < binary.length; byte++) { + bytes[byte] = binary.charCodeAt(byte); + } + return bytes; + } + function collectAnHTTPQuotedString(input, position, extractValue) { + const positionStart = position.position; + let value = ""; + assert(input[position.position] === '"'); + position.position++; + while (true) { + value += collectASequenceOfCodePoints( + (char) => char !== '"' && char !== "\\", + input, + position + ); + if (position.position >= input.length) { + break; + } + const quoteOrBackslash = input[position.position]; + position.position++; + if (quoteOrBackslash === "\\") { + if (position.position >= input.length) { + value += "\\"; + break; + } + value += input[position.position]; + position.position++; + } else { + assert(quoteOrBackslash === '"'); + break; + } + } + if (extractValue) { + return value; + } + return input.slice(positionStart, position.position); + } + function serializeAMimeType(mimeType) { + assert(mimeType !== "failure"); + const { parameters, essence } = mimeType; + let serialization = essence; + for (let [name, value] of parameters.entries()) { + serialization += ";"; + serialization += name; + serialization += "="; + if (!HTTP_TOKEN_CODEPOINTS.test(value)) { + value = value.replace(/(\\|")/g, "\\$1"); + value = '"' + value; + value += '"'; + } + serialization += value; + } + return serialization; + } + function isHTTPWhiteSpace(char) { + return char === "\r" || char === "\n" || char === " " || char === " "; + } + function removeHTTPWhitespace(str, leading = true, trailing = true) { + let lead = 0; + let trail = str.length - 1; + if (leading) { + for (; lead < str.length && isHTTPWhiteSpace(str[lead]); lead++) + ; + } + if (trailing) { + for (; trail > 0 && isHTTPWhiteSpace(str[trail]); trail--) + ; + } + return str.slice(lead, trail + 1); + } + function isASCIIWhitespace(char) { + return char === "\r" || char === "\n" || char === " " || char === "\f" || char === " "; + } + function removeASCIIWhitespace(str, leading = true, trailing = true) { + let lead = 0; + let trail = str.length - 1; + if (leading) { + for (; lead < str.length && isASCIIWhitespace(str[lead]); lead++) + ; + } + if (trailing) { + for (; trail > 0 && isASCIIWhitespace(str[trail]); trail--) + ; + } + return str.slice(lead, trail + 1); + } + module2.exports = { + dataURLProcessor, + URLSerializer, + collectASequenceOfCodePoints, + collectASequenceOfCodePointsFast, + stringPercentDecode, + parseMIMEType, + collectAnHTTPQuotedString, + serializeAMimeType + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/file.js +var require_file = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/file.js"(exports2, module2) { + "use strict"; + var { Blob: Blob2, File: NativeFile } = require("buffer"); + var { types } = require("util"); + var { kState } = require_symbols2(); + var { isBlobLike } = require_util2(); + var { webidl } = require_webidl(); + var { parseMIMEType, serializeAMimeType } = require_dataURL(); + var { kEnumerableProperty } = require_util(); + var encoder = new TextEncoder(); + var File = class _File extends Blob2 { + constructor(fileBits, fileName, options = {}) { + webidl.argumentLengthCheck(arguments, 2, { header: "File constructor" }); + fileBits = webidl.converters["sequence"](fileBits); + fileName = webidl.converters.USVString(fileName); + options = webidl.converters.FilePropertyBag(options); + const n = fileName; + let t = options.type; + let d; + substep: { + if (t) { + t = parseMIMEType(t); + if (t === "failure") { + t = ""; + break substep; + } + t = serializeAMimeType(t).toLowerCase(); + } + d = options.lastModified; + } + super(processBlobParts(fileBits, options), { type: t }); + this[kState] = { + name: n, + lastModified: d, + type: t + }; + } + get name() { + webidl.brandCheck(this, _File); + return this[kState].name; + } + get lastModified() { + webidl.brandCheck(this, _File); + return this[kState].lastModified; + } + get type() { + webidl.brandCheck(this, _File); + return this[kState].type; + } + }; + var FileLike = class _FileLike { + constructor(blobLike, fileName, options = {}) { + const n = fileName; + const t = options.type; + const d = options.lastModified ?? Date.now(); + this[kState] = { + blobLike, + name: n, + type: t, + lastModified: d + }; + } + stream(...args) { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.stream(...args); + } + arrayBuffer(...args) { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.arrayBuffer(...args); + } + slice(...args) { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.slice(...args); + } + text(...args) { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.text(...args); + } + get size() { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.size; + } + get type() { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.type; + } + get name() { + webidl.brandCheck(this, _FileLike); + return this[kState].name; + } + get lastModified() { + webidl.brandCheck(this, _FileLike); + return this[kState].lastModified; + } + get [Symbol.toStringTag]() { + return "File"; + } + }; + Object.defineProperties(File.prototype, { + [Symbol.toStringTag]: { + value: "File", + configurable: true + }, + name: kEnumerableProperty, + lastModified: kEnumerableProperty + }); + webidl.converters.Blob = webidl.interfaceConverter(Blob2); + webidl.converters.BlobPart = function(V, opts) { + if (webidl.util.Type(V) === "Object") { + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }); + } + if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) { + return webidl.converters.BufferSource(V, opts); + } + } + return webidl.converters.USVString(V, opts); + }; + webidl.converters["sequence"] = webidl.sequenceConverter( + webidl.converters.BlobPart + ); + webidl.converters.FilePropertyBag = webidl.dictionaryConverter([ + { + key: "lastModified", + converter: webidl.converters["long long"], + get defaultValue() { + return Date.now(); + } + }, + { + key: "type", + converter: webidl.converters.DOMString, + defaultValue: "" + }, + { + key: "endings", + converter: (value) => { + value = webidl.converters.DOMString(value); + value = value.toLowerCase(); + if (value !== "native") { + value = "transparent"; + } + return value; + }, + defaultValue: "transparent" + } + ]); + function processBlobParts(parts, options) { + const bytes = []; + for (const element of parts) { + if (typeof element === "string") { + let s = element; + if (options.endings === "native") { + s = convertLineEndingsNative(s); + } + bytes.push(encoder.encode(s)); + } else if (types.isAnyArrayBuffer(element) || types.isTypedArray(element)) { + if (!element.buffer) { + bytes.push(new Uint8Array(element)); + } else { + bytes.push( + new Uint8Array(element.buffer, element.byteOffset, element.byteLength) + ); + } + } else if (isBlobLike(element)) { + bytes.push(element); + } + } + return bytes; + } + function convertLineEndingsNative(s) { + let nativeLineEnding = "\n"; + if (process.platform === "win32") { + nativeLineEnding = "\r\n"; + } + return s.replace(/\r?\n/g, nativeLineEnding); + } + function isFileLike(object) { + return NativeFile && object instanceof NativeFile || object instanceof File || object && (typeof object.stream === "function" || typeof object.arrayBuffer === "function") && object[Symbol.toStringTag] === "File"; + } + module2.exports = { File, FileLike, isFileLike }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/formdata.js +var require_formdata = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/formdata.js"(exports2, module2) { + "use strict"; + var { isBlobLike, toUSVString, makeIterator } = require_util2(); + var { kState } = require_symbols2(); + var { File: UndiciFile, FileLike, isFileLike } = require_file(); + var { webidl } = require_webidl(); + var { Blob: Blob2, File: NativeFile } = require("buffer"); + var File = NativeFile ?? UndiciFile; + var FormData = class _FormData { + constructor(form) { + if (form !== void 0) { + throw webidl.errors.conversionFailed({ + prefix: "FormData constructor", + argument: "Argument 1", + types: ["undefined"] + }); + } + this[kState] = []; + } + append(name, value, filename = void 0) { + webidl.brandCheck(this, _FormData); + webidl.argumentLengthCheck(arguments, 2, { header: "FormData.append" }); + if (arguments.length === 3 && !isBlobLike(value)) { + throw new TypeError( + "Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'" + ); + } + name = webidl.converters.USVString(name); + value = isBlobLike(value) ? webidl.converters.Blob(value, { strict: false }) : webidl.converters.USVString(value); + filename = arguments.length === 3 ? webidl.converters.USVString(filename) : void 0; + const entry = makeEntry(name, value, filename); + this[kState].push(entry); + } + delete(name) { + webidl.brandCheck(this, _FormData); + webidl.argumentLengthCheck(arguments, 1, { header: "FormData.delete" }); + name = webidl.converters.USVString(name); + this[kState] = this[kState].filter((entry) => entry.name !== name); + } + get(name) { + webidl.brandCheck(this, _FormData); + webidl.argumentLengthCheck(arguments, 1, { header: "FormData.get" }); + name = webidl.converters.USVString(name); + const idx = this[kState].findIndex((entry) => entry.name === name); + if (idx === -1) { + return null; + } + return this[kState][idx].value; + } + getAll(name) { + webidl.brandCheck(this, _FormData); + webidl.argumentLengthCheck(arguments, 1, { header: "FormData.getAll" }); + name = webidl.converters.USVString(name); + return this[kState].filter((entry) => entry.name === name).map((entry) => entry.value); + } + has(name) { + webidl.brandCheck(this, _FormData); + webidl.argumentLengthCheck(arguments, 1, { header: "FormData.has" }); + name = webidl.converters.USVString(name); + return this[kState].findIndex((entry) => entry.name === name) !== -1; + } + set(name, value, filename = void 0) { + webidl.brandCheck(this, _FormData); + webidl.argumentLengthCheck(arguments, 2, { header: "FormData.set" }); + if (arguments.length === 3 && !isBlobLike(value)) { + throw new TypeError( + "Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'" + ); + } + name = webidl.converters.USVString(name); + value = isBlobLike(value) ? webidl.converters.Blob(value, { strict: false }) : webidl.converters.USVString(value); + filename = arguments.length === 3 ? toUSVString(filename) : void 0; + const entry = makeEntry(name, value, filename); + const idx = this[kState].findIndex((entry2) => entry2.name === name); + if (idx !== -1) { + this[kState] = [ + ...this[kState].slice(0, idx), + entry, + ...this[kState].slice(idx + 1).filter((entry2) => entry2.name !== name) + ]; + } else { + this[kState].push(entry); + } + } + entries() { + webidl.brandCheck(this, _FormData); + return makeIterator( + () => this[kState].map((pair) => [pair.name, pair.value]), + "FormData", + "key+value" + ); + } + keys() { + webidl.brandCheck(this, _FormData); + return makeIterator( + () => this[kState].map((pair) => [pair.name, pair.value]), + "FormData", + "key" + ); + } + values() { + webidl.brandCheck(this, _FormData); + return makeIterator( + () => this[kState].map((pair) => [pair.name, pair.value]), + "FormData", + "value" + ); + } + /** + * @param {(value: string, key: string, self: FormData) => void} callbackFn + * @param {unknown} thisArg + */ + forEach(callbackFn, thisArg = globalThis) { + webidl.brandCheck(this, _FormData); + webidl.argumentLengthCheck(arguments, 1, { header: "FormData.forEach" }); + if (typeof callbackFn !== "function") { + throw new TypeError( + "Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'." + ); + } + for (const [key, value] of this) { + callbackFn.apply(thisArg, [value, key, this]); + } + } + }; + FormData.prototype[Symbol.iterator] = FormData.prototype.entries; + Object.defineProperties(FormData.prototype, { + [Symbol.toStringTag]: { + value: "FormData", + configurable: true + } + }); + function makeEntry(name, value, filename) { + name = Buffer.from(name).toString("utf8"); + if (typeof value === "string") { + value = Buffer.from(value).toString("utf8"); + } else { + if (!isFileLike(value)) { + value = value instanceof Blob2 ? new File([value], "blob", { type: value.type }) : new FileLike(value, "blob", { type: value.type }); + } + if (filename !== void 0) { + const options = { + type: value.type, + lastModified: value.lastModified + }; + value = NativeFile && value instanceof NativeFile || value instanceof UndiciFile ? new File([value], filename, options) : new FileLike(value, filename, options); + } + } + return { name, value }; + } + module2.exports = { FormData }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/body.js +var require_body = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/body.js"(exports2, module2) { + "use strict"; + var Busboy = require_main(); + var util = require_util(); + var { + ReadableStreamFrom, + isBlobLike, + isReadableStreamLike, + readableStreamClose, + createDeferredPromise, + fullyReadBody + } = require_util2(); + var { FormData } = require_formdata(); + var { kState } = require_symbols2(); + var { webidl } = require_webidl(); + var { DOMException: DOMException2, structuredClone } = require_constants(); + var { Blob: Blob2, File: NativeFile } = require("buffer"); + var { kBodyUsed } = require_symbols(); + var assert = require("assert"); + var { isErrored } = require_util(); + var { isUint8Array, isArrayBuffer } = require("util/types"); + var { File: UndiciFile } = require_file(); + var { parseMIMEType, serializeAMimeType } = require_dataURL(); + var ReadableStream = globalThis.ReadableStream; + var File = NativeFile ?? UndiciFile; + var textEncoder = new TextEncoder(); + var textDecoder = new TextDecoder(); + function extractBody(object, keepalive = false) { + if (!ReadableStream) { + ReadableStream = require("stream/web").ReadableStream; + } + let stream = null; + if (object instanceof ReadableStream) { + stream = object; + } else if (isBlobLike(object)) { + stream = object.stream(); + } else { + stream = new ReadableStream({ + async pull(controller) { + controller.enqueue( + typeof source2 === "string" ? textEncoder.encode(source2) : source2 + ); + queueMicrotask(() => readableStreamClose(controller)); + }, + start() { + }, + type: void 0 + }); + } + assert(isReadableStreamLike(stream)); + let action = null; + let source2 = null; + let length = null; + let type = null; + if (typeof object === "string") { + source2 = object; + type = "text/plain;charset=UTF-8"; + } else if (object instanceof URLSearchParams) { + source2 = object.toString(); + type = "application/x-www-form-urlencoded;charset=UTF-8"; + } else if (isArrayBuffer(object)) { + source2 = new Uint8Array(object.slice()); + } else if (ArrayBuffer.isView(object)) { + source2 = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength)); + } else if (util.isFormDataLike(object)) { + const boundary = `----formdata-undici-0${`${Math.floor(Math.random() * 1e11)}`.padStart(11, "0")}`; + const prefix = `--${boundary}\r +Content-Disposition: form-data`; + const escape = (str) => str.replace(/\n/g, "%0A").replace(/\r/g, "%0D").replace(/"/g, "%22"); + const normalizeLinefeeds = (value) => value.replace(/\r?\n|\r/g, "\r\n"); + const blobParts = []; + const rn = new Uint8Array([13, 10]); + length = 0; + let hasUnknownSizeValue = false; + for (const [name, value] of object) { + if (typeof value === "string") { + const chunk2 = textEncoder.encode(prefix + `; name="${escape(normalizeLinefeeds(name))}"\r +\r +${normalizeLinefeeds(value)}\r +`); + blobParts.push(chunk2); + length += chunk2.byteLength; + } else { + const chunk2 = textEncoder.encode(`${prefix}; name="${escape(normalizeLinefeeds(name))}"` + (value.name ? `; filename="${escape(value.name)}"` : "") + `\r +Content-Type: ${value.type || "application/octet-stream"}\r +\r +`); + blobParts.push(chunk2, value, rn); + if (typeof value.size === "number") { + length += chunk2.byteLength + value.size + rn.byteLength; + } else { + hasUnknownSizeValue = true; + } + } + } + const chunk = textEncoder.encode(`--${boundary}--`); + blobParts.push(chunk); + length += chunk.byteLength; + if (hasUnknownSizeValue) { + length = null; + } + source2 = object; + action = async function* () { + for (const part of blobParts) { + if (part.stream) { + yield* part.stream(); + } else { + yield part; + } + } + }; + type = "multipart/form-data; boundary=" + boundary; + } else if (isBlobLike(object)) { + source2 = object; + length = object.size; + if (object.type) { + type = object.type; + } + } else if (typeof object[Symbol.asyncIterator] === "function") { + if (keepalive) { + throw new TypeError("keepalive"); + } + if (util.isDisturbed(object) || object.locked) { + throw new TypeError( + "Response body object should not be disturbed or locked" + ); + } + stream = object instanceof ReadableStream ? object : ReadableStreamFrom(object); + } + if (typeof source2 === "string" || util.isBuffer(source2)) { + length = Buffer.byteLength(source2); + } + if (action != null) { + let iterator; + stream = new ReadableStream({ + async start() { + iterator = action(object)[Symbol.asyncIterator](); + }, + async pull(controller) { + const { value, done } = await iterator.next(); + if (done) { + queueMicrotask(() => { + controller.close(); + }); + } else { + if (!isErrored(stream)) { + controller.enqueue(new Uint8Array(value)); + } + } + return controller.desiredSize > 0; + }, + async cancel(reason) { + await iterator.return(); + }, + type: void 0 + }); + } + const body = { stream, source: source2, length }; + return [body, type]; + } + function safelyExtractBody(object, keepalive = false) { + if (!ReadableStream) { + ReadableStream = require("stream/web").ReadableStream; + } + if (object instanceof ReadableStream) { + assert(!util.isDisturbed(object), "The body has already been consumed."); + assert(!object.locked, "The stream is locked."); + } + return extractBody(object, keepalive); + } + function cloneBody(body) { + const [out1, out2] = body.stream.tee(); + const out2Clone = structuredClone(out2, { transfer: [out2] }); + const [, finalClone] = out2Clone.tee(); + body.stream = out1; + return { + stream: finalClone, + length: body.length, + source: body.source + }; + } + async function* consumeBody(body) { + if (body) { + if (isUint8Array(body)) { + yield body; + } else { + const stream = body.stream; + if (util.isDisturbed(stream)) { + throw new TypeError("The body has already been consumed."); + } + if (stream.locked) { + throw new TypeError("The stream is locked."); + } + stream[kBodyUsed] = true; + yield* stream; + } + } + } + function throwIfAborted(state) { + if (state.aborted) { + throw new DOMException2("The operation was aborted.", "AbortError"); + } + } + function bodyMixinMethods(instance) { + const methods = { + blob() { + return specConsumeBody(this, (bytes) => { + let mimeType = bodyMimeType(this); + if (mimeType === "failure") { + mimeType = ""; + } else if (mimeType) { + mimeType = serializeAMimeType(mimeType); + } + return new Blob2([bytes], { type: mimeType }); + }, instance); + }, + arrayBuffer() { + return specConsumeBody(this, (bytes) => { + return new Uint8Array(bytes).buffer; + }, instance); + }, + text() { + return specConsumeBody(this, utf8DecodeBytes, instance); + }, + json() { + return specConsumeBody(this, parseJSONFromBytes, instance); + }, + async formData() { + webidl.brandCheck(this, instance); + throwIfAborted(this[kState]); + const contentType = this.headers.get("Content-Type"); + if (/multipart\/form-data/.test(contentType)) { + const headers = {}; + for (const [key, value] of this.headers) + headers[key.toLowerCase()] = value; + const responseFormData = new FormData(); + let busboy; + try { + busboy = new Busboy({ + headers, + preservePath: true + }); + } catch (err) { + throw new DOMException2(`${err}`, "AbortError"); + } + busboy.on("field", (name, value) => { + responseFormData.append(name, value); + }); + busboy.on("file", (name, value, filename, encoding, mimeType) => { + const chunks = []; + if (encoding === "base64" || encoding.toLowerCase() === "base64") { + let base64chunk = ""; + value.on("data", (chunk) => { + base64chunk += chunk.toString().replace(/[\r\n]/gm, ""); + const end = base64chunk.length - base64chunk.length % 4; + chunks.push(Buffer.from(base64chunk.slice(0, end), "base64")); + base64chunk = base64chunk.slice(end); + }); + value.on("end", () => { + chunks.push(Buffer.from(base64chunk, "base64")); + responseFormData.append(name, new File(chunks, filename, { type: mimeType })); + }); + } else { + value.on("data", (chunk) => { + chunks.push(chunk); + }); + value.on("end", () => { + responseFormData.append(name, new File(chunks, filename, { type: mimeType })); + }); + } + }); + const busboyResolve = new Promise((resolve, reject) => { + busboy.on("finish", resolve); + busboy.on("error", (err) => reject(new TypeError(err))); + }); + if (this.body !== null) + for await (const chunk of consumeBody(this[kState].body)) + busboy.write(chunk); + busboy.end(); + await busboyResolve; + return responseFormData; + } else if (/application\/x-www-form-urlencoded/.test(contentType)) { + let entries; + try { + let text = ""; + const streamingDecoder = new TextDecoder("utf-8", { ignoreBOM: true }); + for await (const chunk of consumeBody(this[kState].body)) { + if (!isUint8Array(chunk)) { + throw new TypeError("Expected Uint8Array chunk"); + } + text += streamingDecoder.decode(chunk, { stream: true }); + } + text += streamingDecoder.decode(); + entries = new URLSearchParams(text); + } catch (err) { + throw Object.assign(new TypeError(), { cause: err }); + } + const formData = new FormData(); + for (const [name, value] of entries) { + formData.append(name, value); + } + return formData; + } else { + await Promise.resolve(); + throwIfAborted(this[kState]); + throw webidl.errors.exception({ + header: `${instance.name}.formData`, + message: "Could not parse content as FormData." + }); + } + } + }; + return methods; + } + function mixinBody(prototype) { + Object.assign(prototype.prototype, bodyMixinMethods(prototype)); + } + async function specConsumeBody(object, convertBytesToJSValue, instance) { + webidl.brandCheck(object, instance); + throwIfAborted(object[kState]); + if (bodyUnusable(object[kState].body)) { + throw new TypeError("Body is unusable"); + } + const promise = createDeferredPromise(); + const errorSteps = (error) => promise.reject(error); + const successSteps = (data) => { + try { + promise.resolve(convertBytesToJSValue(data)); + } catch (e) { + errorSteps(e); + } + }; + if (object[kState].body == null) { + successSteps(new Uint8Array()); + return promise.promise; + } + await fullyReadBody(object[kState].body, successSteps, errorSteps); + return promise.promise; + } + function bodyUnusable(body) { + return body != null && (body.stream.locked || util.isDisturbed(body.stream)); + } + function utf8DecodeBytes(buffer) { + if (buffer.length === 0) { + return ""; + } + if (buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191) { + buffer = buffer.subarray(3); + } + const output = textDecoder.decode(buffer); + return output; + } + function parseJSONFromBytes(bytes) { + return JSON.parse(utf8DecodeBytes(bytes)); + } + function bodyMimeType(object) { + const { headersList } = object[kState]; + const contentType = headersList.get("content-type"); + if (contentType === null) { + return "failure"; + } + return parseMIMEType(contentType); + } + module2.exports = { + extractBody, + safelyExtractBody, + cloneBody, + mixinBody + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/request.js +var require_request = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/request.js"(exports2, module2) { + "use strict"; + var { + InvalidArgumentError, + NotSupportedError + } = require_errors(); + var assert = require("assert"); + var { kHTTP2BuildRequest, kHTTP2CopyHeaders, kHTTP1BuildRequest } = require_symbols(); + var util = require_util(); + var tokenRegExp = /^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/; + var headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/; + var invalidPathRegex = /[^\u0021-\u00ff]/; + var kHandler = Symbol("handler"); + var channels = {}; + var extractBody; + try { + const diagnosticsChannel = require("diagnostics_channel"); + channels.create = diagnosticsChannel.channel("undici:request:create"); + channels.bodySent = diagnosticsChannel.channel("undici:request:bodySent"); + channels.headers = diagnosticsChannel.channel("undici:request:headers"); + channels.trailers = diagnosticsChannel.channel("undici:request:trailers"); + channels.error = diagnosticsChannel.channel("undici:request:error"); + } catch { + channels.create = { hasSubscribers: false }; + channels.bodySent = { hasSubscribers: false }; + channels.headers = { hasSubscribers: false }; + channels.trailers = { hasSubscribers: false }; + channels.error = { hasSubscribers: false }; + } + var Request = class _Request { + constructor(origin, { + path, + method, + body, + headers, + query, + idempotent, + blocking, + upgrade, + headersTimeout, + bodyTimeout, + reset, + throwOnError, + expectContinue + }, handler) { + if (typeof path !== "string") { + throw new InvalidArgumentError("path must be a string"); + } else if (path[0] !== "/" && !(path.startsWith("http://") || path.startsWith("https://")) && method !== "CONNECT") { + throw new InvalidArgumentError("path must be an absolute URL or start with a slash"); + } else if (invalidPathRegex.exec(path) !== null) { + throw new InvalidArgumentError("invalid request path"); + } + if (typeof method !== "string") { + throw new InvalidArgumentError("method must be a string"); + } else if (tokenRegExp.exec(method) === null) { + throw new InvalidArgumentError("invalid request method"); + } + if (upgrade && typeof upgrade !== "string") { + throw new InvalidArgumentError("upgrade must be a string"); + } + if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) { + throw new InvalidArgumentError("invalid headersTimeout"); + } + if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) { + throw new InvalidArgumentError("invalid bodyTimeout"); + } + if (reset != null && typeof reset !== "boolean") { + throw new InvalidArgumentError("invalid reset"); + } + if (expectContinue != null && typeof expectContinue !== "boolean") { + throw new InvalidArgumentError("invalid expectContinue"); + } + this.headersTimeout = headersTimeout; + this.bodyTimeout = bodyTimeout; + this.throwOnError = throwOnError === true; + this.method = method; + if (body == null) { + this.body = null; + } else if (util.isStream(body)) { + this.body = body; + } else if (util.isBuffer(body)) { + this.body = body.byteLength ? body : null; + } else if (ArrayBuffer.isView(body)) { + this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null; + } else if (body instanceof ArrayBuffer) { + this.body = body.byteLength ? Buffer.from(body) : null; + } else if (typeof body === "string") { + this.body = body.length ? Buffer.from(body) : null; + } else if (util.isFormDataLike(body) || util.isIterable(body) || util.isBlobLike(body)) { + this.body = body; + } else { + throw new InvalidArgumentError("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable"); + } + this.completed = false; + this.aborted = false; + this.upgrade = upgrade || null; + this.path = query ? util.buildURL(path, query) : path; + this.origin = origin; + this.idempotent = idempotent == null ? method === "HEAD" || method === "GET" : idempotent; + this.blocking = blocking == null ? false : blocking; + this.reset = reset == null ? null : reset; + this.host = null; + this.contentLength = null; + this.contentType = null; + this.headers = ""; + this.expectContinue = expectContinue != null ? expectContinue : false; + if (Array.isArray(headers)) { + if (headers.length % 2 !== 0) { + throw new InvalidArgumentError("headers array must be even"); + } + for (let i = 0; i < headers.length; i += 2) { + processHeader(this, headers[i], headers[i + 1]); + } + } else if (headers && typeof headers === "object") { + const keys = Object.keys(headers); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + processHeader(this, key, headers[key]); + } + } else if (headers != null) { + throw new InvalidArgumentError("headers must be an object or an array"); + } + if (util.isFormDataLike(this.body)) { + if (util.nodeMajor < 16 || util.nodeMajor === 16 && util.nodeMinor < 8) { + throw new InvalidArgumentError("Form-Data bodies are only supported in node v16.8 and newer."); + } + if (!extractBody) { + extractBody = require_body().extractBody; + } + const [bodyStream, contentType] = extractBody(body); + if (this.contentType == null) { + this.contentType = contentType; + this.headers += `content-type: ${contentType}\r +`; + } + this.body = bodyStream.stream; + this.contentLength = bodyStream.length; + } else if (util.isBlobLike(body) && this.contentType == null && body.type) { + this.contentType = body.type; + this.headers += `content-type: ${body.type}\r +`; + } + util.validateHandler(handler, method, upgrade); + this.servername = util.getServerName(this.host); + this[kHandler] = handler; + if (channels.create.hasSubscribers) { + channels.create.publish({ request: this }); + } + } + onBodySent(chunk) { + if (this[kHandler].onBodySent) { + try { + this[kHandler].onBodySent(chunk); + } catch (err) { + this.onError(err); + } + } + } + onRequestSent() { + if (channels.bodySent.hasSubscribers) { + channels.bodySent.publish({ request: this }); + } + if (this[kHandler].onRequestSent) { + try { + this[kHandler].onRequestSent(); + } catch (err) { + this.onError(err); + } + } + } + onConnect(abort) { + assert(!this.aborted); + assert(!this.completed); + return this[kHandler].onConnect(abort); + } + onHeaders(statusCode, headers, resume, statusText) { + assert(!this.aborted); + assert(!this.completed); + if (channels.headers.hasSubscribers) { + channels.headers.publish({ request: this, response: { statusCode, headers, statusText } }); + } + return this[kHandler].onHeaders(statusCode, headers, resume, statusText); + } + onData(chunk) { + assert(!this.aborted); + assert(!this.completed); + return this[kHandler].onData(chunk); + } + onUpgrade(statusCode, headers, socket) { + assert(!this.aborted); + assert(!this.completed); + return this[kHandler].onUpgrade(statusCode, headers, socket); + } + onComplete(trailers) { + assert(!this.aborted); + this.completed = true; + if (channels.trailers.hasSubscribers) { + channels.trailers.publish({ request: this, trailers }); + } + return this[kHandler].onComplete(trailers); + } + onError(error) { + if (channels.error.hasSubscribers) { + channels.error.publish({ request: this, error }); + } + if (this.aborted) { + return; + } + this.aborted = true; + return this[kHandler].onError(error); + } + // TODO: adjust to support H2 + addHeader(key, value) { + processHeader(this, key, value); + return this; + } + static [kHTTP1BuildRequest](origin, opts, handler) { + return new _Request(origin, opts, handler); + } + static [kHTTP2BuildRequest](origin, opts, handler) { + const headers = opts.headers; + opts = { ...opts, headers: null }; + const request3 = new _Request(origin, opts, handler); + request3.headers = {}; + if (Array.isArray(headers)) { + if (headers.length % 2 !== 0) { + throw new InvalidArgumentError("headers array must be even"); + } + for (let i = 0; i < headers.length; i += 2) { + processHeader(request3, headers[i], headers[i + 1], true); + } + } else if (headers && typeof headers === "object") { + const keys = Object.keys(headers); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + processHeader(request3, key, headers[key], true); + } + } else if (headers != null) { + throw new InvalidArgumentError("headers must be an object or an array"); + } + return request3; + } + static [kHTTP2CopyHeaders](raw) { + const rawHeaders = raw.split("\r\n"); + const headers = {}; + for (const header of rawHeaders) { + const [key, value] = header.split(": "); + if (value == null || value.length === 0) + continue; + if (headers[key]) + headers[key] += `,${value}`; + else + headers[key] = value; + } + return headers; + } + }; + function processHeaderValue(key, val, skipAppend) { + if (val && typeof val === "object") { + throw new InvalidArgumentError(`invalid ${key} header`); + } + val = val != null ? `${val}` : ""; + if (headerCharRegex.exec(val) !== null) { + throw new InvalidArgumentError(`invalid ${key} header`); + } + return skipAppend ? val : `${key}: ${val}\r +`; + } + function processHeader(request3, key, val, skipAppend = false) { + if (val && (typeof val === "object" && !Array.isArray(val))) { + throw new InvalidArgumentError(`invalid ${key} header`); + } else if (val === void 0) { + return; + } + if (request3.host === null && key.length === 4 && key.toLowerCase() === "host") { + if (headerCharRegex.exec(val) !== null) { + throw new InvalidArgumentError(`invalid ${key} header`); + } + request3.host = val; + } else if (request3.contentLength === null && key.length === 14 && key.toLowerCase() === "content-length") { + request3.contentLength = parseInt(val, 10); + if (!Number.isFinite(request3.contentLength)) { + throw new InvalidArgumentError("invalid content-length header"); + } + } else if (request3.contentType === null && key.length === 12 && key.toLowerCase() === "content-type") { + request3.contentType = val; + if (skipAppend) + request3.headers[key] = processHeaderValue(key, val, skipAppend); + else + request3.headers += processHeaderValue(key, val); + } else if (key.length === 17 && key.toLowerCase() === "transfer-encoding") { + throw new InvalidArgumentError("invalid transfer-encoding header"); + } else if (key.length === 10 && key.toLowerCase() === "connection") { + const value = typeof val === "string" ? val.toLowerCase() : null; + if (value !== "close" && value !== "keep-alive") { + throw new InvalidArgumentError("invalid connection header"); + } else if (value === "close") { + request3.reset = true; + } + } else if (key.length === 10 && key.toLowerCase() === "keep-alive") { + throw new InvalidArgumentError("invalid keep-alive header"); + } else if (key.length === 7 && key.toLowerCase() === "upgrade") { + throw new InvalidArgumentError("invalid upgrade header"); + } else if (key.length === 6 && key.toLowerCase() === "expect") { + throw new NotSupportedError("expect header not supported"); + } else if (tokenRegExp.exec(key) === null) { + throw new InvalidArgumentError("invalid header key"); + } else { + if (Array.isArray(val)) { + for (let i = 0; i < val.length; i++) { + if (skipAppend) { + if (request3.headers[key]) + request3.headers[key] += `,${processHeaderValue(key, val[i], skipAppend)}`; + else + request3.headers[key] = processHeaderValue(key, val[i], skipAppend); + } else { + request3.headers += processHeaderValue(key, val[i]); + } + } + } else { + if (skipAppend) + request3.headers[key] = processHeaderValue(key, val, skipAppend); + else + request3.headers += processHeaderValue(key, val); + } + } + } + module2.exports = Request; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/dispatcher.js +var require_dispatcher = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/dispatcher.js"(exports2, module2) { + "use strict"; + var EventEmitter = require("events"); + var Dispatcher = class extends EventEmitter { + dispatch() { + throw new Error("not implemented"); + } + close() { + throw new Error("not implemented"); + } + destroy() { + throw new Error("not implemented"); + } + }; + module2.exports = Dispatcher; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/dispatcher-base.js +var require_dispatcher_base = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/dispatcher-base.js"(exports2, module2) { + "use strict"; + var Dispatcher = require_dispatcher(); + var { + ClientDestroyedError, + ClientClosedError, + InvalidArgumentError + } = require_errors(); + var { kDestroy, kClose, kDispatch, kInterceptors } = require_symbols(); + var kDestroyed = Symbol("destroyed"); + var kClosed = Symbol("closed"); + var kOnDestroyed = Symbol("onDestroyed"); + var kOnClosed = Symbol("onClosed"); + var kInterceptedDispatch = Symbol("Intercepted Dispatch"); + var DispatcherBase = class extends Dispatcher { + constructor() { + super(); + this[kDestroyed] = false; + this[kOnDestroyed] = null; + this[kClosed] = false; + this[kOnClosed] = []; + } + get destroyed() { + return this[kDestroyed]; + } + get closed() { + return this[kClosed]; + } + get interceptors() { + return this[kInterceptors]; + } + set interceptors(newInterceptors) { + if (newInterceptors) { + for (let i = newInterceptors.length - 1; i >= 0; i--) { + const interceptor = this[kInterceptors][i]; + if (typeof interceptor !== "function") { + throw new InvalidArgumentError("interceptor must be an function"); + } + } + } + this[kInterceptors] = newInterceptors; + } + close(callback) { + if (callback === void 0) { + return new Promise((resolve, reject) => { + this.close((err, data) => { + return err ? reject(err) : resolve(data); + }); + }); + } + if (typeof callback !== "function") { + throw new InvalidArgumentError("invalid callback"); + } + if (this[kDestroyed]) { + queueMicrotask(() => callback(new ClientDestroyedError(), null)); + return; + } + if (this[kClosed]) { + if (this[kOnClosed]) { + this[kOnClosed].push(callback); + } else { + queueMicrotask(() => callback(null, null)); + } + return; + } + this[kClosed] = true; + this[kOnClosed].push(callback); + const onClosed = () => { + const callbacks = this[kOnClosed]; + this[kOnClosed] = null; + for (let i = 0; i < callbacks.length; i++) { + callbacks[i](null, null); + } + }; + this[kClose]().then(() => this.destroy()).then(() => { + queueMicrotask(onClosed); + }); + } + destroy(err, callback) { + if (typeof err === "function") { + callback = err; + err = null; + } + if (callback === void 0) { + return new Promise((resolve, reject) => { + this.destroy(err, (err2, data) => { + return err2 ? ( + /* istanbul ignore next: should never error */ + reject(err2) + ) : resolve(data); + }); + }); + } + if (typeof callback !== "function") { + throw new InvalidArgumentError("invalid callback"); + } + if (this[kDestroyed]) { + if (this[kOnDestroyed]) { + this[kOnDestroyed].push(callback); + } else { + queueMicrotask(() => callback(null, null)); + } + return; + } + if (!err) { + err = new ClientDestroyedError(); + } + this[kDestroyed] = true; + this[kOnDestroyed] = this[kOnDestroyed] || []; + this[kOnDestroyed].push(callback); + const onDestroyed = () => { + const callbacks = this[kOnDestroyed]; + this[kOnDestroyed] = null; + for (let i = 0; i < callbacks.length; i++) { + callbacks[i](null, null); + } + }; + this[kDestroy](err).then(() => { + queueMicrotask(onDestroyed); + }); + } + [kInterceptedDispatch](opts, handler) { + if (!this[kInterceptors] || this[kInterceptors].length === 0) { + this[kInterceptedDispatch] = this[kDispatch]; + return this[kDispatch](opts, handler); + } + let dispatch = this[kDispatch].bind(this); + for (let i = this[kInterceptors].length - 1; i >= 0; i--) { + dispatch = this[kInterceptors][i](dispatch); + } + this[kInterceptedDispatch] = dispatch; + return dispatch(opts, handler); + } + dispatch(opts, handler) { + if (!handler || typeof handler !== "object") { + throw new InvalidArgumentError("handler must be an object"); + } + try { + if (!opts || typeof opts !== "object") { + throw new InvalidArgumentError("opts must be an object."); + } + if (this[kDestroyed] || this[kOnDestroyed]) { + throw new ClientDestroyedError(); + } + if (this[kClosed]) { + throw new ClientClosedError(); + } + return this[kInterceptedDispatch](opts, handler); + } catch (err) { + if (typeof handler.onError !== "function") { + throw new InvalidArgumentError("invalid onError method"); + } + handler.onError(err); + return false; + } + } + }; + module2.exports = DispatcherBase; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/connect.js +var require_connect = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/core/connect.js"(exports2, module2) { + "use strict"; + var net = require("net"); + var assert = require("assert"); + var util = require_util(); + var { InvalidArgumentError, ConnectTimeoutError } = require_errors(); + var tls; + var SessionCache; + if (global.FinalizationRegistry && !process.env.NODE_V8_COVERAGE) { + SessionCache = class WeakSessionCache { + constructor(maxCachedSessions) { + this._maxCachedSessions = maxCachedSessions; + this._sessionCache = /* @__PURE__ */ new Map(); + this._sessionRegistry = new global.FinalizationRegistry((key) => { + if (this._sessionCache.size < this._maxCachedSessions) { + return; + } + const ref = this._sessionCache.get(key); + if (ref !== void 0 && ref.deref() === void 0) { + this._sessionCache.delete(key); + } + }); + } + get(sessionKey) { + const ref = this._sessionCache.get(sessionKey); + return ref ? ref.deref() : null; + } + set(sessionKey, session) { + if (this._maxCachedSessions === 0) { + return; + } + this._sessionCache.set(sessionKey, new WeakRef(session)); + this._sessionRegistry.register(session, sessionKey); + } + }; + } else { + SessionCache = class SimpleSessionCache { + constructor(maxCachedSessions) { + this._maxCachedSessions = maxCachedSessions; + this._sessionCache = /* @__PURE__ */ new Map(); + } + get(sessionKey) { + return this._sessionCache.get(sessionKey); + } + set(sessionKey, session) { + if (this._maxCachedSessions === 0) { + return; + } + if (this._sessionCache.size >= this._maxCachedSessions) { + const { value: oldestKey } = this._sessionCache.keys().next(); + this._sessionCache.delete(oldestKey); + } + this._sessionCache.set(sessionKey, session); + } + }; + } + function buildConnector({ allowH2, maxCachedSessions, socketPath, timeout, ...opts }) { + if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) { + throw new InvalidArgumentError("maxCachedSessions must be a positive integer or zero"); + } + const options = { path: socketPath, ...opts }; + const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions); + timeout = timeout == null ? 1e4 : timeout; + allowH2 = allowH2 != null ? allowH2 : false; + return function connect({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) { + let socket; + if (protocol === "https:") { + if (!tls) { + tls = require("tls"); + } + servername = servername || options.servername || util.getServerName(host) || null; + const sessionKey = servername || hostname; + const session = sessionCache.get(sessionKey) || null; + assert(sessionKey); + socket = tls.connect({ + highWaterMark: 16384, + // TLS in node can't have bigger HWM anyway... + ...options, + servername, + session, + localAddress, + // TODO(HTTP/2): Add support for h2c + ALPNProtocols: allowH2 ? ["http/1.1", "h2"] : ["http/1.1"], + socket: httpSocket, + // upgrade socket connection + port: port || 443, + host: hostname + }); + socket.on("session", function(session2) { + sessionCache.set(sessionKey, session2); + }); + } else { + assert(!httpSocket, "httpSocket can only be sent on TLS update"); + socket = net.connect({ + highWaterMark: 64 * 1024, + // Same as nodejs fs streams. + ...options, + localAddress, + port: port || 80, + host: hostname + }); + } + if (options.keepAlive == null || options.keepAlive) { + const keepAliveInitialDelay = options.keepAliveInitialDelay === void 0 ? 6e4 : options.keepAliveInitialDelay; + socket.setKeepAlive(true, keepAliveInitialDelay); + } + const cancelTimeout = setupTimeout(() => onConnectTimeout(socket), timeout); + socket.setNoDelay(true).once(protocol === "https:" ? "secureConnect" : "connect", function() { + cancelTimeout(); + if (callback) { + const cb = callback; + callback = null; + cb(null, this); + } + }).on("error", function(err) { + cancelTimeout(); + if (callback) { + const cb = callback; + callback = null; + cb(err); + } + }); + return socket; + }; + } + function setupTimeout(onConnectTimeout2, timeout) { + if (!timeout) { + return () => { + }; + } + let s1 = null; + let s2 = null; + const timeoutId = setTimeout(() => { + s1 = setImmediate(() => { + if (process.platform === "win32") { + s2 = setImmediate(() => onConnectTimeout2()); + } else { + onConnectTimeout2(); + } + }); + }, timeout); + return () => { + clearTimeout(timeoutId); + clearImmediate(s1); + clearImmediate(s2); + }; + } + function onConnectTimeout(socket) { + util.destroy(socket, new ConnectTimeoutError()); + } + module2.exports = buildConnector; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/llhttp/utils.js +var require_utils = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/llhttp/utils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.enumToMap = void 0; + function enumToMap(obj) { + const res = {}; + Object.keys(obj).forEach((key) => { + const value = obj[key]; + if (typeof value === "number") { + res[key] = value; + } + }); + return res; + } + exports2.enumToMap = enumToMap; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/llhttp/constants.js +var require_constants2 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/llhttp/constants.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.SPECIAL_HEADERS = exports2.HEADER_STATE = exports2.MINOR = exports2.MAJOR = exports2.CONNECTION_TOKEN_CHARS = exports2.HEADER_CHARS = exports2.TOKEN = exports2.STRICT_TOKEN = exports2.HEX = exports2.URL_CHAR = exports2.STRICT_URL_CHAR = exports2.USERINFO_CHARS = exports2.MARK = exports2.ALPHANUM = exports2.NUM = exports2.HEX_MAP = exports2.NUM_MAP = exports2.ALPHA = exports2.FINISH = exports2.H_METHOD_MAP = exports2.METHOD_MAP = exports2.METHODS_RTSP = exports2.METHODS_ICE = exports2.METHODS_HTTP = exports2.METHODS = exports2.LENIENT_FLAGS = exports2.FLAGS = exports2.TYPE = exports2.ERROR = void 0; + var utils_1 = require_utils(); + var ERROR; + (function(ERROR2) { + ERROR2[ERROR2["OK"] = 0] = "OK"; + ERROR2[ERROR2["INTERNAL"] = 1] = "INTERNAL"; + ERROR2[ERROR2["STRICT"] = 2] = "STRICT"; + ERROR2[ERROR2["LF_EXPECTED"] = 3] = "LF_EXPECTED"; + ERROR2[ERROR2["UNEXPECTED_CONTENT_LENGTH"] = 4] = "UNEXPECTED_CONTENT_LENGTH"; + ERROR2[ERROR2["CLOSED_CONNECTION"] = 5] = "CLOSED_CONNECTION"; + ERROR2[ERROR2["INVALID_METHOD"] = 6] = "INVALID_METHOD"; + ERROR2[ERROR2["INVALID_URL"] = 7] = "INVALID_URL"; + ERROR2[ERROR2["INVALID_CONSTANT"] = 8] = "INVALID_CONSTANT"; + ERROR2[ERROR2["INVALID_VERSION"] = 9] = "INVALID_VERSION"; + ERROR2[ERROR2["INVALID_HEADER_TOKEN"] = 10] = "INVALID_HEADER_TOKEN"; + ERROR2[ERROR2["INVALID_CONTENT_LENGTH"] = 11] = "INVALID_CONTENT_LENGTH"; + ERROR2[ERROR2["INVALID_CHUNK_SIZE"] = 12] = "INVALID_CHUNK_SIZE"; + ERROR2[ERROR2["INVALID_STATUS"] = 13] = "INVALID_STATUS"; + ERROR2[ERROR2["INVALID_EOF_STATE"] = 14] = "INVALID_EOF_STATE"; + ERROR2[ERROR2["INVALID_TRANSFER_ENCODING"] = 15] = "INVALID_TRANSFER_ENCODING"; + ERROR2[ERROR2["CB_MESSAGE_BEGIN"] = 16] = "CB_MESSAGE_BEGIN"; + ERROR2[ERROR2["CB_HEADERS_COMPLETE"] = 17] = "CB_HEADERS_COMPLETE"; + ERROR2[ERROR2["CB_MESSAGE_COMPLETE"] = 18] = "CB_MESSAGE_COMPLETE"; + ERROR2[ERROR2["CB_CHUNK_HEADER"] = 19] = "CB_CHUNK_HEADER"; + ERROR2[ERROR2["CB_CHUNK_COMPLETE"] = 20] = "CB_CHUNK_COMPLETE"; + ERROR2[ERROR2["PAUSED"] = 21] = "PAUSED"; + ERROR2[ERROR2["PAUSED_UPGRADE"] = 22] = "PAUSED_UPGRADE"; + ERROR2[ERROR2["PAUSED_H2_UPGRADE"] = 23] = "PAUSED_H2_UPGRADE"; + ERROR2[ERROR2["USER"] = 24] = "USER"; + })(ERROR = exports2.ERROR || (exports2.ERROR = {})); + var TYPE; + (function(TYPE2) { + TYPE2[TYPE2["BOTH"] = 0] = "BOTH"; + TYPE2[TYPE2["REQUEST"] = 1] = "REQUEST"; + TYPE2[TYPE2["RESPONSE"] = 2] = "RESPONSE"; + })(TYPE = exports2.TYPE || (exports2.TYPE = {})); + var FLAGS; + (function(FLAGS2) { + FLAGS2[FLAGS2["CONNECTION_KEEP_ALIVE"] = 1] = "CONNECTION_KEEP_ALIVE"; + FLAGS2[FLAGS2["CONNECTION_CLOSE"] = 2] = "CONNECTION_CLOSE"; + FLAGS2[FLAGS2["CONNECTION_UPGRADE"] = 4] = "CONNECTION_UPGRADE"; + FLAGS2[FLAGS2["CHUNKED"] = 8] = "CHUNKED"; + FLAGS2[FLAGS2["UPGRADE"] = 16] = "UPGRADE"; + FLAGS2[FLAGS2["CONTENT_LENGTH"] = 32] = "CONTENT_LENGTH"; + FLAGS2[FLAGS2["SKIPBODY"] = 64] = "SKIPBODY"; + FLAGS2[FLAGS2["TRAILING"] = 128] = "TRAILING"; + FLAGS2[FLAGS2["TRANSFER_ENCODING"] = 512] = "TRANSFER_ENCODING"; + })(FLAGS = exports2.FLAGS || (exports2.FLAGS = {})); + var LENIENT_FLAGS; + (function(LENIENT_FLAGS2) { + LENIENT_FLAGS2[LENIENT_FLAGS2["HEADERS"] = 1] = "HEADERS"; + LENIENT_FLAGS2[LENIENT_FLAGS2["CHUNKED_LENGTH"] = 2] = "CHUNKED_LENGTH"; + LENIENT_FLAGS2[LENIENT_FLAGS2["KEEP_ALIVE"] = 4] = "KEEP_ALIVE"; + })(LENIENT_FLAGS = exports2.LENIENT_FLAGS || (exports2.LENIENT_FLAGS = {})); + var METHODS; + (function(METHODS2) { + METHODS2[METHODS2["DELETE"] = 0] = "DELETE"; + METHODS2[METHODS2["GET"] = 1] = "GET"; + METHODS2[METHODS2["HEAD"] = 2] = "HEAD"; + METHODS2[METHODS2["POST"] = 3] = "POST"; + METHODS2[METHODS2["PUT"] = 4] = "PUT"; + METHODS2[METHODS2["CONNECT"] = 5] = "CONNECT"; + METHODS2[METHODS2["OPTIONS"] = 6] = "OPTIONS"; + METHODS2[METHODS2["TRACE"] = 7] = "TRACE"; + METHODS2[METHODS2["COPY"] = 8] = "COPY"; + METHODS2[METHODS2["LOCK"] = 9] = "LOCK"; + METHODS2[METHODS2["MKCOL"] = 10] = "MKCOL"; + METHODS2[METHODS2["MOVE"] = 11] = "MOVE"; + METHODS2[METHODS2["PROPFIND"] = 12] = "PROPFIND"; + METHODS2[METHODS2["PROPPATCH"] = 13] = "PROPPATCH"; + METHODS2[METHODS2["SEARCH"] = 14] = "SEARCH"; + METHODS2[METHODS2["UNLOCK"] = 15] = "UNLOCK"; + METHODS2[METHODS2["BIND"] = 16] = "BIND"; + METHODS2[METHODS2["REBIND"] = 17] = "REBIND"; + METHODS2[METHODS2["UNBIND"] = 18] = "UNBIND"; + METHODS2[METHODS2["ACL"] = 19] = "ACL"; + METHODS2[METHODS2["REPORT"] = 20] = "REPORT"; + METHODS2[METHODS2["MKACTIVITY"] = 21] = "MKACTIVITY"; + METHODS2[METHODS2["CHECKOUT"] = 22] = "CHECKOUT"; + METHODS2[METHODS2["MERGE"] = 23] = "MERGE"; + METHODS2[METHODS2["M-SEARCH"] = 24] = "M-SEARCH"; + METHODS2[METHODS2["NOTIFY"] = 25] = "NOTIFY"; + METHODS2[METHODS2["SUBSCRIBE"] = 26] = "SUBSCRIBE"; + METHODS2[METHODS2["UNSUBSCRIBE"] = 27] = "UNSUBSCRIBE"; + METHODS2[METHODS2["PATCH"] = 28] = "PATCH"; + METHODS2[METHODS2["PURGE"] = 29] = "PURGE"; + METHODS2[METHODS2["MKCALENDAR"] = 30] = "MKCALENDAR"; + METHODS2[METHODS2["LINK"] = 31] = "LINK"; + METHODS2[METHODS2["UNLINK"] = 32] = "UNLINK"; + METHODS2[METHODS2["SOURCE"] = 33] = "SOURCE"; + METHODS2[METHODS2["PRI"] = 34] = "PRI"; + METHODS2[METHODS2["DESCRIBE"] = 35] = "DESCRIBE"; + METHODS2[METHODS2["ANNOUNCE"] = 36] = "ANNOUNCE"; + METHODS2[METHODS2["SETUP"] = 37] = "SETUP"; + METHODS2[METHODS2["PLAY"] = 38] = "PLAY"; + METHODS2[METHODS2["PAUSE"] = 39] = "PAUSE"; + METHODS2[METHODS2["TEARDOWN"] = 40] = "TEARDOWN"; + METHODS2[METHODS2["GET_PARAMETER"] = 41] = "GET_PARAMETER"; + METHODS2[METHODS2["SET_PARAMETER"] = 42] = "SET_PARAMETER"; + METHODS2[METHODS2["REDIRECT"] = 43] = "REDIRECT"; + METHODS2[METHODS2["RECORD"] = 44] = "RECORD"; + METHODS2[METHODS2["FLUSH"] = 45] = "FLUSH"; + })(METHODS = exports2.METHODS || (exports2.METHODS = {})); + exports2.METHODS_HTTP = [ + METHODS.DELETE, + METHODS.GET, + METHODS.HEAD, + METHODS.POST, + METHODS.PUT, + METHODS.CONNECT, + METHODS.OPTIONS, + METHODS.TRACE, + METHODS.COPY, + METHODS.LOCK, + METHODS.MKCOL, + METHODS.MOVE, + METHODS.PROPFIND, + METHODS.PROPPATCH, + METHODS.SEARCH, + METHODS.UNLOCK, + METHODS.BIND, + METHODS.REBIND, + METHODS.UNBIND, + METHODS.ACL, + METHODS.REPORT, + METHODS.MKACTIVITY, + METHODS.CHECKOUT, + METHODS.MERGE, + METHODS["M-SEARCH"], + METHODS.NOTIFY, + METHODS.SUBSCRIBE, + METHODS.UNSUBSCRIBE, + METHODS.PATCH, + METHODS.PURGE, + METHODS.MKCALENDAR, + METHODS.LINK, + METHODS.UNLINK, + METHODS.PRI, + // TODO(indutny): should we allow it with HTTP? + METHODS.SOURCE + ]; + exports2.METHODS_ICE = [ + METHODS.SOURCE + ]; + exports2.METHODS_RTSP = [ + METHODS.OPTIONS, + METHODS.DESCRIBE, + METHODS.ANNOUNCE, + METHODS.SETUP, + METHODS.PLAY, + METHODS.PAUSE, + METHODS.TEARDOWN, + METHODS.GET_PARAMETER, + METHODS.SET_PARAMETER, + METHODS.REDIRECT, + METHODS.RECORD, + METHODS.FLUSH, + // For AirPlay + METHODS.GET, + METHODS.POST + ]; + exports2.METHOD_MAP = utils_1.enumToMap(METHODS); + exports2.H_METHOD_MAP = {}; + Object.keys(exports2.METHOD_MAP).forEach((key) => { + if (/^H/.test(key)) { + exports2.H_METHOD_MAP[key] = exports2.METHOD_MAP[key]; + } + }); + var FINISH; + (function(FINISH2) { + FINISH2[FINISH2["SAFE"] = 0] = "SAFE"; + FINISH2[FINISH2["SAFE_WITH_CB"] = 1] = "SAFE_WITH_CB"; + FINISH2[FINISH2["UNSAFE"] = 2] = "UNSAFE"; + })(FINISH = exports2.FINISH || (exports2.FINISH = {})); + exports2.ALPHA = []; + for (let i = "A".charCodeAt(0); i <= "Z".charCodeAt(0); i++) { + exports2.ALPHA.push(String.fromCharCode(i)); + exports2.ALPHA.push(String.fromCharCode(i + 32)); + } + exports2.NUM_MAP = { + 0: 0, + 1: 1, + 2: 2, + 3: 3, + 4: 4, + 5: 5, + 6: 6, + 7: 7, + 8: 8, + 9: 9 + }; + exports2.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 + }; + exports2.NUM = [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ]; + exports2.ALPHANUM = exports2.ALPHA.concat(exports2.NUM); + exports2.MARK = ["-", "_", ".", "!", "~", "*", "'", "(", ")"]; + exports2.USERINFO_CHARS = exports2.ALPHANUM.concat(exports2.MARK).concat(["%", ";", ":", "&", "=", "+", "$", ","]); + exports2.STRICT_URL_CHAR = [ + "!", + '"', + "$", + "%", + "&", + "'", + "(", + ")", + "*", + "+", + ",", + "-", + ".", + "/", + ":", + ";", + "<", + "=", + ">", + "@", + "[", + "\\", + "]", + "^", + "_", + "`", + "{", + "|", + "}", + "~" + ].concat(exports2.ALPHANUM); + exports2.URL_CHAR = exports2.STRICT_URL_CHAR.concat([" ", "\f"]); + for (let i = 128; i <= 255; i++) { + exports2.URL_CHAR.push(i); + } + exports2.HEX = exports2.NUM.concat(["a", "b", "c", "d", "e", "f", "A", "B", "C", "D", "E", "F"]); + exports2.STRICT_TOKEN = [ + "!", + "#", + "$", + "%", + "&", + "'", + "*", + "+", + "-", + ".", + "^", + "_", + "`", + "|", + "~" + ].concat(exports2.ALPHANUM); + exports2.TOKEN = exports2.STRICT_TOKEN.concat([" "]); + exports2.HEADER_CHARS = [" "]; + for (let i = 32; i <= 255; i++) { + if (i !== 127) { + exports2.HEADER_CHARS.push(i); + } + } + exports2.CONNECTION_TOKEN_CHARS = exports2.HEADER_CHARS.filter((c) => c !== 44); + exports2.MAJOR = exports2.NUM_MAP; + exports2.MINOR = exports2.MAJOR; + var HEADER_STATE; + (function(HEADER_STATE2) { + HEADER_STATE2[HEADER_STATE2["GENERAL"] = 0] = "GENERAL"; + HEADER_STATE2[HEADER_STATE2["CONNECTION"] = 1] = "CONNECTION"; + HEADER_STATE2[HEADER_STATE2["CONTENT_LENGTH"] = 2] = "CONTENT_LENGTH"; + HEADER_STATE2[HEADER_STATE2["TRANSFER_ENCODING"] = 3] = "TRANSFER_ENCODING"; + HEADER_STATE2[HEADER_STATE2["UPGRADE"] = 4] = "UPGRADE"; + HEADER_STATE2[HEADER_STATE2["CONNECTION_KEEP_ALIVE"] = 5] = "CONNECTION_KEEP_ALIVE"; + HEADER_STATE2[HEADER_STATE2["CONNECTION_CLOSE"] = 6] = "CONNECTION_CLOSE"; + HEADER_STATE2[HEADER_STATE2["CONNECTION_UPGRADE"] = 7] = "CONNECTION_UPGRADE"; + HEADER_STATE2[HEADER_STATE2["TRANSFER_ENCODING_CHUNKED"] = 8] = "TRANSFER_ENCODING_CHUNKED"; + })(HEADER_STATE = exports2.HEADER_STATE || (exports2.HEADER_STATE = {})); + exports2.SPECIAL_HEADERS = { + "connection": HEADER_STATE.CONNECTION, + "content-length": HEADER_STATE.CONTENT_LENGTH, + "proxy-connection": HEADER_STATE.CONNECTION, + "transfer-encoding": HEADER_STATE.TRANSFER_ENCODING, + "upgrade": HEADER_STATE.UPGRADE + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/handler/RedirectHandler.js +var require_RedirectHandler = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/handler/RedirectHandler.js"(exports2, module2) { + "use strict"; + var util = require_util(); + var { kBodyUsed } = require_symbols(); + var assert = require("assert"); + var { InvalidArgumentError } = require_errors(); + var EE = require("events"); + var redirectableStatusCodes = [300, 301, 302, 303, 307, 308]; + var kBody = Symbol("body"); + var BodyAsyncIterable = class { + constructor(body) { + this[kBody] = body; + this[kBodyUsed] = false; + } + async *[Symbol.asyncIterator]() { + assert(!this[kBodyUsed], "disturbed"); + this[kBodyUsed] = true; + yield* this[kBody]; + } + }; + var RedirectHandler = class { + constructor(dispatch, maxRedirections, opts, handler) { + if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { + throw new InvalidArgumentError("maxRedirections must be a positive number"); + } + util.validateHandler(handler, opts.method, opts.upgrade); + this.dispatch = dispatch; + this.location = null; + this.abort = null; + this.opts = { ...opts, maxRedirections: 0 }; + this.maxRedirections = maxRedirections; + this.handler = handler; + this.history = []; + if (util.isStream(this.opts.body)) { + if (util.bodyLength(this.opts.body) === 0) { + this.opts.body.on("data", function() { + assert(false); + }); + } + if (typeof this.opts.body.readableDidRead !== "boolean") { + this.opts.body[kBodyUsed] = false; + EE.prototype.on.call(this.opts.body, "data", function() { + this[kBodyUsed] = true; + }); + } + } else if (this.opts.body && typeof this.opts.body.pipeTo === "function") { + this.opts.body = new BodyAsyncIterable(this.opts.body); + } else if (this.opts.body && typeof this.opts.body !== "string" && !ArrayBuffer.isView(this.opts.body) && util.isIterable(this.opts.body)) { + this.opts.body = new BodyAsyncIterable(this.opts.body); + } + } + onConnect(abort) { + this.abort = abort; + this.handler.onConnect(abort, { history: this.history }); + } + onUpgrade(statusCode, headers, socket) { + this.handler.onUpgrade(statusCode, headers, socket); + } + onError(error) { + this.handler.onError(error); + } + onHeaders(statusCode, headers, resume, statusText) { + this.location = this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body) ? null : parseLocation(statusCode, headers); + if (this.opts.origin) { + this.history.push(new URL(this.opts.path, this.opts.origin)); + } + if (!this.location) { + return this.handler.onHeaders(statusCode, headers, resume, statusText); + } + const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin))); + const path = search ? `${pathname}${search}` : pathname; + this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin); + this.opts.path = path; + this.opts.origin = origin; + this.opts.maxRedirections = 0; + this.opts.query = null; + if (statusCode === 303 && this.opts.method !== "HEAD") { + this.opts.method = "GET"; + this.opts.body = null; + } + } + onData(chunk) { + if (this.location) { + } else { + return this.handler.onData(chunk); + } + } + onComplete(trailers) { + if (this.location) { + this.location = null; + this.abort = null; + this.dispatch(this.opts, this); + } else { + this.handler.onComplete(trailers); + } + } + onBodySent(chunk) { + if (this.handler.onBodySent) { + this.handler.onBodySent(chunk); + } + } + }; + function parseLocation(statusCode, headers) { + if (redirectableStatusCodes.indexOf(statusCode) === -1) { + return null; + } + for (let i = 0; i < headers.length; i += 2) { + if (headers[i].toString().toLowerCase() === "location") { + return headers[i + 1]; + } + } + } + function shouldRemoveHeader(header, removeContent, unknownOrigin) { + return header.length === 4 && header.toString().toLowerCase() === "host" || removeContent && header.toString().toLowerCase().indexOf("content-") === 0 || unknownOrigin && header.length === 13 && header.toString().toLowerCase() === "authorization" || unknownOrigin && header.length === 6 && header.toString().toLowerCase() === "cookie"; + } + function cleanRequestHeaders(headers, removeContent, unknownOrigin) { + const ret = []; + if (Array.isArray(headers)) { + for (let i = 0; i < headers.length; i += 2) { + if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) { + ret.push(headers[i], headers[i + 1]); + } + } + } else if (headers && typeof headers === "object") { + for (const key of Object.keys(headers)) { + if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) { + ret.push(key, headers[key]); + } + } + } else { + assert(headers == null, "headers must be an object or an array"); + } + return ret; + } + module2.exports = RedirectHandler; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/interceptor/redirectInterceptor.js +var require_redirectInterceptor = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/interceptor/redirectInterceptor.js"(exports2, module2) { + "use strict"; + var RedirectHandler = require_RedirectHandler(); + function createRedirectInterceptor({ maxRedirections: defaultMaxRedirections }) { + return (dispatch) => { + return function Intercept(opts, handler) { + const { maxRedirections = defaultMaxRedirections } = opts; + if (!maxRedirections) { + return dispatch(opts, handler); + } + const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler); + opts = { ...opts, maxRedirections: 0 }; + return dispatch(opts, redirectHandler); + }; + }; + } + module2.exports = createRedirectInterceptor; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/llhttp/llhttp-wasm.js +var require_llhttp_wasm = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/llhttp/llhttp-wasm.js"(exports2, module2) { + module2.exports = "AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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ADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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FCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAU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YWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8="; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +var require_llhttp_simd_wasm = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js"(exports2, module2) { + module2.exports = "AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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IAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw=="; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/client.js +var require_client = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/client.js"(exports2, module2) { + "use strict"; + var assert = require("assert"); + var net = require("net"); + var http = require("http"); + var { pipeline } = require("stream"); + var util = require_util(); + var timers = require_timers(); + var Request = require_request(); + var DispatcherBase = require_dispatcher_base(); + var { + RequestContentLengthMismatchError, + ResponseContentLengthMismatchError, + InvalidArgumentError, + RequestAbortedError, + HeadersTimeoutError, + HeadersOverflowError, + SocketError, + InformationalError, + BodyTimeoutError, + HTTPParserError, + ResponseExceededMaxSizeError, + ClientDestroyedError + } = require_errors(); + var buildConnector = require_connect(); + var { + kUrl, + kReset, + kServerName, + kClient, + kBusy, + kParser, + kConnect, + kBlocking, + kResuming, + kRunning, + kPending, + kSize, + kWriting, + kQueue, + kConnected, + kConnecting, + kNeedDrain, + kNoRef, + kKeepAliveDefaultTimeout, + kHostHeader, + kPendingIdx, + kRunningIdx, + kError, + kPipelining, + kSocket, + kKeepAliveTimeoutValue, + kMaxHeadersSize, + kKeepAliveMaxTimeout, + kKeepAliveTimeoutThreshold, + kHeadersTimeout, + kBodyTimeout, + kStrictContentLength, + kConnector, + kMaxRedirections, + kMaxRequests, + kCounter, + kClose, + kDestroy, + kDispatch, + kInterceptors, + kLocalAddress, + kMaxResponseSize, + kHTTPConnVersion, + // HTTP2 + kHost, + kHTTP2Session, + kHTTP2SessionState, + kHTTP2BuildRequest, + kHTTP2CopyHeaders, + kHTTP1BuildRequest + } = require_symbols(); + var http2; + try { + http2 = require("http2"); + } catch { + http2 = { constants: {} }; + } + var { + constants: { + HTTP2_HEADER_AUTHORITY, + HTTP2_HEADER_METHOD, + HTTP2_HEADER_PATH, + HTTP2_HEADER_SCHEME, + HTTP2_HEADER_CONTENT_LENGTH, + HTTP2_HEADER_EXPECT, + HTTP2_HEADER_STATUS + } + } = http2; + var h2ExperimentalWarned = false; + var FastBuffer = Buffer[Symbol.species]; + var kClosedResolve = Symbol("kClosedResolve"); + var channels = {}; + try { + const diagnosticsChannel = require("diagnostics_channel"); + channels.sendHeaders = diagnosticsChannel.channel("undici:client:sendHeaders"); + channels.beforeConnect = diagnosticsChannel.channel("undici:client:beforeConnect"); + channels.connectError = diagnosticsChannel.channel("undici:client:connectError"); + channels.connected = diagnosticsChannel.channel("undici:client:connected"); + } catch { + channels.sendHeaders = { hasSubscribers: false }; + channels.beforeConnect = { hasSubscribers: false }; + channels.connectError = { hasSubscribers: false }; + channels.connected = { hasSubscribers: false }; + } + var Client = class extends DispatcherBase { + /** + * + * @param {string|URL} url + * @param {import('../types/client').Client.Options} options + */ + constructor(url, { + interceptors, + maxHeaderSize, + headersTimeout, + socketTimeout, + requestTimeout, + connectTimeout, + bodyTimeout, + idleTimeout, + keepAlive, + keepAliveTimeout, + maxKeepAliveTimeout, + keepAliveMaxTimeout, + keepAliveTimeoutThreshold, + socketPath, + pipelining, + tls, + strictContentLength, + maxCachedSessions, + maxRedirections, + connect: connect2, + maxRequestsPerClient, + localAddress, + maxResponseSize, + autoSelectFamily, + autoSelectFamilyAttemptTimeout, + // h2 + allowH2, + maxConcurrentStreams + } = {}) { + super(); + if (keepAlive !== void 0) { + throw new InvalidArgumentError("unsupported keepAlive, use pipelining=0 instead"); + } + if (socketTimeout !== void 0) { + throw new InvalidArgumentError("unsupported socketTimeout, use headersTimeout & bodyTimeout instead"); + } + if (requestTimeout !== void 0) { + throw new InvalidArgumentError("unsupported requestTimeout, use headersTimeout & bodyTimeout instead"); + } + if (idleTimeout !== void 0) { + throw new InvalidArgumentError("unsupported idleTimeout, use keepAliveTimeout instead"); + } + if (maxKeepAliveTimeout !== void 0) { + throw new InvalidArgumentError("unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead"); + } + if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) { + throw new InvalidArgumentError("invalid maxHeaderSize"); + } + if (socketPath != null && typeof socketPath !== "string") { + throw new InvalidArgumentError("invalid socketPath"); + } + if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) { + throw new InvalidArgumentError("invalid connectTimeout"); + } + if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) { + throw new InvalidArgumentError("invalid keepAliveTimeout"); + } + if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) { + throw new InvalidArgumentError("invalid keepAliveMaxTimeout"); + } + if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) { + throw new InvalidArgumentError("invalid keepAliveTimeoutThreshold"); + } + if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) { + throw new InvalidArgumentError("headersTimeout must be a positive integer or zero"); + } + if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) { + throw new InvalidArgumentError("bodyTimeout must be a positive integer or zero"); + } + if (connect2 != null && typeof connect2 !== "function" && typeof connect2 !== "object") { + throw new InvalidArgumentError("connect must be a function or an object"); + } + if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { + throw new InvalidArgumentError("maxRedirections must be a positive number"); + } + if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) { + throw new InvalidArgumentError("maxRequestsPerClient must be a positive number"); + } + if (localAddress != null && (typeof localAddress !== "string" || net.isIP(localAddress) === 0)) { + throw new InvalidArgumentError("localAddress must be valid string IP address"); + } + if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) { + throw new InvalidArgumentError("maxResponseSize must be a positive number"); + } + if (autoSelectFamilyAttemptTimeout != null && (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1)) { + throw new InvalidArgumentError("autoSelectFamilyAttemptTimeout must be a positive number"); + } + if (allowH2 != null && typeof allowH2 !== "boolean") { + throw new InvalidArgumentError("allowH2 must be a valid boolean value"); + } + if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== "number" || maxConcurrentStreams < 1)) { + throw new InvalidArgumentError("maxConcurrentStreams must be a possitive integer, greater than 0"); + } + if (typeof connect2 !== "function") { + connect2 = buildConnector({ + ...tls, + maxCachedSessions, + allowH2, + socketPath, + timeout: connectTimeout, + ...util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0, + ...connect2 + }); + } + this[kInterceptors] = interceptors && interceptors.Client && Array.isArray(interceptors.Client) ? interceptors.Client : [createRedirectInterceptor({ maxRedirections })]; + this[kUrl] = util.parseOrigin(url); + this[kConnector] = connect2; + this[kSocket] = null; + this[kPipelining] = pipelining != null ? pipelining : 1; + this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize; + this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout; + this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 6e5 : keepAliveMaxTimeout; + this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold; + this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout]; + this[kServerName] = null; + this[kLocalAddress] = localAddress != null ? localAddress : null; + this[kResuming] = 0; + this[kNeedDrain] = 0; + this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ""}\r +`; + this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 3e5; + this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 3e5; + this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength; + this[kMaxRedirections] = maxRedirections; + this[kMaxRequests] = maxRequestsPerClient; + this[kClosedResolve] = null; + this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1; + this[kHTTPConnVersion] = "h1"; + this[kHTTP2Session] = null; + this[kHTTP2SessionState] = !allowH2 ? null : { + // streams: null, // Fixed queue of streams - For future support of `push` + openStreams: 0, + // Keep track of them to decide wether or not unref the session + maxConcurrentStreams: maxConcurrentStreams != null ? maxConcurrentStreams : 100 + // Max peerConcurrentStreams for a Node h2 server + }; + this[kHost] = `${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ""}`; + this[kQueue] = []; + this[kRunningIdx] = 0; + this[kPendingIdx] = 0; + } + get pipelining() { + return this[kPipelining]; + } + set pipelining(value) { + this[kPipelining] = value; + resume(this, true); + } + get [kPending]() { + return this[kQueue].length - this[kPendingIdx]; + } + get [kRunning]() { + return this[kPendingIdx] - this[kRunningIdx]; + } + get [kSize]() { + return this[kQueue].length - this[kRunningIdx]; + } + get [kConnected]() { + return !!this[kSocket] && !this[kConnecting] && !this[kSocket].destroyed; + } + get [kBusy]() { + const socket = this[kSocket]; + return socket && (socket[kReset] || socket[kWriting] || socket[kBlocking]) || this[kSize] >= (this[kPipelining] || 1) || this[kPending] > 0; + } + /* istanbul ignore: only used for test */ + [kConnect](cb) { + connect(this); + this.once("connect", cb); + } + [kDispatch](opts, handler) { + const origin = opts.origin || this[kUrl].origin; + const request3 = this[kHTTPConnVersion] === "h2" ? Request[kHTTP2BuildRequest](origin, opts, handler) : Request[kHTTP1BuildRequest](origin, opts, handler); + this[kQueue].push(request3); + if (this[kResuming]) { + } else if (util.bodyLength(request3.body) == null && util.isIterable(request3.body)) { + this[kResuming] = 1; + process.nextTick(resume, this); + } else { + resume(this, true); + } + if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) { + this[kNeedDrain] = 2; + } + return this[kNeedDrain] < 2; + } + async [kClose]() { + return new Promise((resolve) => { + if (!this[kSize]) { + resolve(null); + } else { + this[kClosedResolve] = resolve; + } + }); + } + async [kDestroy](err) { + return new Promise((resolve) => { + const requests = this[kQueue].splice(this[kPendingIdx]); + for (let i = 0; i < requests.length; i++) { + const request3 = requests[i]; + errorRequest(this, request3, err); + } + const callback = () => { + if (this[kClosedResolve]) { + this[kClosedResolve](); + this[kClosedResolve] = null; + } + resolve(); + }; + if (this[kHTTP2Session] != null) { + util.destroy(this[kHTTP2Session], err); + this[kHTTP2Session] = null; + this[kHTTP2SessionState] = null; + } + if (!this[kSocket]) { + queueMicrotask(callback); + } else { + util.destroy(this[kSocket].on("close", callback), err); + } + resume(this); + }); + } + }; + function onHttp2SessionError(err) { + assert(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID"); + this[kSocket][kError] = err; + onError(this[kClient], err); + } + function onHttp2FrameError(type, code, id) { + const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`); + if (id === 0) { + this[kSocket][kError] = err; + onError(this[kClient], err); + } + } + function onHttp2SessionEnd() { + util.destroy(this, new SocketError("other side closed")); + util.destroy(this[kSocket], new SocketError("other side closed")); + } + function onHTTP2GoAway(code) { + const client = this[kClient]; + const err = new InformationalError(`HTTP/2: "GOAWAY" frame received with code ${code}`); + client[kSocket] = null; + client[kHTTP2Session] = null; + if (client.destroyed) { + assert(this[kPending] === 0); + const requests = client[kQueue].splice(client[kRunningIdx]); + for (let i = 0; i < requests.length; i++) { + const request3 = requests[i]; + errorRequest(this, request3, err); + } + } else if (client[kRunning] > 0) { + const request3 = client[kQueue][client[kRunningIdx]]; + client[kQueue][client[kRunningIdx]++] = null; + errorRequest(client, request3, err); + } + client[kPendingIdx] = client[kRunningIdx]; + assert(client[kRunning] === 0); + client.emit( + "disconnect", + client[kUrl], + [client], + err + ); + resume(client); + } + var constants = require_constants2(); + var createRedirectInterceptor = require_redirectInterceptor(); + var EMPTY_BUF = Buffer.alloc(0); + async function lazyllhttp() { + const llhttpWasmData = process.env.JEST_WORKER_ID ? require_llhttp_wasm() : void 0; + let mod; + try { + mod = await WebAssembly.compile(Buffer.from(require_llhttp_simd_wasm(), "base64")); + } catch (e) { + mod = await WebAssembly.compile(Buffer.from(llhttpWasmData || require_llhttp_wasm(), "base64")); + } + return await WebAssembly.instantiate(mod, { + env: { + /* eslint-disable camelcase */ + wasm_on_url: (p, at, len) => { + return 0; + }, + wasm_on_status: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p); + const start = at - currentBufferPtr + currentBufferRef.byteOffset; + return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0; + }, + wasm_on_message_begin: (p) => { + assert.strictEqual(currentParser.ptr, p); + return currentParser.onMessageBegin() || 0; + }, + wasm_on_header_field: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p); + const start = at - currentBufferPtr + currentBufferRef.byteOffset; + return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0; + }, + wasm_on_header_value: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p); + const start = at - currentBufferPtr + currentBufferRef.byteOffset; + return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0; + }, + wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => { + assert.strictEqual(currentParser.ptr, p); + return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0; + }, + wasm_on_body: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p); + const start = at - currentBufferPtr + currentBufferRef.byteOffset; + return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0; + }, + wasm_on_message_complete: (p) => { + assert.strictEqual(currentParser.ptr, p); + return currentParser.onMessageComplete() || 0; + } + /* eslint-enable camelcase */ + } + }); + } + var llhttpInstance = null; + var llhttpPromise = lazyllhttp(); + llhttpPromise.catch(); + var currentParser = null; + var currentBufferRef = null; + var currentBufferSize = 0; + var currentBufferPtr = null; + var TIMEOUT_HEADERS = 1; + var TIMEOUT_BODY = 2; + var TIMEOUT_IDLE = 3; + var Parser = class { + constructor(client, socket, { exports: exports3 }) { + assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0); + this.llhttp = exports3; + this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE); + this.client = client; + this.socket = socket; + this.timeout = null; + this.timeoutValue = null; + this.timeoutType = null; + this.statusCode = null; + this.statusText = ""; + this.upgrade = false; + this.headers = []; + this.headersSize = 0; + this.headersMaxSize = client[kMaxHeadersSize]; + this.shouldKeepAlive = false; + this.paused = false; + this.resume = this.resume.bind(this); + this.bytesRead = 0; + this.keepAlive = ""; + this.contentLength = ""; + this.connection = ""; + this.maxResponseSize = client[kMaxResponseSize]; + } + setTimeout(value, type) { + this.timeoutType = type; + if (value !== this.timeoutValue) { + timers.clearTimeout(this.timeout); + if (value) { + this.timeout = timers.setTimeout(onParserTimeout, value, this); + if (this.timeout.unref) { + this.timeout.unref(); + } + } else { + this.timeout = null; + } + this.timeoutValue = value; + } else if (this.timeout) { + if (this.timeout.refresh) { + this.timeout.refresh(); + } + } + } + resume() { + if (this.socket.destroyed || !this.paused) { + return; + } + assert(this.ptr != null); + assert(currentParser == null); + this.llhttp.llhttp_resume(this.ptr); + assert(this.timeoutType === TIMEOUT_BODY); + if (this.timeout) { + if (this.timeout.refresh) { + this.timeout.refresh(); + } + } + this.paused = false; + this.execute(this.socket.read() || EMPTY_BUF); + this.readMore(); + } + readMore() { + while (!this.paused && this.ptr) { + const chunk = this.socket.read(); + if (chunk === null) { + break; + } + this.execute(chunk); + } + } + execute(data) { + assert(this.ptr != null); + assert(currentParser == null); + assert(!this.paused); + const { socket, llhttp } = this; + if (data.length > currentBufferSize) { + if (currentBufferPtr) { + llhttp.free(currentBufferPtr); + } + currentBufferSize = Math.ceil(data.length / 4096) * 4096; + currentBufferPtr = llhttp.malloc(currentBufferSize); + } + new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data); + try { + let ret; + try { + currentBufferRef = data; + currentParser = this; + ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length); + } catch (err) { + throw err; + } finally { + currentParser = null; + currentBufferRef = null; + } + const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr; + if (ret === constants.ERROR.PAUSED_UPGRADE) { + this.onUpgrade(data.slice(offset)); + } else if (ret === constants.ERROR.PAUSED) { + this.paused = true; + socket.unshift(data.slice(offset)); + } else if (ret !== constants.ERROR.OK) { + const ptr = llhttp.llhttp_get_error_reason(this.ptr); + let message = ""; + if (ptr) { + const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0); + message = "Response does not match the HTTP/1.1 protocol (" + Buffer.from(llhttp.memory.buffer, ptr, len).toString() + ")"; + } + throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset)); + } + } catch (err) { + util.destroy(socket, err); + } + } + destroy() { + assert(this.ptr != null); + assert(currentParser == null); + this.llhttp.llhttp_free(this.ptr); + this.ptr = null; + timers.clearTimeout(this.timeout); + this.timeout = null; + this.timeoutValue = null; + this.timeoutType = null; + this.paused = false; + } + onStatus(buf) { + this.statusText = buf.toString(); + } + onMessageBegin() { + const { socket, client } = this; + if (socket.destroyed) { + return -1; + } + const request3 = client[kQueue][client[kRunningIdx]]; + if (!request3) { + return -1; + } + } + onHeaderField(buf) { + const len = this.headers.length; + if ((len & 1) === 0) { + this.headers.push(buf); + } else { + this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]); + } + this.trackHeader(buf.length); + } + onHeaderValue(buf) { + let len = this.headers.length; + if ((len & 1) === 1) { + this.headers.push(buf); + len += 1; + } else { + this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]); + } + const key = this.headers[len - 2]; + if (key.length === 10 && key.toString().toLowerCase() === "keep-alive") { + this.keepAlive += buf.toString(); + } else if (key.length === 10 && key.toString().toLowerCase() === "connection") { + this.connection += buf.toString(); + } else if (key.length === 14 && key.toString().toLowerCase() === "content-length") { + this.contentLength += buf.toString(); + } + this.trackHeader(buf.length); + } + trackHeader(len) { + this.headersSize += len; + if (this.headersSize >= this.headersMaxSize) { + util.destroy(this.socket, new HeadersOverflowError()); + } + } + onUpgrade(head) { + const { upgrade, client, socket, headers, statusCode } = this; + assert(upgrade); + const request3 = client[kQueue][client[kRunningIdx]]; + assert(request3); + assert(!socket.destroyed); + assert(socket === client[kSocket]); + assert(!this.paused); + assert(request3.upgrade || request3.method === "CONNECT"); + this.statusCode = null; + this.statusText = ""; + this.shouldKeepAlive = null; + assert(this.headers.length % 2 === 0); + this.headers = []; + this.headersSize = 0; + socket.unshift(head); + socket[kParser].destroy(); + socket[kParser] = null; + socket[kClient] = null; + socket[kError] = null; + socket.removeListener("error", onSocketError).removeListener("readable", onSocketReadable).removeListener("end", onSocketEnd).removeListener("close", onSocketClose); + client[kSocket] = null; + client[kQueue][client[kRunningIdx]++] = null; + client.emit("disconnect", client[kUrl], [client], new InformationalError("upgrade")); + try { + request3.onUpgrade(statusCode, headers, socket); + } catch (err) { + util.destroy(socket, err); + } + resume(client); + } + onHeadersComplete(statusCode, upgrade, shouldKeepAlive) { + const { client, socket, headers, statusText } = this; + if (socket.destroyed) { + return -1; + } + const request3 = client[kQueue][client[kRunningIdx]]; + if (!request3) { + return -1; + } + assert(!this.upgrade); + assert(this.statusCode < 200); + if (statusCode === 100) { + util.destroy(socket, new SocketError("bad response", util.getSocketInfo(socket))); + return -1; + } + if (upgrade && !request3.upgrade) { + util.destroy(socket, new SocketError("bad upgrade", util.getSocketInfo(socket))); + return -1; + } + assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS); + this.statusCode = statusCode; + this.shouldKeepAlive = shouldKeepAlive || // Override llhttp value which does not allow keepAlive for HEAD. + request3.method === "HEAD" && !socket[kReset] && this.connection.toLowerCase() === "keep-alive"; + if (this.statusCode >= 200) { + const bodyTimeout = request3.bodyTimeout != null ? request3.bodyTimeout : client[kBodyTimeout]; + this.setTimeout(bodyTimeout, TIMEOUT_BODY); + } else if (this.timeout) { + if (this.timeout.refresh) { + this.timeout.refresh(); + } + } + if (request3.method === "CONNECT") { + assert(client[kRunning] === 1); + this.upgrade = true; + return 2; + } + if (upgrade) { + assert(client[kRunning] === 1); + this.upgrade = true; + return 2; + } + assert(this.headers.length % 2 === 0); + this.headers = []; + this.headersSize = 0; + if (this.shouldKeepAlive && client[kPipelining]) { + const keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null; + if (keepAliveTimeout != null) { + const timeout = Math.min( + keepAliveTimeout - client[kKeepAliveTimeoutThreshold], + client[kKeepAliveMaxTimeout] + ); + if (timeout <= 0) { + socket[kReset] = true; + } else { + client[kKeepAliveTimeoutValue] = timeout; + } + } else { + client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout]; + } + } else { + socket[kReset] = true; + } + let pause; + try { + pause = request3.onHeaders(statusCode, headers, this.resume, statusText) === false; + } catch (err) { + util.destroy(socket, err); + return -1; + } + if (request3.method === "HEAD") { + return 1; + } + if (statusCode < 200) { + return 1; + } + if (socket[kBlocking]) { + socket[kBlocking] = false; + resume(client); + } + return pause ? constants.ERROR.PAUSED : 0; + } + onBody(buf) { + const { client, socket, statusCode, maxResponseSize } = this; + if (socket.destroyed) { + return -1; + } + const request3 = client[kQueue][client[kRunningIdx]]; + assert(request3); + assert.strictEqual(this.timeoutType, TIMEOUT_BODY); + if (this.timeout) { + if (this.timeout.refresh) { + this.timeout.refresh(); + } + } + assert(statusCode >= 200); + if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) { + util.destroy(socket, new ResponseExceededMaxSizeError()); + return -1; + } + this.bytesRead += buf.length; + try { + if (request3.onData(buf) === false) { + return constants.ERROR.PAUSED; + } + } catch (err) { + util.destroy(socket, err); + return -1; + } + } + onMessageComplete() { + const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this; + if (socket.destroyed && (!statusCode || shouldKeepAlive)) { + return -1; + } + if (upgrade) { + return; + } + const request3 = client[kQueue][client[kRunningIdx]]; + assert(request3); + assert(statusCode >= 100); + this.statusCode = null; + this.statusText = ""; + this.bytesRead = 0; + this.contentLength = ""; + this.keepAlive = ""; + this.connection = ""; + assert(this.headers.length % 2 === 0); + this.headers = []; + this.headersSize = 0; + if (statusCode < 200) { + return; + } + if (request3.method !== "HEAD" && contentLength && bytesRead !== parseInt(contentLength, 10)) { + util.destroy(socket, new ResponseContentLengthMismatchError()); + return -1; + } + try { + request3.onComplete(headers); + } catch (err) { + errorRequest(client, request3, err); + } + client[kQueue][client[kRunningIdx]++] = null; + if (socket[kWriting]) { + assert.strictEqual(client[kRunning], 0); + util.destroy(socket, new InformationalError("reset")); + return constants.ERROR.PAUSED; + } else if (!shouldKeepAlive) { + util.destroy(socket, new InformationalError("reset")); + return constants.ERROR.PAUSED; + } else if (socket[kReset] && client[kRunning] === 0) { + util.destroy(socket, new InformationalError("reset")); + return constants.ERROR.PAUSED; + } else if (client[kPipelining] === 1) { + setImmediate(resume, client); + } else { + resume(client); + } + } + }; + function onParserTimeout(parser) { + const { socket, timeoutType, client } = parser; + if (timeoutType === TIMEOUT_HEADERS) { + if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) { + assert(!parser.paused, "cannot be paused while waiting for headers"); + util.destroy(socket, new HeadersTimeoutError()); + } + } else if (timeoutType === TIMEOUT_BODY) { + if (!parser.paused) { + util.destroy(socket, new BodyTimeoutError()); + } + } else if (timeoutType === TIMEOUT_IDLE) { + assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue]); + util.destroy(socket, new InformationalError("socket idle timeout")); + } + } + function onSocketReadable() { + const { [kParser]: parser } = this; + if (parser) { + parser.readMore(); + } + } + function onSocketError(err) { + const { [kClient]: client, [kParser]: parser } = this; + assert(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID"); + if (client[kHTTPConnVersion] !== "h2") { + if (err.code === "ECONNRESET" && parser.statusCode && !parser.shouldKeepAlive) { + parser.onMessageComplete(); + return; + } + } + this[kError] = err; + onError(this[kClient], err); + } + function onError(client, err) { + if (client[kRunning] === 0 && err.code !== "UND_ERR_INFO" && err.code !== "UND_ERR_SOCKET") { + assert(client[kPendingIdx] === client[kRunningIdx]); + const requests = client[kQueue].splice(client[kRunningIdx]); + for (let i = 0; i < requests.length; i++) { + const request3 = requests[i]; + errorRequest(client, request3, err); + } + assert(client[kSize] === 0); + } + } + function onSocketEnd() { + const { [kParser]: parser, [kClient]: client } = this; + if (client[kHTTPConnVersion] !== "h2") { + if (parser.statusCode && !parser.shouldKeepAlive) { + parser.onMessageComplete(); + return; + } + } + util.destroy(this, new SocketError("other side closed", util.getSocketInfo(this))); + } + function onSocketClose() { + const { [kClient]: client, [kParser]: parser } = this; + if (client[kHTTPConnVersion] === "h1" && parser) { + if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) { + parser.onMessageComplete(); + } + this[kParser].destroy(); + this[kParser] = null; + } + const err = this[kError] || new SocketError("closed", util.getSocketInfo(this)); + client[kSocket] = null; + if (client.destroyed) { + assert(client[kPending] === 0); + const requests = client[kQueue].splice(client[kRunningIdx]); + for (let i = 0; i < requests.length; i++) { + const request3 = requests[i]; + errorRequest(client, request3, err); + } + } else if (client[kRunning] > 0 && err.code !== "UND_ERR_INFO") { + const request3 = client[kQueue][client[kRunningIdx]]; + client[kQueue][client[kRunningIdx]++] = null; + errorRequest(client, request3, err); + } + client[kPendingIdx] = client[kRunningIdx]; + assert(client[kRunning] === 0); + client.emit("disconnect", client[kUrl], [client], err); + resume(client); + } + async function connect(client) { + assert(!client[kConnecting]); + assert(!client[kSocket]); + let { host, hostname, protocol, port } = client[kUrl]; + if (hostname[0] === "[") { + const idx = hostname.indexOf("]"); + assert(idx !== -1); + const ip = hostname.substr(1, idx - 1); + assert(net.isIP(ip)); + hostname = ip; + } + client[kConnecting] = true; + if (channels.beforeConnect.hasSubscribers) { + channels.beforeConnect.publish({ + connectParams: { + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector] + }); + } + try { + const socket = await new Promise((resolve, reject) => { + client[kConnector]({ + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, (err, socket2) => { + if (err) { + reject(err); + } else { + resolve(socket2); + } + }); + }); + if (client.destroyed) { + util.destroy(socket.on("error", () => { + }), new ClientDestroyedError()); + return; + } + client[kConnecting] = false; + assert(socket); + const isH2 = socket.alpnProtocol === "h2"; + if (isH2) { + if (!h2ExperimentalWarned) { + h2ExperimentalWarned = true; + process.emitWarning("H2 support is experimental, expect them to change at any time.", { + code: "UNDICI-H2" + }); + } + const session = http2.connect(client[kUrl], { + createConnection: () => socket, + peerMaxConcurrentStreams: client[kHTTP2SessionState].maxConcurrentStreams + }); + client[kHTTPConnVersion] = "h2"; + session[kClient] = client; + session[kSocket] = socket; + session.on("error", onHttp2SessionError); + session.on("frameError", onHttp2FrameError); + session.on("end", onHttp2SessionEnd); + session.on("goaway", onHTTP2GoAway); + session.on("close", onSocketClose); + session.unref(); + client[kHTTP2Session] = session; + socket[kHTTP2Session] = session; + } else { + if (!llhttpInstance) { + llhttpInstance = await llhttpPromise; + llhttpPromise = null; + } + socket[kNoRef] = false; + socket[kWriting] = false; + socket[kReset] = false; + socket[kBlocking] = false; + socket[kParser] = new Parser(client, socket, llhttpInstance); + } + socket[kCounter] = 0; + socket[kMaxRequests] = client[kMaxRequests]; + socket[kClient] = client; + socket[kError] = null; + socket.on("error", onSocketError).on("readable", onSocketReadable).on("end", onSocketEnd).on("close", onSocketClose); + client[kSocket] = socket; + if (channels.connected.hasSubscribers) { + channels.connected.publish({ + connectParams: { + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector], + socket + }); + } + client.emit("connect", client[kUrl], [client]); + } catch (err) { + if (client.destroyed) { + return; + } + client[kConnecting] = false; + if (channels.connectError.hasSubscribers) { + channels.connectError.publish({ + connectParams: { + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector], + error: err + }); + } + if (err.code === "ERR_TLS_CERT_ALTNAME_INVALID") { + assert(client[kRunning] === 0); + while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) { + const request3 = client[kQueue][client[kPendingIdx]++]; + errorRequest(client, request3, err); + } + } else { + onError(client, err); + } + client.emit("connectionError", client[kUrl], [client], err); + } + resume(client); + } + function emitDrain(client) { + client[kNeedDrain] = 0; + client.emit("drain", client[kUrl], [client]); + } + function resume(client, sync) { + if (client[kResuming] === 2) { + return; + } + client[kResuming] = 2; + _resume(client, sync); + client[kResuming] = 0; + if (client[kRunningIdx] > 256) { + client[kQueue].splice(0, client[kRunningIdx]); + client[kPendingIdx] -= client[kRunningIdx]; + client[kRunningIdx] = 0; + } + } + function _resume(client, sync) { + while (true) { + if (client.destroyed) { + assert(client[kPending] === 0); + return; + } + if (client[kClosedResolve] && !client[kSize]) { + client[kClosedResolve](); + client[kClosedResolve] = null; + return; + } + const socket = client[kSocket]; + if (socket && !socket.destroyed && socket.alpnProtocol !== "h2") { + if (client[kSize] === 0) { + if (!socket[kNoRef] && socket.unref) { + socket.unref(); + socket[kNoRef] = true; + } + } else if (socket[kNoRef] && socket.ref) { + socket.ref(); + socket[kNoRef] = false; + } + if (client[kSize] === 0) { + if (socket[kParser].timeoutType !== TIMEOUT_IDLE) { + socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_IDLE); + } + } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) { + if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) { + const request4 = client[kQueue][client[kRunningIdx]]; + const headersTimeout = request4.headersTimeout != null ? request4.headersTimeout : client[kHeadersTimeout]; + socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS); + } + } + } + if (client[kBusy]) { + client[kNeedDrain] = 2; + } else if (client[kNeedDrain] === 2) { + if (sync) { + client[kNeedDrain] = 1; + process.nextTick(emitDrain, client); + } else { + emitDrain(client); + } + continue; + } + if (client[kPending] === 0) { + return; + } + if (client[kRunning] >= (client[kPipelining] || 1)) { + return; + } + const request3 = client[kQueue][client[kPendingIdx]]; + if (client[kUrl].protocol === "https:" && client[kServerName] !== request3.servername) { + if (client[kRunning] > 0) { + return; + } + client[kServerName] = request3.servername; + if (socket && socket.servername !== request3.servername) { + util.destroy(socket, new InformationalError("servername changed")); + return; + } + } + if (client[kConnecting]) { + return; + } + if (!socket && !client[kHTTP2Session]) { + connect(client); + return; + } + if (socket.destroyed || socket[kWriting] || socket[kReset] || socket[kBlocking]) { + return; + } + if (client[kRunning] > 0 && !request3.idempotent) { + return; + } + if (client[kRunning] > 0 && (request3.upgrade || request3.method === "CONNECT")) { + return; + } + if (util.isStream(request3.body) && util.bodyLength(request3.body) === 0) { + request3.body.on( + "data", + /* istanbul ignore next */ + function() { + assert(false); + } + ).on("error", function(err) { + errorRequest(client, request3, err); + }).on("end", function() { + util.destroy(this); + }); + request3.body = null; + } + if (client[kRunning] > 0 && (util.isStream(request3.body) || util.isAsyncIterable(request3.body))) { + return; + } + if (!request3.aborted && write(client, request3)) { + client[kPendingIdx]++; + } else { + client[kQueue].splice(client[kPendingIdx], 1); + } + } + } + function write(client, request3) { + if (client[kHTTPConnVersion] === "h2") { + writeH2(client, client[kHTTP2Session], request3); + return; + } + const { body, method, path, host, upgrade, headers, blocking, reset } = request3; + const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH"; + if (body && typeof body.read === "function") { + body.read(0); + } + let contentLength = util.bodyLength(body); + if (contentLength === null) { + contentLength = request3.contentLength; + } + if (contentLength === 0 && !expectsPayload) { + contentLength = null; + } + if (request3.contentLength !== null && request3.contentLength !== contentLength) { + if (client[kStrictContentLength]) { + errorRequest(client, request3, new RequestContentLengthMismatchError()); + return false; + } + process.emitWarning(new RequestContentLengthMismatchError()); + } + const socket = client[kSocket]; + try { + request3.onConnect((err) => { + if (request3.aborted || request3.completed) { + return; + } + errorRequest(client, request3, err || new RequestAbortedError()); + util.destroy(socket, new InformationalError("aborted")); + }); + } catch (err) { + errorRequest(client, request3, err); + } + if (request3.aborted) { + return false; + } + if (method === "HEAD") { + socket[kReset] = true; + } + if (upgrade || method === "CONNECT") { + socket[kReset] = true; + } + if (reset != null) { + socket[kReset] = reset; + } + if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) { + socket[kReset] = true; + } + if (blocking) { + socket[kBlocking] = true; + } + let header = `${method} ${path} HTTP/1.1\r +`; + if (typeof host === "string") { + header += `host: ${host}\r +`; + } else { + header += client[kHostHeader]; + } + if (upgrade) { + header += `connection: upgrade\r +upgrade: ${upgrade}\r +`; + } else if (client[kPipelining] && !socket[kReset]) { + header += "connection: keep-alive\r\n"; + } else { + header += "connection: close\r\n"; + } + if (headers) { + header += headers; + } + if (channels.sendHeaders.hasSubscribers) { + channels.sendHeaders.publish({ request: request3, headers: header, socket }); + } + if (!body) { + if (contentLength === 0) { + socket.write(`${header}content-length: 0\r +\r +`, "latin1"); + } else { + assert(contentLength === null, "no body must not have content length"); + socket.write(`${header}\r +`, "latin1"); + } + request3.onRequestSent(); + } else if (util.isBuffer(body)) { + assert(contentLength === body.byteLength, "buffer body must have content length"); + socket.cork(); + socket.write(`${header}content-length: ${contentLength}\r +\r +`, "latin1"); + socket.write(body); + socket.uncork(); + request3.onBodySent(body); + request3.onRequestSent(); + if (!expectsPayload) { + socket[kReset] = true; + } + } else if (util.isBlobLike(body)) { + if (typeof body.stream === "function") { + writeIterable({ body: body.stream(), client, request: request3, socket, contentLength, header, expectsPayload }); + } else { + writeBlob({ body, client, request: request3, socket, contentLength, header, expectsPayload }); + } + } else if (util.isStream(body)) { + writeStream({ body, client, request: request3, socket, contentLength, header, expectsPayload }); + } else if (util.isIterable(body)) { + writeIterable({ body, client, request: request3, socket, contentLength, header, expectsPayload }); + } else { + assert(false); + } + return true; + } + function writeH2(client, session, request3) { + const { body, method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request3; + let headers; + if (typeof reqHeaders === "string") + headers = Request[kHTTP2CopyHeaders](reqHeaders.trim()); + else + headers = reqHeaders; + if (upgrade) { + errorRequest(client, request3, new Error("Upgrade not supported for H2")); + return false; + } + try { + request3.onConnect((err) => { + if (request3.aborted || request3.completed) { + return; + } + errorRequest(client, request3, err || new RequestAbortedError()); + }); + } catch (err) { + errorRequest(client, request3, err); + } + if (request3.aborted) { + return false; + } + let stream; + const h2State = client[kHTTP2SessionState]; + headers[HTTP2_HEADER_AUTHORITY] = host || client[kHost]; + headers[HTTP2_HEADER_METHOD] = method; + if (method === "CONNECT") { + session.ref(); + stream = session.request(headers, { endStream: false, signal }); + if (stream.id && !stream.pending) { + request3.onUpgrade(null, null, stream); + ++h2State.openStreams; + } else { + stream.once("ready", () => { + request3.onUpgrade(null, null, stream); + ++h2State.openStreams; + }); + } + stream.once("close", () => { + h2State.openStreams -= 1; + if (h2State.openStreams === 0) + session.unref(); + }); + return true; + } + headers[HTTP2_HEADER_PATH] = path; + headers[HTTP2_HEADER_SCHEME] = "https"; + const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH"; + if (body && typeof body.read === "function") { + body.read(0); + } + let contentLength = util.bodyLength(body); + if (contentLength == null) { + contentLength = request3.contentLength; + } + if (contentLength === 0 || !expectsPayload) { + contentLength = null; + } + if (request3.contentLength != null && request3.contentLength !== contentLength) { + if (client[kStrictContentLength]) { + errorRequest(client, request3, new RequestContentLengthMismatchError()); + return false; + } + process.emitWarning(new RequestContentLengthMismatchError()); + } + if (contentLength != null) { + assert(body, "no body must not have content length"); + headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}`; + } + session.ref(); + const shouldEndStream = method === "GET" || method === "HEAD"; + if (expectContinue) { + headers[HTTP2_HEADER_EXPECT] = "100-continue"; + stream = session.request(headers, { endStream: shouldEndStream, signal }); + stream.once("continue", writeBodyH2); + } else { + stream = session.request(headers, { + endStream: shouldEndStream, + signal + }); + writeBodyH2(); + } + ++h2State.openStreams; + stream.once("response", (headers2) => { + if (request3.onHeaders(Number(headers2[HTTP2_HEADER_STATUS]), headers2, stream.resume.bind(stream), "") === false) { + stream.pause(); + } + }); + stream.once("end", () => { + request3.onComplete([]); + }); + stream.on("data", (chunk) => { + if (request3.onData(chunk) === false) + stream.pause(); + }); + stream.once("close", () => { + h2State.openStreams -= 1; + if (h2State.openStreams === 0) + session.unref(); + }); + stream.once("error", function(err) { + if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) { + h2State.streams -= 1; + util.destroy(stream, err); + } + }); + stream.once("frameError", (type, code) => { + const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`); + errorRequest(client, request3, err); + if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) { + h2State.streams -= 1; + util.destroy(stream, err); + } + }); + return true; + function writeBodyH2() { + if (!body) { + request3.onRequestSent(); + } else if (util.isBuffer(body)) { + assert(contentLength === body.byteLength, "buffer body must have content length"); + stream.cork(); + stream.write(body); + stream.uncork(); + stream.end(); + request3.onBodySent(body); + request3.onRequestSent(); + } else if (util.isBlobLike(body)) { + if (typeof body.stream === "function") { + writeIterable({ + client, + request: request3, + contentLength, + h2stream: stream, + expectsPayload, + body: body.stream(), + socket: client[kSocket], + header: "" + }); + } else { + writeBlob({ + body, + client, + request: request3, + contentLength, + expectsPayload, + h2stream: stream, + header: "", + socket: client[kSocket] + }); + } + } else if (util.isStream(body)) { + writeStream({ + body, + client, + request: request3, + contentLength, + expectsPayload, + socket: client[kSocket], + h2stream: stream, + header: "" + }); + } else if (util.isIterable(body)) { + writeIterable({ + body, + client, + request: request3, + contentLength, + expectsPayload, + header: "", + h2stream: stream, + socket: client[kSocket] + }); + } else { + assert(false); + } + } + } + function writeStream({ h2stream, body, client, request: request3, socket, contentLength, header, expectsPayload }) { + assert(contentLength !== 0 || client[kRunning] === 0, "stream body cannot be pipelined"); + if (client[kHTTPConnVersion] === "h2") { + let onPipeData = function(chunk) { + request3.onBodySent(chunk); + }; + const pipe = pipeline( + body, + h2stream, + (err) => { + if (err) { + util.destroy(body, err); + util.destroy(h2stream, err); + } else { + request3.onRequestSent(); + } + } + ); + pipe.on("data", onPipeData); + pipe.once("end", () => { + pipe.removeListener("data", onPipeData); + util.destroy(pipe); + }); + return; + } + let finished = false; + const writer = new AsyncWriter({ socket, request: request3, contentLength, client, expectsPayload, header }); + const onData = function(chunk) { + if (finished) { + return; + } + try { + if (!writer.write(chunk) && this.pause) { + this.pause(); + } + } catch (err) { + util.destroy(this, err); + } + }; + const onDrain = function() { + if (finished) { + return; + } + if (body.resume) { + body.resume(); + } + }; + const onAbort = function() { + onFinished(new RequestAbortedError()); + }; + const onFinished = function(err) { + if (finished) { + return; + } + finished = true; + assert(socket.destroyed || socket[kWriting] && client[kRunning] <= 1); + socket.off("drain", onDrain).off("error", onFinished); + body.removeListener("data", onData).removeListener("end", onFinished).removeListener("error", onFinished).removeListener("close", onAbort); + if (!err) { + try { + writer.end(); + } catch (er) { + err = er; + } + } + writer.destroy(err); + if (err && (err.code !== "UND_ERR_INFO" || err.message !== "reset")) { + util.destroy(body, err); + } else { + util.destroy(body); + } + }; + body.on("data", onData).on("end", onFinished).on("error", onFinished).on("close", onAbort); + if (body.resume) { + body.resume(); + } + socket.on("drain", onDrain).on("error", onFinished); + } + async function writeBlob({ h2stream, body, client, request: request3, socket, contentLength, header, expectsPayload }) { + assert(contentLength === body.size, "blob body must have content length"); + const isH2 = client[kHTTPConnVersion] === "h2"; + try { + if (contentLength != null && contentLength !== body.size) { + throw new RequestContentLengthMismatchError(); + } + const buffer = Buffer.from(await body.arrayBuffer()); + if (isH2) { + h2stream.cork(); + h2stream.write(buffer); + h2stream.uncork(); + } else { + socket.cork(); + socket.write(`${header}content-length: ${contentLength}\r +\r +`, "latin1"); + socket.write(buffer); + socket.uncork(); + } + request3.onBodySent(buffer); + request3.onRequestSent(); + if (!expectsPayload) { + socket[kReset] = true; + } + resume(client); + } catch (err) { + util.destroy(isH2 ? h2stream : socket, err); + } + } + async function writeIterable({ h2stream, body, client, request: request3, socket, contentLength, header, expectsPayload }) { + assert(contentLength !== 0 || client[kRunning] === 0, "iterator body cannot be pipelined"); + let callback = null; + function onDrain() { + if (callback) { + const cb = callback; + callback = null; + cb(); + } + } + const waitForDrain = () => new Promise((resolve, reject) => { + assert(callback === null); + if (socket[kError]) { + reject(socket[kError]); + } else { + callback = resolve; + } + }); + if (client[kHTTPConnVersion] === "h2") { + h2stream.on("close", onDrain).on("drain", onDrain); + try { + for await (const chunk of body) { + if (socket[kError]) { + throw socket[kError]; + } + const res = h2stream.write(chunk); + request3.onBodySent(chunk); + if (!res) { + await waitForDrain(); + } + } + } catch (err) { + h2stream.destroy(err); + } finally { + request3.onRequestSent(); + h2stream.end(); + h2stream.off("close", onDrain).off("drain", onDrain); + } + return; + } + socket.on("close", onDrain).on("drain", onDrain); + const writer = new AsyncWriter({ socket, request: request3, contentLength, client, expectsPayload, header }); + try { + for await (const chunk of body) { + if (socket[kError]) { + throw socket[kError]; + } + if (!writer.write(chunk)) { + await waitForDrain(); + } + } + writer.end(); + } catch (err) { + writer.destroy(err); + } finally { + socket.off("close", onDrain).off("drain", onDrain); + } + } + var AsyncWriter = class { + constructor({ socket, request: request3, contentLength, client, expectsPayload, header }) { + this.socket = socket; + this.request = request3; + this.contentLength = contentLength; + this.client = client; + this.bytesWritten = 0; + this.expectsPayload = expectsPayload; + this.header = header; + socket[kWriting] = true; + } + write(chunk) { + const { socket, request: request3, contentLength, client, bytesWritten, expectsPayload, header } = this; + if (socket[kError]) { + throw socket[kError]; + } + if (socket.destroyed) { + return false; + } + const len = Buffer.byteLength(chunk); + if (!len) { + return true; + } + if (contentLength !== null && bytesWritten + len > contentLength) { + if (client[kStrictContentLength]) { + throw new RequestContentLengthMismatchError(); + } + process.emitWarning(new RequestContentLengthMismatchError()); + } + socket.cork(); + if (bytesWritten === 0) { + if (!expectsPayload) { + socket[kReset] = true; + } + if (contentLength === null) { + socket.write(`${header}transfer-encoding: chunked\r +`, "latin1"); + } else { + socket.write(`${header}content-length: ${contentLength}\r +\r +`, "latin1"); + } + } + if (contentLength === null) { + socket.write(`\r +${len.toString(16)}\r +`, "latin1"); + } + this.bytesWritten += len; + const ret = socket.write(chunk); + socket.uncork(); + request3.onBodySent(chunk); + if (!ret) { + if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { + if (socket[kParser].timeout.refresh) { + socket[kParser].timeout.refresh(); + } + } + } + return ret; + } + end() { + const { socket, contentLength, client, bytesWritten, expectsPayload, header, request: request3 } = this; + request3.onRequestSent(); + socket[kWriting] = false; + if (socket[kError]) { + throw socket[kError]; + } + if (socket.destroyed) { + return; + } + if (bytesWritten === 0) { + if (expectsPayload) { + socket.write(`${header}content-length: 0\r +\r +`, "latin1"); + } else { + socket.write(`${header}\r +`, "latin1"); + } + } else if (contentLength === null) { + socket.write("\r\n0\r\n\r\n", "latin1"); + } + if (contentLength !== null && bytesWritten !== contentLength) { + if (client[kStrictContentLength]) { + throw new RequestContentLengthMismatchError(); + } else { + process.emitWarning(new RequestContentLengthMismatchError()); + } + } + if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { + if (socket[kParser].timeout.refresh) { + socket[kParser].timeout.refresh(); + } + } + resume(client); + } + destroy(err) { + const { socket, client } = this; + socket[kWriting] = false; + if (err) { + assert(client[kRunning] <= 1, "pipeline should only contain this request"); + util.destroy(socket, err); + } + } + }; + function errorRequest(client, request3, err) { + try { + request3.onError(err); + assert(request3.aborted); + } catch (err2) { + client.emit("error", err2); + } + } + module2.exports = Client; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/node/fixed-queue.js +var require_fixed_queue = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/node/fixed-queue.js"(exports2, module2) { + "use strict"; + var kSize = 2048; + var kMask = kSize - 1; + var FixedCircularBuffer = class { + constructor() { + this.bottom = 0; + this.top = 0; + this.list = new Array(kSize); + this.next = null; + } + isEmpty() { + return this.top === this.bottom; + } + isFull() { + return (this.top + 1 & kMask) === this.bottom; + } + push(data) { + this.list[this.top] = data; + this.top = this.top + 1 & kMask; + } + shift() { + const nextItem = this.list[this.bottom]; + if (nextItem === void 0) + return null; + this.list[this.bottom] = void 0; + this.bottom = this.bottom + 1 & kMask; + return nextItem; + } + }; + module2.exports = class FixedQueue { + constructor() { + this.head = this.tail = new FixedCircularBuffer(); + } + isEmpty() { + return this.head.isEmpty(); + } + push(data) { + if (this.head.isFull()) { + this.head = this.head.next = new FixedCircularBuffer(); + } + this.head.push(data); + } + shift() { + const tail = this.tail; + const next = tail.shift(); + if (tail.isEmpty() && tail.next !== null) { + this.tail = tail.next; + } + return next; + } + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/pool-stats.js +var require_pool_stats = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/pool-stats.js"(exports2, module2) { + var { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require_symbols(); + var kPool = Symbol("pool"); + var PoolStats = class { + constructor(pool) { + this[kPool] = pool; + } + get connected() { + return this[kPool][kConnected]; + } + get free() { + return this[kPool][kFree]; + } + get pending() { + return this[kPool][kPending]; + } + get queued() { + return this[kPool][kQueued]; + } + get running() { + return this[kPool][kRunning]; + } + get size() { + return this[kPool][kSize]; + } + }; + module2.exports = PoolStats; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/pool-base.js +var require_pool_base = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/pool-base.js"(exports2, module2) { + "use strict"; + var DispatcherBase = require_dispatcher_base(); + var FixedQueue = require_fixed_queue(); + var { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require_symbols(); + var PoolStats = require_pool_stats(); + var kClients = Symbol("clients"); + var kNeedDrain = Symbol("needDrain"); + var kQueue = Symbol("queue"); + var kClosedResolve = Symbol("closed resolve"); + var kOnDrain = Symbol("onDrain"); + var kOnConnect = Symbol("onConnect"); + var kOnDisconnect = Symbol("onDisconnect"); + var kOnConnectionError = Symbol("onConnectionError"); + var kGetDispatcher = Symbol("get dispatcher"); + var kAddClient = Symbol("add client"); + var kRemoveClient = Symbol("remove client"); + var kStats = Symbol("stats"); + var PoolBase = class extends DispatcherBase { + constructor() { + super(); + this[kQueue] = new FixedQueue(); + this[kClients] = []; + this[kQueued] = 0; + const pool = this; + this[kOnDrain] = function onDrain(origin, targets) { + const queue = pool[kQueue]; + let needDrain = false; + while (!needDrain) { + const item = queue.shift(); + if (!item) { + break; + } + pool[kQueued]--; + needDrain = !this.dispatch(item.opts, item.handler); + } + this[kNeedDrain] = needDrain; + if (!this[kNeedDrain] && pool[kNeedDrain]) { + pool[kNeedDrain] = false; + pool.emit("drain", origin, [pool, ...targets]); + } + if (pool[kClosedResolve] && queue.isEmpty()) { + Promise.all(pool[kClients].map((c) => c.close())).then(pool[kClosedResolve]); + } + }; + this[kOnConnect] = (origin, targets) => { + pool.emit("connect", origin, [pool, ...targets]); + }; + this[kOnDisconnect] = (origin, targets, err) => { + pool.emit("disconnect", origin, [pool, ...targets], err); + }; + this[kOnConnectionError] = (origin, targets, err) => { + pool.emit("connectionError", origin, [pool, ...targets], err); + }; + this[kStats] = new PoolStats(this); + } + get [kBusy]() { + return this[kNeedDrain]; + } + get [kConnected]() { + return this[kClients].filter((client) => client[kConnected]).length; + } + get [kFree]() { + return this[kClients].filter((client) => client[kConnected] && !client[kNeedDrain]).length; + } + get [kPending]() { + let ret = this[kQueued]; + for (const { [kPending]: pending } of this[kClients]) { + ret += pending; + } + return ret; + } + get [kRunning]() { + let ret = 0; + for (const { [kRunning]: running } of this[kClients]) { + ret += running; + } + return ret; + } + get [kSize]() { + let ret = this[kQueued]; + for (const { [kSize]: size } of this[kClients]) { + ret += size; + } + return ret; + } + get stats() { + return this[kStats]; + } + async [kClose]() { + if (this[kQueue].isEmpty()) { + return Promise.all(this[kClients].map((c) => c.close())); + } else { + return new Promise((resolve) => { + this[kClosedResolve] = resolve; + }); + } + } + async [kDestroy](err) { + while (true) { + const item = this[kQueue].shift(); + if (!item) { + break; + } + item.handler.onError(err); + } + return Promise.all(this[kClients].map((c) => c.destroy(err))); + } + [kDispatch](opts, handler) { + const dispatcher = this[kGetDispatcher](); + if (!dispatcher) { + this[kNeedDrain] = true; + this[kQueue].push({ opts, handler }); + this[kQueued]++; + } else if (!dispatcher.dispatch(opts, handler)) { + dispatcher[kNeedDrain] = true; + this[kNeedDrain] = !this[kGetDispatcher](); + } + return !this[kNeedDrain]; + } + [kAddClient](client) { + client.on("drain", this[kOnDrain]).on("connect", this[kOnConnect]).on("disconnect", this[kOnDisconnect]).on("connectionError", this[kOnConnectionError]); + this[kClients].push(client); + if (this[kNeedDrain]) { + process.nextTick(() => { + if (this[kNeedDrain]) { + this[kOnDrain](client[kUrl], [this, client]); + } + }); + } + return this; + } + [kRemoveClient](client) { + client.close(() => { + const idx = this[kClients].indexOf(client); + if (idx !== -1) { + this[kClients].splice(idx, 1); + } + }); + this[kNeedDrain] = this[kClients].some((dispatcher) => !dispatcher[kNeedDrain] && dispatcher.closed !== true && dispatcher.destroyed !== true); + } + }; + module2.exports = { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kRemoveClient, + kGetDispatcher + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/pool.js +var require_pool = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/pool.js"(exports2, module2) { + "use strict"; + var { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kGetDispatcher + } = require_pool_base(); + var Client = require_client(); + var { + InvalidArgumentError + } = require_errors(); + var util = require_util(); + var { kUrl, kInterceptors } = require_symbols(); + var buildConnector = require_connect(); + var kOptions = Symbol("options"); + var kConnections = Symbol("connections"); + var kFactory = Symbol("factory"); + function defaultFactory(origin, opts) { + return new Client(origin, opts); + } + var Pool = class extends PoolBase { + constructor(origin, { + connections, + factory = defaultFactory, + connect, + connectTimeout, + tls, + maxCachedSessions, + socketPath, + autoSelectFamily, + autoSelectFamilyAttemptTimeout, + allowH2, + ...options + } = {}) { + super(); + if (connections != null && (!Number.isFinite(connections) || connections < 0)) { + throw new InvalidArgumentError("invalid connections"); + } + if (typeof factory !== "function") { + throw new InvalidArgumentError("factory must be a function."); + } + if (connect != null && typeof connect !== "function" && typeof connect !== "object") { + throw new InvalidArgumentError("connect must be a function or an object"); + } + if (typeof connect !== "function") { + connect = buildConnector({ + ...tls, + maxCachedSessions, + allowH2, + socketPath, + timeout: connectTimeout == null ? 1e4 : connectTimeout, + ...util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0, + ...connect + }); + } + this[kInterceptors] = options.interceptors && options.interceptors.Pool && Array.isArray(options.interceptors.Pool) ? options.interceptors.Pool : []; + this[kConnections] = connections || null; + this[kUrl] = util.parseOrigin(origin); + this[kOptions] = { ...util.deepClone(options), connect, allowH2 }; + this[kOptions].interceptors = options.interceptors ? { ...options.interceptors } : void 0; + this[kFactory] = factory; + } + [kGetDispatcher]() { + let dispatcher = this[kClients].find((dispatcher2) => !dispatcher2[kNeedDrain]); + if (dispatcher) { + return dispatcher; + } + if (!this[kConnections] || this[kClients].length < this[kConnections]) { + dispatcher = this[kFactory](this[kUrl], this[kOptions]); + this[kAddClient](dispatcher); + } + return dispatcher; + } + }; + module2.exports = Pool; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/balanced-pool.js +var require_balanced_pool = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/balanced-pool.js"(exports2, module2) { + "use strict"; + var { + BalancedPoolMissingUpstreamError, + InvalidArgumentError + } = require_errors(); + var { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kRemoveClient, + kGetDispatcher + } = require_pool_base(); + var Pool = require_pool(); + var { kUrl, kInterceptors } = require_symbols(); + var { parseOrigin } = require_util(); + var kFactory = Symbol("factory"); + var kOptions = Symbol("options"); + var kGreatestCommonDivisor = Symbol("kGreatestCommonDivisor"); + var kCurrentWeight = Symbol("kCurrentWeight"); + var kIndex = Symbol("kIndex"); + var kWeight = Symbol("kWeight"); + var kMaxWeightPerServer = Symbol("kMaxWeightPerServer"); + var kErrorPenalty = Symbol("kErrorPenalty"); + function getGreatestCommonDivisor(a, b) { + if (b === 0) + return a; + return getGreatestCommonDivisor(b, a % b); + } + function defaultFactory(origin, opts) { + return new Pool(origin, opts); + } + var BalancedPool = class extends PoolBase { + constructor(upstreams = [], { factory = defaultFactory, ...opts } = {}) { + super(); + this[kOptions] = opts; + this[kIndex] = -1; + this[kCurrentWeight] = 0; + this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100; + this[kErrorPenalty] = this[kOptions].errorPenalty || 15; + if (!Array.isArray(upstreams)) { + upstreams = [upstreams]; + } + if (typeof factory !== "function") { + throw new InvalidArgumentError("factory must be a function."); + } + this[kInterceptors] = opts.interceptors && opts.interceptors.BalancedPool && Array.isArray(opts.interceptors.BalancedPool) ? opts.interceptors.BalancedPool : []; + this[kFactory] = factory; + for (const upstream of upstreams) { + this.addUpstream(upstream); + } + this._updateBalancedPoolStats(); + } + addUpstream(upstream) { + const upstreamOrigin = parseOrigin(upstream).origin; + if (this[kClients].find((pool2) => pool2[kUrl].origin === upstreamOrigin && pool2.closed !== true && pool2.destroyed !== true)) { + return this; + } + const pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions])); + this[kAddClient](pool); + pool.on("connect", () => { + pool[kWeight] = Math.min(this[kMaxWeightPerServer], pool[kWeight] + this[kErrorPenalty]); + }); + pool.on("connectionError", () => { + pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]); + this._updateBalancedPoolStats(); + }); + pool.on("disconnect", (...args) => { + const err = args[2]; + if (err && err.code === "UND_ERR_SOCKET") { + pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]); + this._updateBalancedPoolStats(); + } + }); + for (const client of this[kClients]) { + client[kWeight] = this[kMaxWeightPerServer]; + } + this._updateBalancedPoolStats(); + return this; + } + _updateBalancedPoolStats() { + this[kGreatestCommonDivisor] = this[kClients].map((p) => p[kWeight]).reduce(getGreatestCommonDivisor, 0); + } + removeUpstream(upstream) { + const upstreamOrigin = parseOrigin(upstream).origin; + const pool = this[kClients].find((pool2) => pool2[kUrl].origin === upstreamOrigin && pool2.closed !== true && pool2.destroyed !== true); + if (pool) { + this[kRemoveClient](pool); + } + return this; + } + get upstreams() { + return this[kClients].filter((dispatcher) => dispatcher.closed !== true && dispatcher.destroyed !== true).map((p) => p[kUrl].origin); + } + [kGetDispatcher]() { + if (this[kClients].length === 0) { + throw new BalancedPoolMissingUpstreamError(); + } + const dispatcher = this[kClients].find((dispatcher2) => !dispatcher2[kNeedDrain] && dispatcher2.closed !== true && dispatcher2.destroyed !== true); + if (!dispatcher) { + return; + } + const allClientsBusy = this[kClients].map((pool) => pool[kNeedDrain]).reduce((a, b) => a && b, true); + if (allClientsBusy) { + return; + } + let counter = 0; + let maxWeightIndex = this[kClients].findIndex((pool) => !pool[kNeedDrain]); + while (counter++ < this[kClients].length) { + this[kIndex] = (this[kIndex] + 1) % this[kClients].length; + const pool = this[kClients][this[kIndex]]; + if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) { + maxWeightIndex = this[kIndex]; + } + if (this[kIndex] === 0) { + this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor]; + if (this[kCurrentWeight] <= 0) { + this[kCurrentWeight] = this[kMaxWeightPerServer]; + } + } + if (pool[kWeight] >= this[kCurrentWeight] && !pool[kNeedDrain]) { + return pool; + } + } + this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight]; + this[kIndex] = maxWeightIndex; + return this[kClients][maxWeightIndex]; + } + }; + module2.exports = BalancedPool; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/compat/dispatcher-weakref.js +var require_dispatcher_weakref = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/compat/dispatcher-weakref.js"(exports2, module2) { + "use strict"; + var { kConnected, kSize } = require_symbols(); + var CompatWeakRef = class { + constructor(value) { + this.value = value; + } + deref() { + return this.value[kConnected] === 0 && this.value[kSize] === 0 ? void 0 : this.value; + } + }; + var CompatFinalizer = class { + constructor(finalizer) { + this.finalizer = finalizer; + } + register(dispatcher, key) { + if (dispatcher.on) { + dispatcher.on("disconnect", () => { + if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) { + this.finalizer(key); + } + }); + } + } + }; + module2.exports = function() { + if (process.env.NODE_V8_COVERAGE) { + return { + WeakRef: CompatWeakRef, + FinalizationRegistry: CompatFinalizer + }; + } + return { + WeakRef: global.WeakRef || CompatWeakRef, + FinalizationRegistry: global.FinalizationRegistry || CompatFinalizer + }; + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/agent.js +var require_agent = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/agent.js"(exports2, module2) { + "use strict"; + var { InvalidArgumentError } = require_errors(); + var { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = require_symbols(); + var DispatcherBase = require_dispatcher_base(); + var Pool = require_pool(); + var Client = require_client(); + var util = require_util(); + var createRedirectInterceptor = require_redirectInterceptor(); + var { WeakRef: WeakRef2, FinalizationRegistry } = require_dispatcher_weakref()(); + var kOnConnect = Symbol("onConnect"); + var kOnDisconnect = Symbol("onDisconnect"); + var kOnConnectionError = Symbol("onConnectionError"); + var kMaxRedirections = Symbol("maxRedirections"); + var kOnDrain = Symbol("onDrain"); + var kFactory = Symbol("factory"); + var kFinalizer = Symbol("finalizer"); + var kOptions = Symbol("options"); + function defaultFactory(origin, opts) { + return opts && opts.connections === 1 ? new Client(origin, opts) : new Pool(origin, opts); + } + var Agent = class extends DispatcherBase { + constructor({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) { + super(); + if (typeof factory !== "function") { + throw new InvalidArgumentError("factory must be a function."); + } + if (connect != null && typeof connect !== "function" && typeof connect !== "object") { + throw new InvalidArgumentError("connect must be a function or an object"); + } + if (!Number.isInteger(maxRedirections) || maxRedirections < 0) { + throw new InvalidArgumentError("maxRedirections must be a positive number"); + } + if (connect && typeof connect !== "function") { + connect = { ...connect }; + } + this[kInterceptors] = options.interceptors && options.interceptors.Agent && Array.isArray(options.interceptors.Agent) ? options.interceptors.Agent : [createRedirectInterceptor({ maxRedirections })]; + this[kOptions] = { ...util.deepClone(options), connect }; + this[kOptions].interceptors = options.interceptors ? { ...options.interceptors } : void 0; + this[kMaxRedirections] = maxRedirections; + this[kFactory] = factory; + this[kClients] = /* @__PURE__ */ new Map(); + this[kFinalizer] = new FinalizationRegistry( + /* istanbul ignore next: gc is undeterministic */ + (key) => { + const ref = this[kClients].get(key); + if (ref !== void 0 && ref.deref() === void 0) { + this[kClients].delete(key); + } + } + ); + const agent = this; + this[kOnDrain] = (origin, targets) => { + agent.emit("drain", origin, [agent, ...targets]); + }; + this[kOnConnect] = (origin, targets) => { + agent.emit("connect", origin, [agent, ...targets]); + }; + this[kOnDisconnect] = (origin, targets, err) => { + agent.emit("disconnect", origin, [agent, ...targets], err); + }; + this[kOnConnectionError] = (origin, targets, err) => { + agent.emit("connectionError", origin, [agent, ...targets], err); + }; + } + get [kRunning]() { + let ret = 0; + for (const ref of this[kClients].values()) { + const client = ref.deref(); + if (client) { + ret += client[kRunning]; + } + } + return ret; + } + [kDispatch](opts, handler) { + let key; + if (opts.origin && (typeof opts.origin === "string" || opts.origin instanceof URL)) { + key = String(opts.origin); + } else { + throw new InvalidArgumentError("opts.origin must be a non-empty string or URL."); + } + const ref = this[kClients].get(key); + let dispatcher = ref ? ref.deref() : null; + if (!dispatcher) { + dispatcher = this[kFactory](opts.origin, this[kOptions]).on("drain", this[kOnDrain]).on("connect", this[kOnConnect]).on("disconnect", this[kOnDisconnect]).on("connectionError", this[kOnConnectionError]); + this[kClients].set(key, new WeakRef2(dispatcher)); + this[kFinalizer].register(dispatcher, key); + } + return dispatcher.dispatch(opts, handler); + } + async [kClose]() { + const closePromises = []; + for (const ref of this[kClients].values()) { + const client = ref.deref(); + if (client) { + closePromises.push(client.close()); + } + } + await Promise.all(closePromises); + } + async [kDestroy](err) { + const destroyPromises = []; + for (const ref of this[kClients].values()) { + const client = ref.deref(); + if (client) { + destroyPromises.push(client.destroy(err)); + } + } + await Promise.all(destroyPromises); + } + }; + module2.exports = Agent; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/readable.js +var require_readable = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/readable.js"(exports2, module2) { + "use strict"; + var assert = require("assert"); + var { Readable } = require("stream"); + var { RequestAbortedError, NotSupportedError, InvalidArgumentError } = require_errors(); + var util = require_util(); + var { ReadableStreamFrom, toUSVString } = require_util(); + var Blob2; + var kConsume = Symbol("kConsume"); + var kReading = Symbol("kReading"); + var kBody = Symbol("kBody"); + var kAbort = Symbol("abort"); + var kContentType = Symbol("kContentType"); + module2.exports = class BodyReadable extends Readable { + constructor({ + resume, + abort, + contentType = "", + highWaterMark = 64 * 1024 + // Same as nodejs fs streams. + }) { + super({ + autoDestroy: true, + read: resume, + highWaterMark + }); + this._readableState.dataEmitted = false; + this[kAbort] = abort; + this[kConsume] = null; + this[kBody] = null; + this[kContentType] = contentType; + this[kReading] = false; + } + destroy(err) { + if (this.destroyed) { + return this; + } + if (!err && !this._readableState.endEmitted) { + err = new RequestAbortedError(); + } + if (err) { + this[kAbort](); + } + return super.destroy(err); + } + emit(ev, ...args) { + if (ev === "data") { + this._readableState.dataEmitted = true; + } else if (ev === "error") { + this._readableState.errorEmitted = true; + } + return super.emit(ev, ...args); + } + on(ev, ...args) { + if (ev === "data" || ev === "readable") { + this[kReading] = true; + } + return super.on(ev, ...args); + } + addListener(ev, ...args) { + return this.on(ev, ...args); + } + off(ev, ...args) { + const ret = super.off(ev, ...args); + if (ev === "data" || ev === "readable") { + this[kReading] = this.listenerCount("data") > 0 || this.listenerCount("readable") > 0; + } + return ret; + } + removeListener(ev, ...args) { + return this.off(ev, ...args); + } + push(chunk) { + if (this[kConsume] && chunk !== null && this.readableLength === 0) { + consumePush(this[kConsume], chunk); + return this[kReading] ? super.push(chunk) : true; + } + return super.push(chunk); + } + // https://fetch.spec.whatwg.org/#dom-body-text + async text() { + return consume(this, "text"); + } + // https://fetch.spec.whatwg.org/#dom-body-json + async json() { + return consume(this, "json"); + } + // https://fetch.spec.whatwg.org/#dom-body-blob + async blob() { + return consume(this, "blob"); + } + // https://fetch.spec.whatwg.org/#dom-body-arraybuffer + async arrayBuffer() { + return consume(this, "arrayBuffer"); + } + // https://fetch.spec.whatwg.org/#dom-body-formdata + async formData() { + throw new NotSupportedError(); + } + // https://fetch.spec.whatwg.org/#dom-body-bodyused + get bodyUsed() { + return util.isDisturbed(this); + } + // https://fetch.spec.whatwg.org/#dom-body-body + get body() { + if (!this[kBody]) { + this[kBody] = ReadableStreamFrom(this); + if (this[kConsume]) { + this[kBody].getReader(); + assert(this[kBody].locked); + } + } + return this[kBody]; + } + async dump(opts) { + let limit = opts && Number.isFinite(opts.limit) ? opts.limit : 262144; + const signal = opts && opts.signal; + const abortFn = () => { + this.destroy(); + }; + let signalListenerCleanup; + if (signal) { + if (typeof signal !== "object" || !("aborted" in signal)) { + throw new InvalidArgumentError("signal must be an AbortSignal"); + } + util.throwIfAborted(signal); + signalListenerCleanup = util.addAbortListener(signal, abortFn); + } + try { + for await (const chunk of this) { + util.throwIfAborted(signal); + limit -= Buffer.byteLength(chunk); + if (limit < 0) { + return; + } + } + } catch { + util.throwIfAborted(signal); + } finally { + if (typeof signalListenerCleanup === "function") { + signalListenerCleanup(); + } else if (signalListenerCleanup) { + signalListenerCleanup[Symbol.dispose](); + } + } + } + }; + function isLocked(self) { + return self[kBody] && self[kBody].locked === true || self[kConsume]; + } + function isUnusable(self) { + return util.isDisturbed(self) || isLocked(self); + } + async function consume(stream, type) { + if (isUnusable(stream)) { + throw new TypeError("unusable"); + } + assert(!stream[kConsume]); + return new Promise((resolve, reject) => { + stream[kConsume] = { + type, + stream, + resolve, + reject, + length: 0, + body: [] + }; + stream.on("error", function(err) { + consumeFinish(this[kConsume], err); + }).on("close", function() { + if (this[kConsume].body !== null) { + consumeFinish(this[kConsume], new RequestAbortedError()); + } + }); + process.nextTick(consumeStart, stream[kConsume]); + }); + } + function consumeStart(consume2) { + if (consume2.body === null) { + return; + } + const { _readableState: state } = consume2.stream; + for (const chunk of state.buffer) { + consumePush(consume2, chunk); + } + if (state.endEmitted) { + consumeEnd(this[kConsume]); + } else { + consume2.stream.on("end", function() { + consumeEnd(this[kConsume]); + }); + } + consume2.stream.resume(); + while (consume2.stream.read() != null) { + } + } + function consumeEnd(consume2) { + const { type, body, resolve, stream, length } = consume2; + try { + if (type === "text") { + resolve(toUSVString(Buffer.concat(body))); + } else if (type === "json") { + resolve(JSON.parse(Buffer.concat(body))); + } else if (type === "arrayBuffer") { + const dst = new Uint8Array(length); + let pos = 0; + for (const buf of body) { + dst.set(buf, pos); + pos += buf.byteLength; + } + resolve(dst.buffer); + } else if (type === "blob") { + if (!Blob2) { + Blob2 = require("buffer").Blob; + } + resolve(new Blob2(body, { type: stream[kContentType] })); + } + consumeFinish(consume2); + } catch (err) { + stream.destroy(err); + } + } + function consumePush(consume2, chunk) { + consume2.length += chunk.length; + consume2.body.push(chunk); + } + function consumeFinish(consume2, err) { + if (consume2.body === null) { + return; + } + if (err) { + consume2.reject(err); + } else { + consume2.resolve(); + } + consume2.type = null; + consume2.stream = null; + consume2.resolve = null; + consume2.reject = null; + consume2.length = 0; + consume2.body = null; + } + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/util.js +var require_util3 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/util.js"(exports2, module2) { + var assert = require("assert"); + var { + ResponseStatusCodeError + } = require_errors(); + var { toUSVString } = require_util(); + async function getResolveErrorBodyCallback({ callback, body, contentType, statusCode, statusMessage, headers }) { + assert(body); + let chunks = []; + let limit = 0; + for await (const chunk of body) { + chunks.push(chunk); + limit += chunk.length; + if (limit > 128 * 1024) { + chunks = null; + break; + } + } + if (statusCode === 204 || !contentType || !chunks) { + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ""}`, statusCode, headers)); + return; + } + try { + if (contentType.startsWith("application/json")) { + const payload = JSON.parse(toUSVString(Buffer.concat(chunks))); + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ""}`, statusCode, headers, payload)); + return; + } + if (contentType.startsWith("text/")) { + const payload = toUSVString(Buffer.concat(chunks)); + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ""}`, statusCode, headers, payload)); + return; + } + } catch (err) { + } + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ""}`, statusCode, headers)); + } + module2.exports = { getResolveErrorBodyCallback }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/abort-signal.js +var require_abort_signal = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/abort-signal.js"(exports2, module2) { + var { addAbortListener } = require_util(); + var { RequestAbortedError } = require_errors(); + var kListener = Symbol("kListener"); + var kSignal = Symbol("kSignal"); + function abort(self) { + if (self.abort) { + self.abort(); + } else { + self.onError(new RequestAbortedError()); + } + } + function addSignal(self, signal) { + self[kSignal] = null; + self[kListener] = null; + if (!signal) { + return; + } + if (signal.aborted) { + abort(self); + return; + } + self[kSignal] = signal; + self[kListener] = () => { + abort(self); + }; + addAbortListener(self[kSignal], self[kListener]); + } + function removeSignal(self) { + if (!self[kSignal]) { + return; + } + if ("removeEventListener" in self[kSignal]) { + self[kSignal].removeEventListener("abort", self[kListener]); + } else { + self[kSignal].removeListener("abort", self[kListener]); + } + self[kSignal] = null; + self[kListener] = null; + } + module2.exports = { + addSignal, + removeSignal + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-request.js +var require_api_request = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-request.js"(exports2, module2) { + "use strict"; + var Readable = require_readable(); + var { + InvalidArgumentError, + RequestAbortedError + } = require_errors(); + var util = require_util(); + var { getResolveErrorBodyCallback } = require_util3(); + var { AsyncResource } = require("async_hooks"); + var { addSignal, removeSignal } = require_abort_signal(); + var RequestHandler = class extends AsyncResource { + constructor(opts, callback) { + if (!opts || typeof opts !== "object") { + throw new InvalidArgumentError("invalid opts"); + } + const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError, highWaterMark } = opts; + try { + if (typeof callback !== "function") { + throw new InvalidArgumentError("invalid callback"); + } + if (highWaterMark && (typeof highWaterMark !== "number" || highWaterMark < 0)) { + throw new InvalidArgumentError("invalid highWaterMark"); + } + if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") { + throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); + } + if (method === "CONNECT") { + throw new InvalidArgumentError("invalid method"); + } + if (onInfo && typeof onInfo !== "function") { + throw new InvalidArgumentError("invalid onInfo callback"); + } + super("UNDICI_REQUEST"); + } catch (err) { + if (util.isStream(body)) { + util.destroy(body.on("error", util.nop), err); + } + throw err; + } + this.responseHeaders = responseHeaders || null; + this.opaque = opaque || null; + this.callback = callback; + this.res = null; + this.abort = null; + this.body = body; + this.trailers = {}; + this.context = null; + this.onInfo = onInfo || null; + this.throwOnError = throwOnError; + this.highWaterMark = highWaterMark; + if (util.isStream(body)) { + body.on("error", (err) => { + this.onError(err); + }); + } + addSignal(this, signal); + } + onConnect(abort, context) { + if (!this.callback) { + throw new RequestAbortedError(); + } + this.abort = abort; + this.context = context; + } + onHeaders(statusCode, rawHeaders, resume, statusMessage) { + const { callback, opaque, abort, context, responseHeaders, highWaterMark } = this; + const headers = responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + if (statusCode < 200) { + if (this.onInfo) { + this.onInfo({ statusCode, headers }); + } + return; + } + const parsedHeaders = responseHeaders === "raw" ? util.parseHeaders(rawHeaders) : headers; + const contentType = parsedHeaders["content-type"]; + const body = new Readable({ resume, abort, contentType, highWaterMark }); + this.callback = null; + this.res = body; + if (callback !== null) { + if (this.throwOnError && statusCode >= 400) { + this.runInAsyncScope( + getResolveErrorBodyCallback, + null, + { callback, body, contentType, statusCode, statusMessage, headers } + ); + } else { + this.runInAsyncScope(callback, null, null, { + statusCode, + headers, + trailers: this.trailers, + opaque, + body, + context + }); + } + } + } + onData(chunk) { + const { res } = this; + return res.push(chunk); + } + onComplete(trailers) { + const { res } = this; + removeSignal(this); + util.parseHeaders(trailers, this.trailers); + res.push(null); + } + onError(err) { + const { res, callback, body, opaque } = this; + removeSignal(this); + if (callback) { + this.callback = null; + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }); + }); + } + if (res) { + this.res = null; + queueMicrotask(() => { + util.destroy(res, err); + }); + } + if (body) { + this.body = null; + util.destroy(body, err); + } + } + }; + function request3(opts, callback) { + if (callback === void 0) { + return new Promise((resolve, reject) => { + request3.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data); + }); + }); + } + try { + this.dispatch(opts, new RequestHandler(opts, callback)); + } catch (err) { + if (typeof callback !== "function") { + throw err; + } + const opaque = opts && opts.opaque; + queueMicrotask(() => callback(err, { opaque })); + } + } + module2.exports = request3; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-stream.js +var require_api_stream = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-stream.js"(exports2, module2) { + "use strict"; + var { finished, PassThrough } = require("stream"); + var { + InvalidArgumentError, + InvalidReturnValueError, + RequestAbortedError + } = require_errors(); + var util = require_util(); + var { getResolveErrorBodyCallback } = require_util3(); + var { AsyncResource } = require("async_hooks"); + var { addSignal, removeSignal } = require_abort_signal(); + var StreamHandler = class extends AsyncResource { + constructor(opts, factory, callback) { + if (!opts || typeof opts !== "object") { + throw new InvalidArgumentError("invalid opts"); + } + const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError } = opts; + try { + if (typeof callback !== "function") { + throw new InvalidArgumentError("invalid callback"); + } + if (typeof factory !== "function") { + throw new InvalidArgumentError("invalid factory"); + } + if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") { + throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); + } + if (method === "CONNECT") { + throw new InvalidArgumentError("invalid method"); + } + if (onInfo && typeof onInfo !== "function") { + throw new InvalidArgumentError("invalid onInfo callback"); + } + super("UNDICI_STREAM"); + } catch (err) { + if (util.isStream(body)) { + util.destroy(body.on("error", util.nop), err); + } + throw err; + } + this.responseHeaders = responseHeaders || null; + this.opaque = opaque || null; + this.factory = factory; + this.callback = callback; + this.res = null; + this.abort = null; + this.context = null; + this.trailers = null; + this.body = body; + this.onInfo = onInfo || null; + this.throwOnError = throwOnError || false; + if (util.isStream(body)) { + body.on("error", (err) => { + this.onError(err); + }); + } + addSignal(this, signal); + } + onConnect(abort, context) { + if (!this.callback) { + throw new RequestAbortedError(); + } + this.abort = abort; + this.context = context; + } + onHeaders(statusCode, rawHeaders, resume, statusMessage) { + const { factory, opaque, context, callback, responseHeaders } = this; + const headers = responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + if (statusCode < 200) { + if (this.onInfo) { + this.onInfo({ statusCode, headers }); + } + return; + } + this.factory = null; + let res; + if (this.throwOnError && statusCode >= 400) { + const parsedHeaders = responseHeaders === "raw" ? util.parseHeaders(rawHeaders) : headers; + const contentType = parsedHeaders["content-type"]; + res = new PassThrough(); + this.callback = null; + this.runInAsyncScope( + getResolveErrorBodyCallback, + null, + { callback, body: res, contentType, statusCode, statusMessage, headers } + ); + } else { + if (factory === null) { + return; + } + res = this.runInAsyncScope(factory, null, { + statusCode, + headers, + opaque, + context + }); + if (!res || typeof res.write !== "function" || typeof res.end !== "function" || typeof res.on !== "function") { + throw new InvalidReturnValueError("expected Writable"); + } + finished(res, { readable: false }, (err) => { + const { callback: callback2, res: res2, opaque: opaque2, trailers, abort } = this; + this.res = null; + if (err || !res2.readable) { + util.destroy(res2, err); + } + this.callback = null; + this.runInAsyncScope(callback2, null, err || null, { opaque: opaque2, trailers }); + if (err) { + abort(); + } + }); + } + res.on("drain", resume); + this.res = res; + const needDrain = res.writableNeedDrain !== void 0 ? res.writableNeedDrain : res._writableState && res._writableState.needDrain; + return needDrain !== true; + } + onData(chunk) { + const { res } = this; + return res ? res.write(chunk) : true; + } + onComplete(trailers) { + const { res } = this; + removeSignal(this); + if (!res) { + return; + } + this.trailers = util.parseHeaders(trailers); + res.end(); + } + onError(err) { + const { res, callback, opaque, body } = this; + removeSignal(this); + this.factory = null; + if (res) { + this.res = null; + util.destroy(res, err); + } else if (callback) { + this.callback = null; + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }); + }); + } + if (body) { + this.body = null; + util.destroy(body, err); + } + } + }; + function stream(opts, factory, callback) { + if (callback === void 0) { + return new Promise((resolve, reject) => { + stream.call(this, opts, factory, (err, data) => { + return err ? reject(err) : resolve(data); + }); + }); + } + try { + this.dispatch(opts, new StreamHandler(opts, factory, callback)); + } catch (err) { + if (typeof callback !== "function") { + throw err; + } + const opaque = opts && opts.opaque; + queueMicrotask(() => callback(err, { opaque })); + } + } + module2.exports = stream; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-pipeline.js +var require_api_pipeline = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-pipeline.js"(exports2, module2) { + "use strict"; + var { + Readable, + Duplex, + PassThrough + } = require("stream"); + var { + InvalidArgumentError, + InvalidReturnValueError, + RequestAbortedError + } = require_errors(); + var util = require_util(); + var { AsyncResource } = require("async_hooks"); + var { addSignal, removeSignal } = require_abort_signal(); + var assert = require("assert"); + var kResume = Symbol("resume"); + var PipelineRequest = class extends Readable { + constructor() { + super({ autoDestroy: true }); + this[kResume] = null; + } + _read() { + const { [kResume]: resume } = this; + if (resume) { + this[kResume] = null; + resume(); + } + } + _destroy(err, callback) { + this._read(); + callback(err); + } + }; + var PipelineResponse = class extends Readable { + constructor(resume) { + super({ autoDestroy: true }); + this[kResume] = resume; + } + _read() { + this[kResume](); + } + _destroy(err, callback) { + if (!err && !this._readableState.endEmitted) { + err = new RequestAbortedError(); + } + callback(err); + } + }; + var PipelineHandler = class extends AsyncResource { + constructor(opts, handler) { + if (!opts || typeof opts !== "object") { + throw new InvalidArgumentError("invalid opts"); + } + if (typeof handler !== "function") { + throw new InvalidArgumentError("invalid handler"); + } + const { signal, method, opaque, onInfo, responseHeaders } = opts; + if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") { + throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); + } + if (method === "CONNECT") { + throw new InvalidArgumentError("invalid method"); + } + if (onInfo && typeof onInfo !== "function") { + throw new InvalidArgumentError("invalid onInfo callback"); + } + super("UNDICI_PIPELINE"); + this.opaque = opaque || null; + this.responseHeaders = responseHeaders || null; + this.handler = handler; + this.abort = null; + this.context = null; + this.onInfo = onInfo || null; + this.req = new PipelineRequest().on("error", util.nop); + this.ret = new Duplex({ + readableObjectMode: opts.objectMode, + autoDestroy: true, + read: () => { + const { body } = this; + if (body && body.resume) { + body.resume(); + } + }, + write: (chunk, encoding, callback) => { + const { req } = this; + if (req.push(chunk, encoding) || req._readableState.destroyed) { + callback(); + } else { + req[kResume] = callback; + } + }, + destroy: (err, callback) => { + const { body, req, res, ret, abort } = this; + if (!err && !ret._readableState.endEmitted) { + err = new RequestAbortedError(); + } + if (abort && err) { + abort(); + } + util.destroy(body, err); + util.destroy(req, err); + util.destroy(res, err); + removeSignal(this); + callback(err); + } + }).on("prefinish", () => { + const { req } = this; + req.push(null); + }); + this.res = null; + addSignal(this, signal); + } + onConnect(abort, context) { + const { ret, res } = this; + assert(!res, "pipeline cannot be retried"); + if (ret.destroyed) { + throw new RequestAbortedError(); + } + this.abort = abort; + this.context = context; + } + onHeaders(statusCode, rawHeaders, resume) { + const { opaque, handler, context } = this; + if (statusCode < 200) { + if (this.onInfo) { + const headers = this.responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + this.onInfo({ statusCode, headers }); + } + return; + } + this.res = new PipelineResponse(resume); + let body; + try { + this.handler = null; + const headers = this.responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + body = this.runInAsyncScope(handler, null, { + statusCode, + headers, + opaque, + body: this.res, + context + }); + } catch (err) { + this.res.on("error", util.nop); + throw err; + } + if (!body || typeof body.on !== "function") { + throw new InvalidReturnValueError("expected Readable"); + } + body.on("data", (chunk) => { + const { ret, body: body2 } = this; + if (!ret.push(chunk) && body2.pause) { + body2.pause(); + } + }).on("error", (err) => { + const { ret } = this; + util.destroy(ret, err); + }).on("end", () => { + const { ret } = this; + ret.push(null); + }).on("close", () => { + const { ret } = this; + if (!ret._readableState.ended) { + util.destroy(ret, new RequestAbortedError()); + } + }); + this.body = body; + } + onData(chunk) { + const { res } = this; + return res.push(chunk); + } + onComplete(trailers) { + const { res } = this; + res.push(null); + } + onError(err) { + const { ret } = this; + this.handler = null; + util.destroy(ret, err); + } + }; + function pipeline(opts, handler) { + try { + const pipelineHandler = new PipelineHandler(opts, handler); + this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler); + return pipelineHandler.ret; + } catch (err) { + return new PassThrough().destroy(err); + } + } + module2.exports = pipeline; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-upgrade.js +var require_api_upgrade = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-upgrade.js"(exports2, module2) { + "use strict"; + var { InvalidArgumentError, RequestAbortedError, SocketError } = require_errors(); + var { AsyncResource } = require("async_hooks"); + var util = require_util(); + var { addSignal, removeSignal } = require_abort_signal(); + var assert = require("assert"); + var UpgradeHandler = class extends AsyncResource { + constructor(opts, callback) { + if (!opts || typeof opts !== "object") { + throw new InvalidArgumentError("invalid opts"); + } + if (typeof callback !== "function") { + throw new InvalidArgumentError("invalid callback"); + } + const { signal, opaque, responseHeaders } = opts; + if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") { + throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); + } + super("UNDICI_UPGRADE"); + this.responseHeaders = responseHeaders || null; + this.opaque = opaque || null; + this.callback = callback; + this.abort = null; + this.context = null; + addSignal(this, signal); + } + onConnect(abort, context) { + if (!this.callback) { + throw new RequestAbortedError(); + } + this.abort = abort; + this.context = null; + } + onHeaders() { + throw new SocketError("bad upgrade", null); + } + onUpgrade(statusCode, rawHeaders, socket) { + const { callback, opaque, context } = this; + assert.strictEqual(statusCode, 101); + removeSignal(this); + this.callback = null; + const headers = this.responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + this.runInAsyncScope(callback, null, null, { + headers, + socket, + opaque, + context + }); + } + onError(err) { + const { callback, opaque } = this; + removeSignal(this); + if (callback) { + this.callback = null; + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }); + }); + } + } + }; + function upgrade(opts, callback) { + if (callback === void 0) { + return new Promise((resolve, reject) => { + upgrade.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data); + }); + }); + } + try { + const upgradeHandler = new UpgradeHandler(opts, callback); + this.dispatch({ + ...opts, + method: opts.method || "GET", + upgrade: opts.protocol || "Websocket" + }, upgradeHandler); + } catch (err) { + if (typeof callback !== "function") { + throw err; + } + const opaque = opts && opts.opaque; + queueMicrotask(() => callback(err, { opaque })); + } + } + module2.exports = upgrade; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-connect.js +var require_api_connect = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/api-connect.js"(exports2, module2) { + "use strict"; + var { AsyncResource } = require("async_hooks"); + var { InvalidArgumentError, RequestAbortedError, SocketError } = require_errors(); + var util = require_util(); + var { addSignal, removeSignal } = require_abort_signal(); + var ConnectHandler = class extends AsyncResource { + constructor(opts, callback) { + if (!opts || typeof opts !== "object") { + throw new InvalidArgumentError("invalid opts"); + } + if (typeof callback !== "function") { + throw new InvalidArgumentError("invalid callback"); + } + const { signal, opaque, responseHeaders } = opts; + if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") { + throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); + } + super("UNDICI_CONNECT"); + this.opaque = opaque || null; + this.responseHeaders = responseHeaders || null; + this.callback = callback; + this.abort = null; + addSignal(this, signal); + } + onConnect(abort, context) { + if (!this.callback) { + throw new RequestAbortedError(); + } + this.abort = abort; + this.context = context; + } + onHeaders() { + throw new SocketError("bad connect", null); + } + onUpgrade(statusCode, rawHeaders, socket) { + const { callback, opaque, context } = this; + removeSignal(this); + this.callback = null; + let headers = rawHeaders; + if (headers != null) { + headers = this.responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + } + this.runInAsyncScope(callback, null, null, { + statusCode, + headers, + socket, + opaque, + context + }); + } + onError(err) { + const { callback, opaque } = this; + removeSignal(this); + if (callback) { + this.callback = null; + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }); + }); + } + } + }; + function connect(opts, callback) { + if (callback === void 0) { + return new Promise((resolve, reject) => { + connect.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data); + }); + }); + } + try { + const connectHandler = new ConnectHandler(opts, callback); + this.dispatch({ ...opts, method: "CONNECT" }, connectHandler); + } catch (err) { + if (typeof callback !== "function") { + throw err; + } + const opaque = opts && opts.opaque; + queueMicrotask(() => callback(err, { opaque })); + } + } + module2.exports = connect; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/index.js +var require_api = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/api/index.js"(exports2, module2) { + "use strict"; + module2.exports.request = require_api_request(); + module2.exports.stream = require_api_stream(); + module2.exports.pipeline = require_api_pipeline(); + module2.exports.upgrade = require_api_upgrade(); + module2.exports.connect = require_api_connect(); + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-errors.js +var require_mock_errors = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-errors.js"(exports2, module2) { + "use strict"; + var { UndiciError } = require_errors(); + var MockNotMatchedError = class _MockNotMatchedError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _MockNotMatchedError); + this.name = "MockNotMatchedError"; + this.message = message || "The request does not match any registered mock dispatches"; + this.code = "UND_MOCK_ERR_MOCK_NOT_MATCHED"; + } + }; + module2.exports = { + MockNotMatchedError + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-symbols.js +var require_mock_symbols = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-symbols.js"(exports2, module2) { + "use strict"; + module2.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") + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-utils.js +var require_mock_utils = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-utils.js"(exports2, module2) { + "use strict"; + var { MockNotMatchedError } = require_mock_errors(); + var { + kDispatches, + kMockAgent, + kOriginalDispatch, + kOrigin, + kGetNetConnect + } = require_mock_symbols(); + var { buildURL, nop } = require_util(); + var { STATUS_CODES } = require("http"); + var { + types: { + isPromise + } + } = require("util"); + function matchValue(match, value) { + if (typeof match === "string") { + return match === value; + } + if (match instanceof RegExp) { + return match.test(value); + } + if (typeof match === "function") { + return match(value) === true; + } + return false; + } + function lowerCaseEntries(headers) { + return Object.fromEntries( + Object.entries(headers).map(([headerName, headerValue]) => { + return [headerName.toLocaleLowerCase(), headerValue]; + }) + ); + } + function getHeaderByName(headers, key) { + if (Array.isArray(headers)) { + for (let i = 0; i < headers.length; i += 2) { + if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) { + return headers[i + 1]; + } + } + return void 0; + } else if (typeof headers.get === "function") { + return headers.get(key); + } else { + return lowerCaseEntries(headers)[key.toLocaleLowerCase()]; + } + } + function buildHeadersFromArray(headers) { + const clone = headers.slice(); + const entries = []; + for (let index = 0; index < clone.length; index += 2) { + entries.push([clone[index], clone[index + 1]]); + } + return Object.fromEntries(entries); + } + function matchHeaders(mockDispatch2, headers) { + if (typeof mockDispatch2.headers === "function") { + if (Array.isArray(headers)) { + headers = buildHeadersFromArray(headers); + } + return mockDispatch2.headers(headers ? lowerCaseEntries(headers) : {}); + } + if (typeof mockDispatch2.headers === "undefined") { + return true; + } + if (typeof headers !== "object" || typeof mockDispatch2.headers !== "object") { + return false; + } + for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch2.headers)) { + const headerValue = getHeaderByName(headers, matchHeaderName); + if (!matchValue(matchHeaderValue, headerValue)) { + return false; + } + } + return true; + } + function safeUrl(path) { + if (typeof path !== "string") { + return path; + } + const pathSegments = path.split("?"); + if (pathSegments.length !== 2) { + return path; + } + const qp = new URLSearchParams(pathSegments.pop()); + qp.sort(); + return [...pathSegments, qp.toString()].join("?"); + } + function matchKey(mockDispatch2, { path, method, body, headers }) { + const pathMatch = matchValue(mockDispatch2.path, path); + const methodMatch = matchValue(mockDispatch2.method, method); + const bodyMatch = typeof mockDispatch2.body !== "undefined" ? matchValue(mockDispatch2.body, body) : true; + const headersMatch = matchHeaders(mockDispatch2, headers); + return pathMatch && methodMatch && bodyMatch && headersMatch; + } + function getResponseData(data) { + if (Buffer.isBuffer(data)) { + return data; + } else if (typeof data === "object") { + return JSON.stringify(data); + } else { + return data.toString(); + } + } + function getMockDispatch(mockDispatches, key) { + const basePath = key.query ? buildURL(key.path, key.query) : key.path; + const resolvedPath = typeof basePath === "string" ? safeUrl(basePath) : basePath; + let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path }) => matchValue(safeUrl(path), resolvedPath)); + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`); + } + matchedMockDispatches = matchedMockDispatches.filter(({ method }) => matchValue(method, key.method)); + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}'`); + } + matchedMockDispatches = matchedMockDispatches.filter(({ body }) => typeof body !== "undefined" ? matchValue(body, key.body) : true); + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}'`); + } + matchedMockDispatches = matchedMockDispatches.filter((mockDispatch2) => matchHeaders(mockDispatch2, key.headers)); + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for headers '${typeof key.headers === "object" ? JSON.stringify(key.headers) : key.headers}'`); + } + return matchedMockDispatches[0]; + } + function addMockDispatch(mockDispatches, key, data) { + const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false }; + const replyData = typeof data === "function" ? { callback: data } : { ...data }; + const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } }; + mockDispatches.push(newMockDispatch); + return newMockDispatch; + } + function deleteMockDispatch(mockDispatches, key) { + const index = mockDispatches.findIndex((dispatch) => { + if (!dispatch.consumed) { + return false; + } + return matchKey(dispatch, key); + }); + if (index !== -1) { + mockDispatches.splice(index, 1); + } + } + function buildKey(opts) { + const { path, method, body, headers, query } = opts; + return { + path, + method, + body, + headers, + query + }; + } + function generateKeyValues(data) { + return Object.entries(data).reduce((keyValuePairs, [key, value]) => [ + ...keyValuePairs, + Buffer.from(`${key}`), + Array.isArray(value) ? value.map((x) => Buffer.from(`${x}`)) : Buffer.from(`${value}`) + ], []); + } + function getStatusText(statusCode) { + return STATUS_CODES[statusCode] || "unknown"; + } + async function getResponse(body) { + const buffers = []; + for await (const data of body) { + buffers.push(data); + } + return Buffer.concat(buffers).toString("utf8"); + } + function mockDispatch(opts, handler) { + const key = buildKey(opts); + const mockDispatch2 = getMockDispatch(this[kDispatches], key); + mockDispatch2.timesInvoked++; + if (mockDispatch2.data.callback) { + mockDispatch2.data = { ...mockDispatch2.data, ...mockDispatch2.data.callback(opts) }; + } + const { data: { statusCode, data, headers, trailers, error }, delay, persist } = mockDispatch2; + const { timesInvoked, times } = mockDispatch2; + mockDispatch2.consumed = !persist && timesInvoked >= times; + mockDispatch2.pending = timesInvoked < times; + if (error !== null) { + deleteMockDispatch(this[kDispatches], key); + handler.onError(error); + return true; + } + if (typeof delay === "number" && delay > 0) { + setTimeout(() => { + handleReply(this[kDispatches]); + }, delay); + } else { + handleReply(this[kDispatches]); + } + function handleReply(mockDispatches, _data = data) { + const optsHeaders = Array.isArray(opts.headers) ? buildHeadersFromArray(opts.headers) : opts.headers; + const body = typeof _data === "function" ? _data({ ...opts, headers: optsHeaders }) : _data; + if (isPromise(body)) { + body.then((newData) => handleReply(mockDispatches, newData)); + return; + } + const responseData = getResponseData(body); + const responseHeaders = generateKeyValues(headers); + const responseTrailers = generateKeyValues(trailers); + handler.abort = nop; + handler.onHeaders(statusCode, responseHeaders, resume, getStatusText(statusCode)); + handler.onData(Buffer.from(responseData)); + handler.onComplete(responseTrailers); + deleteMockDispatch(mockDispatches, key); + } + function resume() { + } + return true; + } + function buildMockDispatch() { + const agent = this[kMockAgent]; + const origin = this[kOrigin]; + const originalDispatch = this[kOriginalDispatch]; + return function dispatch(opts, handler) { + if (agent.isMockActive) { + try { + mockDispatch.call(this, opts, handler); + } catch (error) { + if (error instanceof MockNotMatchedError) { + const netConnect = agent[kGetNetConnect](); + if (netConnect === false) { + throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`); + } + if (checkNetConnect(netConnect, origin)) { + originalDispatch.call(this, opts, handler); + } else { + throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)`); + } + } else { + throw error; + } + } + } else { + originalDispatch.call(this, opts, handler); + } + }; + } + function checkNetConnect(netConnect, origin) { + const url = new URL(origin); + if (netConnect === true) { + return true; + } else if (Array.isArray(netConnect) && netConnect.some((matcher) => matchValue(matcher, url.host))) { + return true; + } + return false; + } + function buildMockOptions(opts) { + if (opts) { + const { agent, ...mockOptions } = opts; + return mockOptions; + } + } + module2.exports = { + getResponseData, + getMockDispatch, + addMockDispatch, + deleteMockDispatch, + buildKey, + generateKeyValues, + matchValue, + getResponse, + getStatusText, + mockDispatch, + buildMockDispatch, + checkNetConnect, + buildMockOptions, + getHeaderByName + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-interceptor.js +var require_mock_interceptor = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-interceptor.js"(exports2, module2) { + "use strict"; + var { getResponseData, buildKey, addMockDispatch } = require_mock_utils(); + var { + kDispatches, + kDispatchKey, + kDefaultHeaders, + kDefaultTrailers, + kContentLength, + kMockDispatch + } = require_mock_symbols(); + var { InvalidArgumentError } = require_errors(); + var { buildURL } = require_util(); + var MockScope = class { + constructor(mockDispatch) { + this[kMockDispatch] = mockDispatch; + } + /** + * Delay a reply by a set amount in ms. + */ + delay(waitInMs) { + if (typeof waitInMs !== "number" || !Number.isInteger(waitInMs) || waitInMs <= 0) { + throw new InvalidArgumentError("waitInMs must be a valid integer > 0"); + } + this[kMockDispatch].delay = waitInMs; + return this; + } + /** + * For a defined reply, never mark as consumed. + */ + persist() { + this[kMockDispatch].persist = true; + return this; + } + /** + * Allow one to define a reply for a set amount of matching requests. + */ + times(repeatTimes) { + if (typeof repeatTimes !== "number" || !Number.isInteger(repeatTimes) || repeatTimes <= 0) { + throw new InvalidArgumentError("repeatTimes must be a valid integer > 0"); + } + this[kMockDispatch].times = repeatTimes; + return this; + } + }; + var MockInterceptor = class { + constructor(opts, mockDispatches) { + if (typeof opts !== "object") { + throw new InvalidArgumentError("opts must be an object"); + } + if (typeof opts.path === "undefined") { + throw new InvalidArgumentError("opts.path must be defined"); + } + if (typeof opts.method === "undefined") { + opts.method = "GET"; + } + if (typeof opts.path === "string") { + if (opts.query) { + opts.path = buildURL(opts.path, opts.query); + } else { + const parsedURL = new URL(opts.path, "data://"); + opts.path = parsedURL.pathname + parsedURL.search; + } + } + if (typeof opts.method === "string") { + opts.method = opts.method.toUpperCase(); + } + this[kDispatchKey] = buildKey(opts); + this[kDispatches] = mockDispatches; + this[kDefaultHeaders] = {}; + this[kDefaultTrailers] = {}; + this[kContentLength] = false; + } + createMockScopeDispatchData(statusCode, data, responseOptions = {}) { + const responseData = getResponseData(data); + const contentLength = this[kContentLength] ? { "content-length": responseData.length } : {}; + const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers }; + const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers }; + return { statusCode, data, headers, trailers }; + } + validateReplyParameters(statusCode, data, responseOptions) { + if (typeof statusCode === "undefined") { + throw new InvalidArgumentError("statusCode must be defined"); + } + if (typeof data === "undefined") { + throw new InvalidArgumentError("data must be defined"); + } + if (typeof responseOptions !== "object") { + throw new InvalidArgumentError("responseOptions must be an object"); + } + } + /** + * Mock an undici request with a defined reply. + */ + reply(replyData) { + if (typeof replyData === "function") { + const wrappedDefaultsCallback = (opts) => { + const resolvedData = replyData(opts); + if (typeof resolvedData !== "object") { + throw new InvalidArgumentError("reply options callback must return an object"); + } + const { statusCode: statusCode2, data: data2 = "", responseOptions: responseOptions2 = {} } = resolvedData; + this.validateReplyParameters(statusCode2, data2, responseOptions2); + return { + ...this.createMockScopeDispatchData(statusCode2, data2, responseOptions2) + }; + }; + const newMockDispatch2 = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback); + return new MockScope(newMockDispatch2); + } + const [statusCode, data = "", responseOptions = {}] = [...arguments]; + this.validateReplyParameters(statusCode, data, responseOptions); + const dispatchData = this.createMockScopeDispatchData(statusCode, data, responseOptions); + const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], dispatchData); + return new MockScope(newMockDispatch); + } + /** + * Mock an undici request with a defined error. + */ + replyWithError(error) { + if (typeof error === "undefined") { + throw new InvalidArgumentError("error must be defined"); + } + const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error }); + return new MockScope(newMockDispatch); + } + /** + * Set default reply headers on the interceptor for subsequent replies + */ + defaultReplyHeaders(headers) { + if (typeof headers === "undefined") { + throw new InvalidArgumentError("headers must be defined"); + } + this[kDefaultHeaders] = headers; + return this; + } + /** + * Set default reply trailers on the interceptor for subsequent replies + */ + defaultReplyTrailers(trailers) { + if (typeof trailers === "undefined") { + throw new InvalidArgumentError("trailers must be defined"); + } + this[kDefaultTrailers] = trailers; + return this; + } + /** + * Set reply content length header for replies on the interceptor + */ + replyContentLength() { + this[kContentLength] = true; + return this; + } + }; + module2.exports.MockInterceptor = MockInterceptor; + module2.exports.MockScope = MockScope; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-client.js +var require_mock_client = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-client.js"(exports2, module2) { + "use strict"; + var { promisify } = require("util"); + var Client = require_client(); + var { buildMockDispatch } = require_mock_utils(); + var { + kDispatches, + kMockAgent, + kClose, + kOriginalClose, + kOrigin, + kOriginalDispatch, + kConnected + } = require_mock_symbols(); + var { MockInterceptor } = require_mock_interceptor(); + var Symbols = require_symbols(); + var { InvalidArgumentError } = require_errors(); + var MockClient = class extends Client { + constructor(origin, opts) { + super(origin, opts); + if (!opts || !opts.agent || typeof opts.agent.dispatch !== "function") { + throw new InvalidArgumentError("Argument opts.agent must implement Agent"); + } + this[kMockAgent] = opts.agent; + this[kOrigin] = origin; + this[kDispatches] = []; + this[kConnected] = 1; + this[kOriginalDispatch] = this.dispatch; + this[kOriginalClose] = this.close.bind(this); + this.dispatch = buildMockDispatch.call(this); + this.close = this[kClose]; + } + get [Symbols.kConnected]() { + return this[kConnected]; + } + /** + * Sets up the base interceptor for mocking replies from undici. + */ + intercept(opts) { + return new MockInterceptor(opts, this[kDispatches]); + } + async [kClose]() { + await promisify(this[kOriginalClose])(); + this[kConnected] = 0; + this[kMockAgent][Symbols.kClients].delete(this[kOrigin]); + } + }; + module2.exports = MockClient; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-pool.js +var require_mock_pool = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-pool.js"(exports2, module2) { + "use strict"; + var { promisify } = require("util"); + var Pool = require_pool(); + var { buildMockDispatch } = require_mock_utils(); + var { + kDispatches, + kMockAgent, + kClose, + kOriginalClose, + kOrigin, + kOriginalDispatch, + kConnected + } = require_mock_symbols(); + var { MockInterceptor } = require_mock_interceptor(); + var Symbols = require_symbols(); + var { InvalidArgumentError } = require_errors(); + var MockPool = class extends Pool { + constructor(origin, opts) { + super(origin, opts); + if (!opts || !opts.agent || typeof opts.agent.dispatch !== "function") { + throw new InvalidArgumentError("Argument opts.agent must implement Agent"); + } + this[kMockAgent] = opts.agent; + this[kOrigin] = origin; + this[kDispatches] = []; + this[kConnected] = 1; + this[kOriginalDispatch] = this.dispatch; + this[kOriginalClose] = this.close.bind(this); + this.dispatch = buildMockDispatch.call(this); + this.close = this[kClose]; + } + get [Symbols.kConnected]() { + return this[kConnected]; + } + /** + * Sets up the base interceptor for mocking replies from undici. + */ + intercept(opts) { + return new MockInterceptor(opts, this[kDispatches]); + } + async [kClose]() { + await promisify(this[kOriginalClose])(); + this[kConnected] = 0; + this[kMockAgent][Symbols.kClients].delete(this[kOrigin]); + } + }; + module2.exports = MockPool; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/pluralizer.js +var require_pluralizer = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/pluralizer.js"(exports2, module2) { + "use strict"; + var singulars = { + pronoun: "it", + is: "is", + was: "was", + this: "this" + }; + var plurals = { + pronoun: "they", + is: "are", + was: "were", + this: "these" + }; + module2.exports = class Pluralizer { + constructor(singular, plural) { + this.singular = singular; + this.plural = plural; + } + pluralize(count) { + const one = count === 1; + const keys = one ? singulars : plurals; + const noun = one ? this.singular : this.plural; + return { ...keys, count, noun }; + } + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/pending-interceptors-formatter.js +var require_pending_interceptors_formatter = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/pending-interceptors-formatter.js"(exports2, module2) { + "use strict"; + var { Transform } = require("stream"); + var { Console } = require("console"); + module2.exports = class PendingInterceptorsFormatter { + constructor({ disableColors } = {}) { + this.transform = new Transform({ + transform(chunk, _enc, cb) { + cb(null, chunk); + } + }); + this.logger = new Console({ + stdout: this.transform, + inspectOptions: { + colors: !disableColors && !process.env.CI + } + }); + } + format(pendingInterceptors) { + const withPrettyHeaders = pendingInterceptors.map( + ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({ + Method: method, + Origin: origin, + Path: path, + "Status code": statusCode, + Persistent: persist ? "\u2705" : "\u274C", + Invocations: timesInvoked, + Remaining: persist ? Infinity : times - timesInvoked + }) + ); + this.logger.table(withPrettyHeaders); + return this.transform.read().toString(); + } + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-agent.js +var require_mock_agent = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/mock/mock-agent.js"(exports2, module2) { + "use strict"; + var { kClients } = require_symbols(); + var Agent = require_agent(); + var { + kAgent, + kMockAgentSet, + kMockAgentGet, + kDispatches, + kIsMockActive, + kNetConnect, + kGetNetConnect, + kOptions, + kFactory + } = require_mock_symbols(); + var MockClient = require_mock_client(); + var MockPool = require_mock_pool(); + var { matchValue, buildMockOptions } = require_mock_utils(); + var { InvalidArgumentError, UndiciError } = require_errors(); + var Dispatcher = require_dispatcher(); + var Pluralizer = require_pluralizer(); + var PendingInterceptorsFormatter = require_pending_interceptors_formatter(); + var FakeWeakRef = class { + constructor(value) { + this.value = value; + } + deref() { + return this.value; + } + }; + var MockAgent = class extends Dispatcher { + constructor(opts) { + super(opts); + this[kNetConnect] = true; + this[kIsMockActive] = true; + if (opts && opts.agent && typeof opts.agent.dispatch !== "function") { + throw new InvalidArgumentError("Argument opts.agent must implement Agent"); + } + const agent = opts && opts.agent ? opts.agent : new Agent(opts); + this[kAgent] = agent; + this[kClients] = agent[kClients]; + this[kOptions] = buildMockOptions(opts); + } + get(origin) { + let dispatcher = this[kMockAgentGet](origin); + if (!dispatcher) { + dispatcher = this[kFactory](origin); + this[kMockAgentSet](origin, dispatcher); + } + return dispatcher; + } + dispatch(opts, handler) { + this.get(opts.origin); + return this[kAgent].dispatch(opts, handler); + } + async close() { + await this[kAgent].close(); + this[kClients].clear(); + } + deactivate() { + this[kIsMockActive] = false; + } + activate() { + this[kIsMockActive] = true; + } + enableNetConnect(matcher) { + if (typeof matcher === "string" || typeof matcher === "function" || matcher instanceof RegExp) { + if (Array.isArray(this[kNetConnect])) { + this[kNetConnect].push(matcher); + } else { + this[kNetConnect] = [matcher]; + } + } else if (typeof matcher === "undefined") { + this[kNetConnect] = true; + } else { + throw new InvalidArgumentError("Unsupported matcher. Must be one of String|Function|RegExp."); + } + } + disableNetConnect() { + this[kNetConnect] = false; + } + // This is required to bypass issues caused by using global symbols - see: + // https://github.com/nodejs/undici/issues/1447 + get isMockActive() { + return this[kIsMockActive]; + } + [kMockAgentSet](origin, dispatcher) { + this[kClients].set(origin, new FakeWeakRef(dispatcher)); + } + [kFactory](origin) { + const mockOptions = Object.assign({ agent: this }, this[kOptions]); + return this[kOptions] && this[kOptions].connections === 1 ? new MockClient(origin, mockOptions) : new MockPool(origin, mockOptions); + } + [kMockAgentGet](origin) { + const ref = this[kClients].get(origin); + if (ref) { + return ref.deref(); + } + if (typeof origin !== "string") { + const dispatcher = this[kFactory]("http://localhost:9999"); + this[kMockAgentSet](origin, dispatcher); + return dispatcher; + } + for (const [keyMatcher, nonExplicitRef] of Array.from(this[kClients])) { + const nonExplicitDispatcher = nonExplicitRef.deref(); + if (nonExplicitDispatcher && typeof keyMatcher !== "string" && matchValue(keyMatcher, origin)) { + const dispatcher = this[kFactory](origin); + this[kMockAgentSet](origin, dispatcher); + dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches]; + return dispatcher; + } + } + } + [kGetNetConnect]() { + return this[kNetConnect]; + } + pendingInterceptors() { + const mockAgentClients = this[kClients]; + return Array.from(mockAgentClients.entries()).flatMap(([origin, scope]) => scope.deref()[kDispatches].map((dispatch) => ({ ...dispatch, origin }))).filter(({ pending }) => pending); + } + assertNoPendingInterceptors({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) { + const pending = this.pendingInterceptors(); + if (pending.length === 0) { + return; + } + const pluralizer = new Pluralizer("interceptor", "interceptors").pluralize(pending.length); + throw new UndiciError(` +${pluralizer.count} ${pluralizer.noun} ${pluralizer.is} pending: + +${pendingInterceptorsFormatter.format(pending)} +`.trim()); + } + }; + module2.exports = MockAgent; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/proxy-agent.js +var require_proxy_agent = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/proxy-agent.js"(exports2, module2) { + "use strict"; + var { kProxy, kClose, kDestroy, kInterceptors } = require_symbols(); + var { URL: URL2 } = require("url"); + var Agent = require_agent(); + var Pool = require_pool(); + var DispatcherBase = require_dispatcher_base(); + var { InvalidArgumentError, RequestAbortedError } = require_errors(); + var buildConnector = require_connect(); + var kAgent = Symbol("proxy agent"); + var kClient = Symbol("proxy client"); + var kProxyHeaders = Symbol("proxy headers"); + var kRequestTls = Symbol("request tls settings"); + var kProxyTls = Symbol("proxy tls settings"); + var kConnectEndpoint = Symbol("connect endpoint function"); + function defaultProtocolPort(protocol) { + return protocol === "https:" ? 443 : 80; + } + function buildProxyOptions(opts) { + if (typeof opts === "string") { + opts = { uri: opts }; + } + if (!opts || !opts.uri) { + throw new InvalidArgumentError("Proxy opts.uri is mandatory"); + } + return { + uri: opts.uri, + protocol: opts.protocol || "https" + }; + } + function defaultFactory(origin, opts) { + return new Pool(origin, opts); + } + var ProxyAgent = class extends DispatcherBase { + constructor(opts) { + super(opts); + this[kProxy] = buildProxyOptions(opts); + this[kAgent] = new Agent(opts); + this[kInterceptors] = opts.interceptors && opts.interceptors.ProxyAgent && Array.isArray(opts.interceptors.ProxyAgent) ? opts.interceptors.ProxyAgent : []; + if (typeof opts === "string") { + opts = { uri: opts }; + } + if (!opts || !opts.uri) { + throw new InvalidArgumentError("Proxy opts.uri is mandatory"); + } + const { clientFactory = defaultFactory } = opts; + if (typeof clientFactory !== "function") { + throw new InvalidArgumentError("Proxy opts.clientFactory must be a function."); + } + this[kRequestTls] = opts.requestTls; + this[kProxyTls] = opts.proxyTls; + this[kProxyHeaders] = opts.headers || {}; + if (opts.auth && opts.token) { + throw new InvalidArgumentError("opts.auth cannot be used in combination with opts.token"); + } else if (opts.auth) { + this[kProxyHeaders]["proxy-authorization"] = `Basic ${opts.auth}`; + } else if (opts.token) { + this[kProxyHeaders]["proxy-authorization"] = opts.token; + } + const resolvedUrl = new URL2(opts.uri); + const { origin, port, host } = resolvedUrl; + const connect = buildConnector({ ...opts.proxyTls }); + this[kConnectEndpoint] = buildConnector({ ...opts.requestTls }); + this[kClient] = clientFactory(resolvedUrl, { connect }); + this[kAgent] = new Agent({ + ...opts, + connect: async (opts2, callback) => { + let requestedHost = opts2.host; + if (!opts2.port) { + requestedHost += `:${defaultProtocolPort(opts2.protocol)}`; + } + try { + const { socket, statusCode } = await this[kClient].connect({ + origin, + port, + path: requestedHost, + signal: opts2.signal, + headers: { + ...this[kProxyHeaders], + host + } + }); + if (statusCode !== 200) { + socket.on("error", () => { + }).destroy(); + callback(new RequestAbortedError("Proxy response !== 200 when HTTP Tunneling")); + } + if (opts2.protocol !== "https:") { + callback(null, socket); + return; + } + let servername; + if (this[kRequestTls]) { + servername = this[kRequestTls].servername; + } else { + servername = opts2.servername; + } + this[kConnectEndpoint]({ ...opts2, servername, httpSocket: socket }, callback); + } catch (err) { + callback(err); + } + } + }); + } + dispatch(opts, handler) { + const { host } = new URL2(opts.origin); + const headers = buildHeaders(opts.headers); + throwIfProxyAuthIsSent(headers); + return this[kAgent].dispatch( + { + ...opts, + headers: { + ...headers, + host + } + }, + handler + ); + } + async [kClose]() { + await this[kAgent].close(); + await this[kClient].close(); + } + async [kDestroy]() { + await this[kAgent].destroy(); + await this[kClient].destroy(); + } + }; + function buildHeaders(headers) { + if (Array.isArray(headers)) { + const headersPair = {}; + for (let i = 0; i < headers.length; i += 2) { + headersPair[headers[i]] = headers[i + 1]; + } + return headersPair; + } + return headers; + } + function throwIfProxyAuthIsSent(headers) { + const existProxyAuth = headers && Object.keys(headers).find((key) => key.toLowerCase() === "proxy-authorization"); + if (existProxyAuth) { + throw new InvalidArgumentError("Proxy-Authorization should be sent in ProxyAgent constructor"); + } + } + module2.exports = ProxyAgent; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/global.js +var require_global2 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/global.js"(exports2, module2) { + "use strict"; + var globalDispatcher = Symbol.for("undici.globalDispatcher.1"); + var { InvalidArgumentError } = require_errors(); + var Agent = require_agent(); + if (getGlobalDispatcher() === void 0) { + setGlobalDispatcher(new Agent()); + } + function setGlobalDispatcher(agent) { + if (!agent || typeof agent.dispatch !== "function") { + throw new InvalidArgumentError("Argument agent must implement Agent"); + } + Object.defineProperty(globalThis, globalDispatcher, { + value: agent, + writable: true, + enumerable: false, + configurable: false + }); + } + function getGlobalDispatcher() { + return globalThis[globalDispatcher]; + } + module2.exports = { + setGlobalDispatcher, + getGlobalDispatcher + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/handler/DecoratorHandler.js +var require_DecoratorHandler = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/handler/DecoratorHandler.js"(exports2, module2) { + "use strict"; + module2.exports = class DecoratorHandler { + constructor(handler) { + this.handler = handler; + } + onConnect(...args) { + return this.handler.onConnect(...args); + } + onError(...args) { + return this.handler.onError(...args); + } + onUpgrade(...args) { + return this.handler.onUpgrade(...args); + } + onHeaders(...args) { + return this.handler.onHeaders(...args); + } + onData(...args) { + return this.handler.onData(...args); + } + onComplete(...args) { + return this.handler.onComplete(...args); + } + onBodySent(...args) { + return this.handler.onBodySent(...args); + } + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/headers.js +var require_headers = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/headers.js"(exports2, module2) { + "use strict"; + var { kHeadersList } = require_symbols(); + var { kGuard } = require_symbols2(); + var { kEnumerableProperty } = require_util(); + var { + makeIterator, + isValidHeaderName, + isValidHeaderValue + } = require_util2(); + var { webidl } = require_webidl(); + var assert = require("assert"); + var kHeadersMap = Symbol("headers map"); + var kHeadersSortedMap = Symbol("headers map sorted"); + function headerValueNormalize(potentialValue) { + let i = potentialValue.length; + while (/[\r\n\t ]/.test(potentialValue.charAt(--i))) + ; + return potentialValue.slice(0, i + 1).replace(/^[\r\n\t ]+/, ""); + } + function fill(headers, object) { + if (Array.isArray(object)) { + for (const header of object) { + if (header.length !== 2) { + throw webidl.errors.exception({ + header: "Headers constructor", + message: `expected name/value pair to be length 2, found ${header.length}.` + }); + } + headers.append(header[0], header[1]); + } + } else if (typeof object === "object" && object !== null) { + for (const [key, value] of Object.entries(object)) { + headers.append(key, value); + } + } else { + throw webidl.errors.conversionFailed({ + prefix: "Headers constructor", + argument: "Argument 1", + types: ["sequence>", "record"] + }); + } + } + var HeadersList = class _HeadersList { + /** @type {[string, string][]|null} */ + cookies = null; + constructor(init) { + if (init instanceof _HeadersList) { + this[kHeadersMap] = new Map(init[kHeadersMap]); + this[kHeadersSortedMap] = init[kHeadersSortedMap]; + this.cookies = init.cookies; + } else { + this[kHeadersMap] = new Map(init); + this[kHeadersSortedMap] = null; + } + } + // https://fetch.spec.whatwg.org/#header-list-contains + contains(name) { + name = name.toLowerCase(); + return this[kHeadersMap].has(name); + } + clear() { + this[kHeadersMap].clear(); + this[kHeadersSortedMap] = null; + this.cookies = null; + } + // https://fetch.spec.whatwg.org/#concept-header-list-append + append(name, value) { + this[kHeadersSortedMap] = null; + const lowercaseName = name.toLowerCase(); + const exists = this[kHeadersMap].get(lowercaseName); + if (exists) { + const delimiter = lowercaseName === "cookie" ? "; " : ", "; + this[kHeadersMap].set(lowercaseName, { + name: exists.name, + value: `${exists.value}${delimiter}${value}` + }); + } else { + this[kHeadersMap].set(lowercaseName, { name, value }); + } + if (lowercaseName === "set-cookie") { + this.cookies ?? (this.cookies = []); + this.cookies.push(value); + } + } + // https://fetch.spec.whatwg.org/#concept-header-list-set + set(name, value) { + this[kHeadersSortedMap] = null; + const lowercaseName = name.toLowerCase(); + if (lowercaseName === "set-cookie") { + this.cookies = [value]; + } + return this[kHeadersMap].set(lowercaseName, { name, value }); + } + // https://fetch.spec.whatwg.org/#concept-header-list-delete + delete(name) { + this[kHeadersSortedMap] = null; + name = name.toLowerCase(); + if (name === "set-cookie") { + this.cookies = null; + } + return this[kHeadersMap].delete(name); + } + // https://fetch.spec.whatwg.org/#concept-header-list-get + get(name) { + var _a; + if (!this.contains(name)) { + return null; + } + return ((_a = this[kHeadersMap].get(name.toLowerCase())) == null ? void 0 : _a.value) ?? null; + } + *[Symbol.iterator]() { + for (const [name, { value }] of this[kHeadersMap]) { + yield [name, value]; + } + } + get entries() { + const headers = {}; + if (this[kHeadersMap].size) { + for (const { name, value } of this[kHeadersMap].values()) { + headers[name] = value; + } + } + return headers; + } + }; + var Headers = class _Headers { + constructor(init = void 0) { + this[kHeadersList] = new HeadersList(); + this[kGuard] = "none"; + if (init !== void 0) { + init = webidl.converters.HeadersInit(init); + fill(this, init); + } + } + // https://fetch.spec.whatwg.org/#dom-headers-append + append(name, value) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 2, { header: "Headers.append" }); + name = webidl.converters.ByteString(name); + value = webidl.converters.ByteString(value); + value = headerValueNormalize(value); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: "Headers.append", + value: name, + type: "header name" + }); + } else if (!isValidHeaderValue(value)) { + throw webidl.errors.invalidArgument({ + prefix: "Headers.append", + value, + type: "header value" + }); + } + if (this[kGuard] === "immutable") { + throw new TypeError("immutable"); + } else if (this[kGuard] === "request-no-cors") { + } + return this[kHeadersList].append(name, value); + } + // https://fetch.spec.whatwg.org/#dom-headers-delete + delete(name) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 1, { header: "Headers.delete" }); + name = webidl.converters.ByteString(name); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: "Headers.delete", + value: name, + type: "header name" + }); + } + if (this[kGuard] === "immutable") { + throw new TypeError("immutable"); + } else if (this[kGuard] === "request-no-cors") { + } + if (!this[kHeadersList].contains(name)) { + return; + } + return this[kHeadersList].delete(name); + } + // https://fetch.spec.whatwg.org/#dom-headers-get + get(name) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 1, { header: "Headers.get" }); + name = webidl.converters.ByteString(name); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: "Headers.get", + value: name, + type: "header name" + }); + } + return this[kHeadersList].get(name); + } + // https://fetch.spec.whatwg.org/#dom-headers-has + has(name) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 1, { header: "Headers.has" }); + name = webidl.converters.ByteString(name); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: "Headers.has", + value: name, + type: "header name" + }); + } + return this[kHeadersList].contains(name); + } + // https://fetch.spec.whatwg.org/#dom-headers-set + set(name, value) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 2, { header: "Headers.set" }); + name = webidl.converters.ByteString(name); + value = webidl.converters.ByteString(value); + value = headerValueNormalize(value); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: "Headers.set", + value: name, + type: "header name" + }); + } else if (!isValidHeaderValue(value)) { + throw webidl.errors.invalidArgument({ + prefix: "Headers.set", + value, + type: "header value" + }); + } + if (this[kGuard] === "immutable") { + throw new TypeError("immutable"); + } else if (this[kGuard] === "request-no-cors") { + } + return this[kHeadersList].set(name, value); + } + // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie + getSetCookie() { + webidl.brandCheck(this, _Headers); + const list = this[kHeadersList].cookies; + if (list) { + return [...list]; + } + return []; + } + // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine + get [kHeadersSortedMap]() { + if (this[kHeadersList][kHeadersSortedMap]) { + return this[kHeadersList][kHeadersSortedMap]; + } + const headers = []; + const names = [...this[kHeadersList]].sort((a, b) => a[0] < b[0] ? -1 : 1); + const cookies = this[kHeadersList].cookies; + for (const [name, value] of names) { + if (name === "set-cookie") { + for (const value2 of cookies) { + headers.push([name, value2]); + } + } else { + assert(value !== null); + headers.push([name, value]); + } + } + this[kHeadersList][kHeadersSortedMap] = headers; + return headers; + } + keys() { + webidl.brandCheck(this, _Headers); + return makeIterator( + () => [...this[kHeadersSortedMap].values()], + "Headers", + "key" + ); + } + values() { + webidl.brandCheck(this, _Headers); + return makeIterator( + () => [...this[kHeadersSortedMap].values()], + "Headers", + "value" + ); + } + entries() { + webidl.brandCheck(this, _Headers); + return makeIterator( + () => [...this[kHeadersSortedMap].values()], + "Headers", + "key+value" + ); + } + /** + * @param {(value: string, key: string, self: Headers) => void} callbackFn + * @param {unknown} thisArg + */ + forEach(callbackFn, thisArg = globalThis) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 1, { header: "Headers.forEach" }); + if (typeof callbackFn !== "function") { + throw new TypeError( + "Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'." + ); + } + for (const [key, value] of this) { + callbackFn.apply(thisArg, [value, key, this]); + } + } + [Symbol.for("nodejs.util.inspect.custom")]() { + webidl.brandCheck(this, _Headers); + return this[kHeadersList]; + } + }; + Headers.prototype[Symbol.iterator] = Headers.prototype.entries; + Object.defineProperties(Headers.prototype, { + append: kEnumerableProperty, + delete: kEnumerableProperty, + get: kEnumerableProperty, + has: kEnumerableProperty, + set: kEnumerableProperty, + getSetCookie: kEnumerableProperty, + keys: kEnumerableProperty, + values: kEnumerableProperty, + entries: kEnumerableProperty, + forEach: kEnumerableProperty, + [Symbol.iterator]: { enumerable: false }, + [Symbol.toStringTag]: { + value: "Headers", + configurable: true + } + }); + webidl.converters.HeadersInit = function(V) { + if (webidl.util.Type(V) === "Object") { + if (V[Symbol.iterator]) { + return webidl.converters["sequence>"](V); + } + return webidl.converters["record"](V); + } + throw webidl.errors.conversionFailed({ + prefix: "Headers constructor", + argument: "Argument 1", + types: ["sequence>", "record"] + }); + }; + module2.exports = { + fill, + Headers, + HeadersList + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/response.js +var require_response = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/response.js"(exports2, module2) { + "use strict"; + var { Headers, HeadersList, fill } = require_headers(); + var { extractBody, cloneBody, mixinBody } = require_body(); + var util = require_util(); + var { kEnumerableProperty } = util; + var { + isValidReasonPhrase, + isCancelled, + isAborted, + isBlobLike, + serializeJavascriptValueToJSONString, + isErrorLike, + isomorphicEncode + } = require_util2(); + var { + redirectStatusSet, + nullBodyStatus, + DOMException: DOMException2 + } = require_constants(); + var { kState, kHeaders, kGuard, kRealm } = require_symbols2(); + var { webidl } = require_webidl(); + var { FormData } = require_formdata(); + var { getGlobalOrigin } = require_global(); + var { URLSerializer } = require_dataURL(); + var { kHeadersList } = require_symbols(); + var assert = require("assert"); + var { types } = require("util"); + var ReadableStream = globalThis.ReadableStream || require("stream/web").ReadableStream; + var textEncoder = new TextEncoder("utf-8"); + var Response = class _Response { + // Creates network error Response. + static error() { + const relevantRealm = { settingsObject: {} }; + const responseObject = new _Response(); + responseObject[kState] = makeNetworkError(); + responseObject[kRealm] = relevantRealm; + responseObject[kHeaders][kHeadersList] = responseObject[kState].headersList; + responseObject[kHeaders][kGuard] = "immutable"; + responseObject[kHeaders][kRealm] = relevantRealm; + return responseObject; + } + // https://fetch.spec.whatwg.org/#dom-response-json + static json(data, init = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: "Response.json" }); + if (init !== null) { + init = webidl.converters.ResponseInit(init); + } + const bytes = textEncoder.encode( + serializeJavascriptValueToJSONString(data) + ); + const body = extractBody(bytes); + const relevantRealm = { settingsObject: {} }; + const responseObject = new _Response(); + responseObject[kRealm] = relevantRealm; + responseObject[kHeaders][kGuard] = "response"; + responseObject[kHeaders][kRealm] = relevantRealm; + initializeResponse(responseObject, init, { body: body[0], type: "application/json" }); + return responseObject; + } + // Creates a redirect Response that redirects to url with status status. + static redirect(url, status = 302) { + const relevantRealm = { settingsObject: {} }; + webidl.argumentLengthCheck(arguments, 1, { header: "Response.redirect" }); + url = webidl.converters.USVString(url); + status = webidl.converters["unsigned short"](status); + let parsedURL; + try { + parsedURL = new URL(url, getGlobalOrigin()); + } catch (err) { + throw Object.assign(new TypeError("Failed to parse URL from " + url), { + cause: err + }); + } + if (!redirectStatusSet.has(status)) { + throw new RangeError("Invalid status code " + status); + } + const responseObject = new _Response(); + responseObject[kRealm] = relevantRealm; + responseObject[kHeaders][kGuard] = "immutable"; + responseObject[kHeaders][kRealm] = relevantRealm; + responseObject[kState].status = status; + const value = isomorphicEncode(URLSerializer(parsedURL)); + responseObject[kState].headersList.append("location", value); + return responseObject; + } + // https://fetch.spec.whatwg.org/#dom-response + constructor(body = null, init = {}) { + if (body !== null) { + body = webidl.converters.BodyInit(body); + } + init = webidl.converters.ResponseInit(init); + this[kRealm] = { settingsObject: {} }; + this[kState] = makeResponse({}); + this[kHeaders] = new Headers(); + this[kHeaders][kGuard] = "response"; + this[kHeaders][kHeadersList] = this[kState].headersList; + this[kHeaders][kRealm] = this[kRealm]; + let bodyWithType = null; + if (body != null) { + const [extractedBody, type] = extractBody(body); + bodyWithType = { body: extractedBody, type }; + } + initializeResponse(this, init, bodyWithType); + } + // Returns response’s type, e.g., "cors". + get type() { + webidl.brandCheck(this, _Response); + return this[kState].type; + } + // Returns response’s URL, if it has one; otherwise the empty string. + get url() { + webidl.brandCheck(this, _Response); + const urlList = this[kState].urlList; + const url = urlList[urlList.length - 1] ?? null; + if (url === null) { + return ""; + } + return URLSerializer(url, true); + } + // Returns whether response was obtained through a redirect. + get redirected() { + webidl.brandCheck(this, _Response); + return this[kState].urlList.length > 1; + } + // Returns response’s status. + get status() { + webidl.brandCheck(this, _Response); + return this[kState].status; + } + // Returns whether response’s status is an ok status. + get ok() { + webidl.brandCheck(this, _Response); + return this[kState].status >= 200 && this[kState].status <= 299; + } + // Returns response’s status message. + get statusText() { + webidl.brandCheck(this, _Response); + return this[kState].statusText; + } + // Returns response’s headers as Headers. + get headers() { + webidl.brandCheck(this, _Response); + return this[kHeaders]; + } + get body() { + webidl.brandCheck(this, _Response); + return this[kState].body ? this[kState].body.stream : null; + } + get bodyUsed() { + webidl.brandCheck(this, _Response); + return !!this[kState].body && util.isDisturbed(this[kState].body.stream); + } + // Returns a clone of response. + clone() { + webidl.brandCheck(this, _Response); + if (this.bodyUsed || this.body && this.body.locked) { + throw webidl.errors.exception({ + header: "Response.clone", + message: "Body has already been consumed." + }); + } + const clonedResponse = cloneResponse(this[kState]); + const clonedResponseObject = new _Response(); + clonedResponseObject[kState] = clonedResponse; + clonedResponseObject[kRealm] = this[kRealm]; + clonedResponseObject[kHeaders][kHeadersList] = clonedResponse.headersList; + clonedResponseObject[kHeaders][kGuard] = this[kHeaders][kGuard]; + clonedResponseObject[kHeaders][kRealm] = this[kHeaders][kRealm]; + return clonedResponseObject; + } + }; + mixinBody(Response); + Object.defineProperties(Response.prototype, { + type: kEnumerableProperty, + url: kEnumerableProperty, + status: kEnumerableProperty, + ok: kEnumerableProperty, + redirected: kEnumerableProperty, + statusText: kEnumerableProperty, + headers: kEnumerableProperty, + clone: kEnumerableProperty, + body: kEnumerableProperty, + bodyUsed: kEnumerableProperty, + [Symbol.toStringTag]: { + value: "Response", + configurable: true + } + }); + Object.defineProperties(Response, { + json: kEnumerableProperty, + redirect: kEnumerableProperty, + error: kEnumerableProperty + }); + function cloneResponse(response) { + if (response.internalResponse) { + return filterResponse( + cloneResponse(response.internalResponse), + response.type + ); + } + const newResponse = makeResponse({ ...response, body: null }); + if (response.body != null) { + newResponse.body = cloneBody(response.body); + } + return newResponse; + } + function makeResponse(init) { + return { + aborted: false, + rangeRequested: false, + timingAllowPassed: false, + requestIncludesCredentials: false, + type: "default", + status: 200, + timingInfo: null, + cacheState: "", + statusText: "", + ...init, + headersList: init.headersList ? new HeadersList(init.headersList) : new HeadersList(), + urlList: init.urlList ? [...init.urlList] : [] + }; + } + function makeNetworkError(reason) { + const isError = isErrorLike(reason); + return makeResponse({ + type: "error", + status: 0, + error: isError ? reason : new Error(reason ? String(reason) : reason), + aborted: reason && reason.name === "AbortError" + }); + } + function makeFilteredResponse(response, state) { + state = { + internalResponse: response, + ...state + }; + return new Proxy(response, { + get(target, p) { + return p in state ? state[p] : target[p]; + }, + set(target, p, value) { + assert(!(p in state)); + target[p] = value; + return true; + } + }); + } + function filterResponse(response, type) { + if (type === "basic") { + return makeFilteredResponse(response, { + type: "basic", + headersList: response.headersList + }); + } else if (type === "cors") { + return makeFilteredResponse(response, { + type: "cors", + headersList: response.headersList + }); + } else if (type === "opaque") { + return makeFilteredResponse(response, { + type: "opaque", + urlList: Object.freeze([]), + status: 0, + statusText: "", + body: null + }); + } else if (type === "opaqueredirect") { + return makeFilteredResponse(response, { + type: "opaqueredirect", + status: 0, + statusText: "", + headersList: [], + body: null + }); + } else { + assert(false); + } + } + function makeAppropriateNetworkError(fetchParams, err = null) { + assert(isCancelled(fetchParams)); + return isAborted(fetchParams) ? makeNetworkError(Object.assign(new DOMException2("The operation was aborted.", "AbortError"), { cause: err })) : makeNetworkError(Object.assign(new DOMException2("Request was cancelled."), { cause: err })); + } + function initializeResponse(response, init, body) { + if (init.status !== null && (init.status < 200 || init.status > 599)) { + throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.'); + } + if ("statusText" in init && init.statusText != null) { + if (!isValidReasonPhrase(String(init.statusText))) { + throw new TypeError("Invalid statusText"); + } + } + if ("status" in init && init.status != null) { + response[kState].status = init.status; + } + if ("statusText" in init && init.statusText != null) { + response[kState].statusText = init.statusText; + } + if ("headers" in init && init.headers != null) { + fill(response[kHeaders], init.headers); + } + if (body) { + if (nullBodyStatus.includes(response.status)) { + throw webidl.errors.exception({ + header: "Response constructor", + message: "Invalid response status code " + response.status + }); + } + response[kState].body = body.body; + if (body.type != null && !response[kState].headersList.contains("Content-Type")) { + response[kState].headersList.append("content-type", body.type); + } + } + } + webidl.converters.ReadableStream = webidl.interfaceConverter( + ReadableStream + ); + webidl.converters.FormData = webidl.interfaceConverter( + FormData + ); + webidl.converters.URLSearchParams = webidl.interfaceConverter( + URLSearchParams + ); + webidl.converters.XMLHttpRequestBodyInit = function(V) { + if (typeof V === "string") { + return webidl.converters.USVString(V); + } + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }); + } + if (types.isAnyArrayBuffer(V) || types.isTypedArray(V) || types.isDataView(V)) { + return webidl.converters.BufferSource(V); + } + if (util.isFormDataLike(V)) { + return webidl.converters.FormData(V, { strict: false }); + } + if (V instanceof URLSearchParams) { + return webidl.converters.URLSearchParams(V); + } + return webidl.converters.DOMString(V); + }; + webidl.converters.BodyInit = function(V) { + if (V instanceof ReadableStream) { + return webidl.converters.ReadableStream(V); + } + if (V == null ? void 0 : V[Symbol.asyncIterator]) { + return V; + } + return webidl.converters.XMLHttpRequestBodyInit(V); + }; + webidl.converters.ResponseInit = webidl.dictionaryConverter([ + { + key: "status", + converter: webidl.converters["unsigned short"], + defaultValue: 200 + }, + { + key: "statusText", + converter: webidl.converters.ByteString, + defaultValue: "" + }, + { + key: "headers", + converter: webidl.converters.HeadersInit + } + ]); + module2.exports = { + makeNetworkError, + makeResponse, + makeAppropriateNetworkError, + filterResponse, + Response, + cloneResponse + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/request.js +var require_request2 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/request.js"(exports2, module2) { + "use strict"; + var { extractBody, mixinBody, cloneBody } = require_body(); + var { Headers, fill: fillHeaders, HeadersList } = require_headers(); + var { FinalizationRegistry } = require_dispatcher_weakref()(); + var util = require_util(); + var { + isValidHTTPToken, + sameOrigin, + normalizeMethod, + makePolicyContainer + } = require_util2(); + var { + forbiddenMethodsSet, + corsSafeListedMethodsSet, + referrerPolicy, + requestRedirect, + requestMode, + requestCredentials, + requestCache, + requestDuplex + } = require_constants(); + var { kEnumerableProperty } = util; + var { kHeaders, kSignal, kState, kGuard, kRealm } = require_symbols2(); + var { webidl } = require_webidl(); + var { getGlobalOrigin } = require_global(); + var { URLSerializer } = require_dataURL(); + var { kHeadersList } = require_symbols(); + var assert = require("assert"); + var { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = require("events"); + var TransformStream = globalThis.TransformStream; + var kInit = Symbol("init"); + var kAbortController = Symbol("abortController"); + var requestFinalizer = new FinalizationRegistry(({ signal, abort }) => { + signal.removeEventListener("abort", abort); + }); + var Request = class _Request { + // https://fetch.spec.whatwg.org/#dom-request + constructor(input, init = {}) { + var _a, _b; + if (input === kInit) { + return; + } + webidl.argumentLengthCheck(arguments, 1, { header: "Request constructor" }); + input = webidl.converters.RequestInfo(input); + init = webidl.converters.RequestInit(init); + this[kRealm] = { + settingsObject: { + baseUrl: getGlobalOrigin(), + get origin() { + var _a2; + return (_a2 = this.baseUrl) == null ? void 0 : _a2.origin; + }, + policyContainer: makePolicyContainer() + } + }; + let request3 = null; + let fallbackMode = null; + const baseUrl = this[kRealm].settingsObject.baseUrl; + let signal = null; + if (typeof input === "string") { + let parsedURL; + try { + parsedURL = new URL(input, baseUrl); + } catch (err) { + throw new TypeError("Failed to parse URL from " + input, { cause: err }); + } + if (parsedURL.username || parsedURL.password) { + throw new TypeError( + "Request cannot be constructed from a URL that includes credentials: " + input + ); + } + request3 = makeRequest({ urlList: [parsedURL] }); + fallbackMode = "cors"; + } else { + assert(input instanceof _Request); + request3 = input[kState]; + signal = input[kSignal]; + } + const origin = this[kRealm].settingsObject.origin; + let window = "client"; + if (((_b = (_a = request3.window) == null ? void 0 : _a.constructor) == null ? void 0 : _b.name) === "EnvironmentSettingsObject" && sameOrigin(request3.window, origin)) { + window = request3.window; + } + if (init.window != null) { + throw new TypeError(`'window' option '${window}' must be null`); + } + if ("window" in init) { + window = "no-window"; + } + request3 = makeRequest({ + // URL request’s URL. + // undici implementation note: this is set as the first item in request's urlList in makeRequest + // method request’s method. + method: request3.method, + // header list A copy of request’s header list. + // undici implementation note: headersList is cloned in makeRequest + headersList: request3.headersList, + // unsafe-request flag Set. + unsafeRequest: request3.unsafeRequest, + // client This’s relevant settings object. + client: this[kRealm].settingsObject, + // window window. + window, + // priority request’s priority. + priority: request3.priority, + // origin request’s origin. The propagation of the origin is only significant for navigation requests + // being handled by a service worker. In this scenario a request can have an origin that is different + // from the current client. + origin: request3.origin, + // referrer request’s referrer. + referrer: request3.referrer, + // referrer policy request’s referrer policy. + referrerPolicy: request3.referrerPolicy, + // mode request’s mode. + mode: request3.mode, + // credentials mode request’s credentials mode. + credentials: request3.credentials, + // cache mode request’s cache mode. + cache: request3.cache, + // redirect mode request’s redirect mode. + redirect: request3.redirect, + // integrity metadata request’s integrity metadata. + integrity: request3.integrity, + // keepalive request’s keepalive. + keepalive: request3.keepalive, + // reload-navigation flag request’s reload-navigation flag. + reloadNavigation: request3.reloadNavigation, + // history-navigation flag request’s history-navigation flag. + historyNavigation: request3.historyNavigation, + // URL list A clone of request’s URL list. + urlList: [...request3.urlList] + }); + if (Object.keys(init).length > 0) { + if (request3.mode === "navigate") { + request3.mode = "same-origin"; + } + request3.reloadNavigation = false; + request3.historyNavigation = false; + request3.origin = "client"; + request3.referrer = "client"; + request3.referrerPolicy = ""; + request3.url = request3.urlList[request3.urlList.length - 1]; + request3.urlList = [request3.url]; + } + if (init.referrer !== void 0) { + const referrer = init.referrer; + if (referrer === "") { + request3.referrer = "no-referrer"; + } else { + let parsedReferrer; + try { + parsedReferrer = new URL(referrer, baseUrl); + } catch (err) { + throw new TypeError(`Referrer "${referrer}" is not a valid URL.`, { cause: err }); + } + if (parsedReferrer.protocol === "about:" && parsedReferrer.hostname === "client" || origin && !sameOrigin(parsedReferrer, this[kRealm].settingsObject.baseUrl)) { + request3.referrer = "client"; + } else { + request3.referrer = parsedReferrer; + } + } + } + if (init.referrerPolicy !== void 0) { + request3.referrerPolicy = init.referrerPolicy; + } + let mode; + if (init.mode !== void 0) { + mode = init.mode; + } else { + mode = fallbackMode; + } + if (mode === "navigate") { + throw webidl.errors.exception({ + header: "Request constructor", + message: "invalid request mode navigate." + }); + } + if (mode != null) { + request3.mode = mode; + } + if (init.credentials !== void 0) { + request3.credentials = init.credentials; + } + if (init.cache !== void 0) { + request3.cache = init.cache; + } + if (request3.cache === "only-if-cached" && request3.mode !== "same-origin") { + throw new TypeError( + "'only-if-cached' can be set only with 'same-origin' mode" + ); + } + if (init.redirect !== void 0) { + request3.redirect = init.redirect; + } + if (init.integrity !== void 0 && init.integrity != null) { + request3.integrity = String(init.integrity); + } + if (init.keepalive !== void 0) { + request3.keepalive = Boolean(init.keepalive); + } + if (init.method !== void 0) { + let method = init.method; + if (!isValidHTTPToken(init.method)) { + throw TypeError(`'${init.method}' is not a valid HTTP method.`); + } + if (forbiddenMethodsSet.has(method.toUpperCase())) { + throw TypeError(`'${init.method}' HTTP method is unsupported.`); + } + method = normalizeMethod(init.method); + request3.method = method; + } + if (init.signal !== void 0) { + signal = init.signal; + } + this[kState] = request3; + const ac = new AbortController(); + this[kSignal] = ac.signal; + this[kSignal][kRealm] = this[kRealm]; + if (signal != null) { + if (!signal || typeof signal.aborted !== "boolean" || typeof signal.addEventListener !== "function") { + throw new TypeError( + "Failed to construct 'Request': member signal is not of type AbortSignal." + ); + } + if (signal.aborted) { + ac.abort(signal.reason); + } else { + this[kAbortController] = ac; + const acRef = new WeakRef(ac); + const abort = function() { + const ac2 = acRef.deref(); + if (ac2 !== void 0) { + ac2.abort(this.reason); + } + }; + try { + if (typeof getMaxListeners === "function" && getMaxListeners(signal) === defaultMaxListeners) { + setMaxListeners(100, signal); + } else if (getEventListeners(signal, "abort").length >= defaultMaxListeners) { + setMaxListeners(100, signal); + } + } catch { + } + util.addAbortListener(signal, abort); + requestFinalizer.register(ac, { signal, abort }); + } + } + this[kHeaders] = new Headers(); + this[kHeaders][kHeadersList] = request3.headersList; + this[kHeaders][kGuard] = "request"; + this[kHeaders][kRealm] = this[kRealm]; + if (mode === "no-cors") { + if (!corsSafeListedMethodsSet.has(request3.method)) { + throw new TypeError( + `'${request3.method} is unsupported in no-cors mode.` + ); + } + this[kHeaders][kGuard] = "request-no-cors"; + } + if (Object.keys(init).length !== 0) { + let headers = new Headers(this[kHeaders]); + if (init.headers !== void 0) { + headers = init.headers; + } + this[kHeaders][kHeadersList].clear(); + if (headers.constructor.name === "Headers") { + for (const [key, val] of headers) { + this[kHeaders].append(key, val); + } + } else { + fillHeaders(this[kHeaders], headers); + } + } + const inputBody = input instanceof _Request ? input[kState].body : null; + if ((init.body != null || inputBody != null) && (request3.method === "GET" || request3.method === "HEAD")) { + throw new TypeError("Request with GET/HEAD method cannot have body."); + } + let initBody = null; + if (init.body != null) { + const [extractedBody, contentType] = extractBody( + init.body, + request3.keepalive + ); + initBody = extractedBody; + if (contentType && !this[kHeaders][kHeadersList].contains("content-type")) { + this[kHeaders].append("content-type", contentType); + } + } + const inputOrInitBody = initBody ?? inputBody; + if (inputOrInitBody != null && inputOrInitBody.source == null) { + if (initBody != null && init.duplex == null) { + throw new TypeError("RequestInit: duplex option is required when sending a body."); + } + if (request3.mode !== "same-origin" && request3.mode !== "cors") { + throw new TypeError( + 'If request is made from ReadableStream, mode should be "same-origin" or "cors"' + ); + } + request3.useCORSPreflightFlag = true; + } + let finalBody = inputOrInitBody; + if (initBody == null && inputBody != null) { + if (util.isDisturbed(inputBody.stream) || inputBody.stream.locked) { + throw new TypeError( + "Cannot construct a Request with a Request object that has already been used." + ); + } + if (!TransformStream) { + TransformStream = require("stream/web").TransformStream; + } + const identityTransform = new TransformStream(); + inputBody.stream.pipeThrough(identityTransform); + finalBody = { + source: inputBody.source, + length: inputBody.length, + stream: identityTransform.readable + }; + } + this[kState].body = finalBody; + } + // Returns request’s HTTP method, which is "GET" by default. + get method() { + webidl.brandCheck(this, _Request); + return this[kState].method; + } + // Returns the URL of request as a string. + get url() { + webidl.brandCheck(this, _Request); + return URLSerializer(this[kState].url); + } + // Returns a Headers object consisting of the headers associated with request. + // Note that headers added in the network layer by the user agent will not + // be accounted for in this object, e.g., the "Host" header. + get headers() { + webidl.brandCheck(this, _Request); + return this[kHeaders]; + } + // Returns the kind of resource requested by request, e.g., "document" + // or "script". + get destination() { + webidl.brandCheck(this, _Request); + return this[kState].destination; + } + // Returns the referrer of request. Its value can be a same-origin URL if + // explicitly set in init, the empty string to indicate no referrer, and + // "about:client" when defaulting to the global’s default. This is used + // during fetching to determine the value of the `Referer` header of the + // request being made. + get referrer() { + webidl.brandCheck(this, _Request); + if (this[kState].referrer === "no-referrer") { + return ""; + } + if (this[kState].referrer === "client") { + return "about:client"; + } + return this[kState].referrer.toString(); + } + // Returns the referrer policy associated with request. + // This is used during fetching to compute the value of the request’s + // referrer. + get referrerPolicy() { + webidl.brandCheck(this, _Request); + return this[kState].referrerPolicy; + } + // Returns the mode associated with request, which is a string indicating + // whether the request will use CORS, or will be restricted to same-origin + // URLs. + get mode() { + webidl.brandCheck(this, _Request); + return this[kState].mode; + } + // Returns the credentials mode associated with request, + // which is a string indicating whether credentials will be sent with the + // request always, never, or only when sent to a same-origin URL. + get credentials() { + return this[kState].credentials; + } + // Returns the cache mode associated with request, + // which is a string indicating how the request will + // interact with the browser’s cache when fetching. + get cache() { + webidl.brandCheck(this, _Request); + return this[kState].cache; + } + // Returns the redirect mode associated with request, + // which is a string indicating how redirects for the + // request will be handled during fetching. A request + // will follow redirects by default. + get redirect() { + webidl.brandCheck(this, _Request); + return this[kState].redirect; + } + // Returns request’s subresource integrity metadata, which is a + // cryptographic hash of the resource being fetched. Its value + // consists of multiple hashes separated by whitespace. [SRI] + get integrity() { + webidl.brandCheck(this, _Request); + return this[kState].integrity; + } + // Returns a boolean indicating whether or not request can outlive the + // global in which it was created. + get keepalive() { + webidl.brandCheck(this, _Request); + return this[kState].keepalive; + } + // Returns a boolean indicating whether or not request is for a reload + // navigation. + get isReloadNavigation() { + webidl.brandCheck(this, _Request); + return this[kState].reloadNavigation; + } + // Returns a boolean indicating whether or not request is for a history + // navigation (a.k.a. back-foward navigation). + get isHistoryNavigation() { + webidl.brandCheck(this, _Request); + return this[kState].historyNavigation; + } + // Returns the signal associated with request, which is an AbortSignal + // object indicating whether or not request has been aborted, and its + // abort event handler. + get signal() { + webidl.brandCheck(this, _Request); + return this[kSignal]; + } + get body() { + webidl.brandCheck(this, _Request); + return this[kState].body ? this[kState].body.stream : null; + } + get bodyUsed() { + webidl.brandCheck(this, _Request); + return !!this[kState].body && util.isDisturbed(this[kState].body.stream); + } + get duplex() { + webidl.brandCheck(this, _Request); + return "half"; + } + // Returns a clone of request. + clone() { + var _a; + webidl.brandCheck(this, _Request); + if (this.bodyUsed || ((_a = this.body) == null ? void 0 : _a.locked)) { + throw new TypeError("unusable"); + } + const clonedRequest = cloneRequest(this[kState]); + const clonedRequestObject = new _Request(kInit); + clonedRequestObject[kState] = clonedRequest; + clonedRequestObject[kRealm] = this[kRealm]; + clonedRequestObject[kHeaders] = new Headers(); + clonedRequestObject[kHeaders][kHeadersList] = clonedRequest.headersList; + clonedRequestObject[kHeaders][kGuard] = this[kHeaders][kGuard]; + clonedRequestObject[kHeaders][kRealm] = this[kHeaders][kRealm]; + const ac = new AbortController(); + if (this.signal.aborted) { + ac.abort(this.signal.reason); + } else { + util.addAbortListener( + this.signal, + () => { + ac.abort(this.signal.reason); + } + ); + } + clonedRequestObject[kSignal] = ac.signal; + return clonedRequestObject; + } + }; + mixinBody(Request); + function makeRequest(init) { + const request3 = { + method: "GET", + localURLsOnly: false, + unsafeRequest: false, + body: null, + client: null, + reservedClient: null, + replacesClientId: "", + window: "client", + keepalive: false, + serviceWorkers: "all", + initiator: "", + destination: "", + priority: null, + origin: "client", + policyContainer: "client", + referrer: "client", + referrerPolicy: "", + mode: "no-cors", + useCORSPreflightFlag: false, + credentials: "same-origin", + useCredentials: false, + cache: "default", + redirect: "follow", + integrity: "", + cryptoGraphicsNonceMetadata: "", + parserMetadata: "", + reloadNavigation: false, + historyNavigation: false, + userActivation: false, + taintedOrigin: false, + redirectCount: 0, + responseTainting: "basic", + preventNoCacheCacheControlHeaderModification: false, + done: false, + timingAllowFailed: false, + ...init, + headersList: init.headersList ? new HeadersList(init.headersList) : new HeadersList() + }; + request3.url = request3.urlList[0]; + return request3; + } + function cloneRequest(request3) { + const newRequest = makeRequest({ ...request3, body: null }); + if (request3.body != null) { + newRequest.body = cloneBody(request3.body); + } + return newRequest; + } + Object.defineProperties(Request.prototype, { + method: kEnumerableProperty, + url: kEnumerableProperty, + headers: kEnumerableProperty, + redirect: kEnumerableProperty, + clone: kEnumerableProperty, + signal: kEnumerableProperty, + duplex: kEnumerableProperty, + destination: kEnumerableProperty, + body: kEnumerableProperty, + bodyUsed: kEnumerableProperty, + isHistoryNavigation: kEnumerableProperty, + isReloadNavigation: kEnumerableProperty, + keepalive: kEnumerableProperty, + integrity: kEnumerableProperty, + cache: kEnumerableProperty, + credentials: kEnumerableProperty, + attribute: kEnumerableProperty, + referrerPolicy: kEnumerableProperty, + referrer: kEnumerableProperty, + mode: kEnumerableProperty, + [Symbol.toStringTag]: { + value: "Request", + configurable: true + } + }); + webidl.converters.Request = webidl.interfaceConverter( + Request + ); + webidl.converters.RequestInfo = function(V) { + if (typeof V === "string") { + return webidl.converters.USVString(V); + } + if (V instanceof Request) { + return webidl.converters.Request(V); + } + return webidl.converters.USVString(V); + }; + webidl.converters.AbortSignal = webidl.interfaceConverter( + AbortSignal + ); + webidl.converters.RequestInit = webidl.dictionaryConverter([ + { + key: "method", + converter: webidl.converters.ByteString + }, + { + key: "headers", + converter: webidl.converters.HeadersInit + }, + { + key: "body", + converter: webidl.nullableConverter( + webidl.converters.BodyInit + ) + }, + { + key: "referrer", + converter: webidl.converters.USVString + }, + { + key: "referrerPolicy", + converter: webidl.converters.DOMString, + // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy + allowedValues: referrerPolicy + }, + { + key: "mode", + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#concept-request-mode + allowedValues: requestMode + }, + { + key: "credentials", + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestcredentials + allowedValues: requestCredentials + }, + { + key: "cache", + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestcache + allowedValues: requestCache + }, + { + key: "redirect", + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestredirect + allowedValues: requestRedirect + }, + { + key: "integrity", + converter: webidl.converters.DOMString + }, + { + key: "keepalive", + converter: webidl.converters.boolean + }, + { + key: "signal", + converter: webidl.nullableConverter( + (signal) => webidl.converters.AbortSignal( + signal, + { strict: false } + ) + ) + }, + { + key: "window", + converter: webidl.converters.any + }, + { + key: "duplex", + converter: webidl.converters.DOMString, + allowedValues: requestDuplex + } + ]); + module2.exports = { Request, makeRequest }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/index.js +var require_fetch = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fetch/index.js"(exports2, module2) { + "use strict"; + var { + Response, + makeNetworkError, + makeAppropriateNetworkError, + filterResponse, + makeResponse + } = require_response(); + var { Headers } = require_headers(); + var { Request, makeRequest } = require_request2(); + var zlib = require("zlib"); + var { + bytesMatch, + makePolicyContainer, + clonePolicyContainer, + requestBadPort, + TAOCheck, + appendRequestOriginHeader, + responseLocationURL, + requestCurrentURL, + setRequestReferrerPolicyOnRedirect, + tryUpgradeRequestToAPotentiallyTrustworthyURL, + createOpaqueTimingInfo, + appendFetchMetadata, + corsCheck, + crossOriginResourcePolicyCheck, + determineRequestsReferrer, + coarsenedSharedCurrentTime, + createDeferredPromise, + isBlobLike, + sameOrigin, + isCancelled, + isAborted, + isErrorLike, + fullyReadBody, + readableStreamClose, + isomorphicEncode, + urlIsLocal, + urlIsHttpHttpsScheme, + urlHasHttpsScheme + } = require_util2(); + var { kState, kHeaders, kGuard, kRealm } = require_symbols2(); + var assert = require("assert"); + var { safelyExtractBody } = require_body(); + var { + redirectStatusSet, + nullBodyStatus, + safeMethodsSet, + requestBodyHeader, + subresourceSet, + DOMException: DOMException2 + } = require_constants(); + var { kHeadersList } = require_symbols(); + var EE = require("events"); + var { Readable, pipeline } = require("stream"); + var { addAbortListener, isErrored, isReadable, nodeMajor, nodeMinor } = require_util(); + var { dataURLProcessor, serializeAMimeType } = require_dataURL(); + var { TransformStream } = require("stream/web"); + var { getGlobalDispatcher } = require_global2(); + var { webidl } = require_webidl(); + var { STATUS_CODES } = require("http"); + var GET_OR_HEAD = ["GET", "HEAD"]; + var resolveObjectURL; + var ReadableStream = globalThis.ReadableStream; + var Fetch = class extends EE { + constructor(dispatcher) { + super(); + this.dispatcher = dispatcher; + this.connection = null; + this.dump = false; + this.state = "ongoing"; + this.setMaxListeners(21); + } + terminate(reason) { + var _a; + if (this.state !== "ongoing") { + return; + } + this.state = "terminated"; + (_a = this.connection) == null ? void 0 : _a.destroy(reason); + this.emit("terminated", reason); + } + // https://fetch.spec.whatwg.org/#fetch-controller-abort + abort(error) { + var _a; + if (this.state !== "ongoing") { + return; + } + this.state = "aborted"; + if (!error) { + error = new DOMException2("The operation was aborted.", "AbortError"); + } + this.serializedAbortReason = error; + (_a = this.connection) == null ? void 0 : _a.destroy(error); + this.emit("terminated", error); + } + }; + function fetch(input, init = {}) { + var _a; + webidl.argumentLengthCheck(arguments, 1, { header: "globalThis.fetch" }); + const p = createDeferredPromise(); + let requestObject; + try { + requestObject = new Request(input, init); + } catch (e) { + p.reject(e); + return p.promise; + } + const request3 = requestObject[kState]; + if (requestObject.signal.aborted) { + abortFetch(p, request3, null, requestObject.signal.reason); + return p.promise; + } + const globalObject = request3.client.globalObject; + if (((_a = globalObject == null ? void 0 : globalObject.constructor) == null ? void 0 : _a.name) === "ServiceWorkerGlobalScope") { + request3.serviceWorkers = "none"; + } + let responseObject = null; + const relevantRealm = null; + let locallyAborted = false; + let controller = null; + addAbortListener( + requestObject.signal, + () => { + locallyAborted = true; + assert(controller != null); + controller.abort(requestObject.signal.reason); + abortFetch(p, request3, responseObject, requestObject.signal.reason); + } + ); + const handleFetchDone = (response) => finalizeAndReportTiming(response, "fetch"); + const processResponse = (response) => { + if (locallyAborted) { + return Promise.resolve(); + } + if (response.aborted) { + abortFetch(p, request3, responseObject, controller.serializedAbortReason); + return Promise.resolve(); + } + if (response.type === "error") { + p.reject( + Object.assign(new TypeError("fetch failed"), { cause: response.error }) + ); + return Promise.resolve(); + } + responseObject = new Response(); + responseObject[kState] = response; + responseObject[kRealm] = relevantRealm; + responseObject[kHeaders][kHeadersList] = response.headersList; + responseObject[kHeaders][kGuard] = "immutable"; + responseObject[kHeaders][kRealm] = relevantRealm; + p.resolve(responseObject); + }; + controller = fetching({ + request: request3, + processResponseEndOfBody: handleFetchDone, + processResponse, + dispatcher: init.dispatcher ?? getGlobalDispatcher() + // undici + }); + return p.promise; + } + function finalizeAndReportTiming(response, initiatorType = "other") { + var _a; + if (response.type === "error" && response.aborted) { + return; + } + if (!((_a = response.urlList) == null ? void 0 : _a.length)) { + return; + } + const originalURL = response.urlList[0]; + let timingInfo = response.timingInfo; + let cacheState = response.cacheState; + if (!urlIsHttpHttpsScheme(originalURL)) { + return; + } + if (timingInfo === null) { + return; + } + if (!timingInfo.timingAllowPassed) { + timingInfo = createOpaqueTimingInfo({ + startTime: timingInfo.startTime + }); + cacheState = ""; + } + timingInfo.endTime = coarsenedSharedCurrentTime(); + response.timingInfo = timingInfo; + markResourceTiming( + timingInfo, + originalURL, + initiatorType, + globalThis, + cacheState + ); + } + function markResourceTiming(timingInfo, originalURL, initiatorType, globalThis2, cacheState) { + if (nodeMajor > 18 || nodeMajor === 18 && nodeMinor >= 2) { + performance.markResourceTiming(timingInfo, originalURL.href, initiatorType, globalThis2, cacheState); + } + } + function abortFetch(p, request3, responseObject, error) { + var _a, _b; + if (!error) { + error = new DOMException2("The operation was aborted.", "AbortError"); + } + p.reject(error); + if (request3.body != null && isReadable((_a = request3.body) == null ? void 0 : _a.stream)) { + request3.body.stream.cancel(error).catch((err) => { + if (err.code === "ERR_INVALID_STATE") { + return; + } + throw err; + }); + } + if (responseObject == null) { + return; + } + const response = responseObject[kState]; + if (response.body != null && isReadable((_b = response.body) == null ? void 0 : _b.stream)) { + response.body.stream.cancel(error).catch((err) => { + if (err.code === "ERR_INVALID_STATE") { + return; + } + throw err; + }); + } + } + function fetching({ + request: request3, + processRequestBodyChunkLength, + processRequestEndOfBody, + processResponse, + processResponseEndOfBody, + processResponseConsumeBody, + useParallelQueue = false, + dispatcher + // undici + }) { + var _a, _b, _c, _d; + let taskDestination = null; + let crossOriginIsolatedCapability = false; + if (request3.client != null) { + taskDestination = request3.client.globalObject; + crossOriginIsolatedCapability = request3.client.crossOriginIsolatedCapability; + } + const currenTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability); + const timingInfo = createOpaqueTimingInfo({ + startTime: currenTime + }); + const fetchParams = { + controller: new Fetch(dispatcher), + request: request3, + timingInfo, + processRequestBodyChunkLength, + processRequestEndOfBody, + processResponse, + processResponseConsumeBody, + processResponseEndOfBody, + taskDestination, + crossOriginIsolatedCapability + }; + assert(!request3.body || request3.body.stream); + if (request3.window === "client") { + request3.window = ((_c = (_b = (_a = request3.client) == null ? void 0 : _a.globalObject) == null ? void 0 : _b.constructor) == null ? void 0 : _c.name) === "Window" ? request3.client : "no-window"; + } + if (request3.origin === "client") { + request3.origin = (_d = request3.client) == null ? void 0 : _d.origin; + } + if (request3.policyContainer === "client") { + if (request3.client != null) { + request3.policyContainer = clonePolicyContainer( + request3.client.policyContainer + ); + } else { + request3.policyContainer = makePolicyContainer(); + } + } + if (!request3.headersList.contains("accept")) { + const value = "*/*"; + request3.headersList.append("accept", value); + } + if (!request3.headersList.contains("accept-language")) { + request3.headersList.append("accept-language", "*"); + } + if (request3.priority === null) { + } + if (subresourceSet.has(request3.destination)) { + } + mainFetch(fetchParams).catch((err) => { + fetchParams.controller.terminate(err); + }); + return fetchParams.controller; + } + async function mainFetch(fetchParams, recursive = false) { + const request3 = fetchParams.request; + let response = null; + if (request3.localURLsOnly && !urlIsLocal(requestCurrentURL(request3))) { + response = makeNetworkError("local URLs only"); + } + tryUpgradeRequestToAPotentiallyTrustworthyURL(request3); + if (requestBadPort(request3) === "blocked") { + response = makeNetworkError("bad port"); + } + if (request3.referrerPolicy === "") { + request3.referrerPolicy = request3.policyContainer.referrerPolicy; + } + if (request3.referrer !== "no-referrer") { + request3.referrer = determineRequestsReferrer(request3); + } + if (response === null) { + response = await (async () => { + const currentURL = requestCurrentURL(request3); + if ( + // - request’s current URL’s origin is same origin with request’s origin, + // and request’s response tainting is "basic" + sameOrigin(currentURL, request3.url) && request3.responseTainting === "basic" || // request’s current URL’s scheme is "data" + currentURL.protocol === "data:" || // - request’s mode is "navigate" or "websocket" + (request3.mode === "navigate" || request3.mode === "websocket") + ) { + request3.responseTainting = "basic"; + return await schemeFetch(fetchParams); + } + if (request3.mode === "same-origin") { + return makeNetworkError('request mode cannot be "same-origin"'); + } + if (request3.mode === "no-cors") { + if (request3.redirect !== "follow") { + return makeNetworkError( + 'redirect mode cannot be "follow" for "no-cors" request' + ); + } + request3.responseTainting = "opaque"; + return await schemeFetch(fetchParams); + } + if (!urlIsHttpHttpsScheme(requestCurrentURL(request3))) { + return makeNetworkError("URL scheme must be a HTTP(S) scheme"); + } + request3.responseTainting = "cors"; + return await httpFetch(fetchParams); + })(); + } + if (recursive) { + return response; + } + if (response.status !== 0 && !response.internalResponse) { + if (request3.responseTainting === "cors") { + } + if (request3.responseTainting === "basic") { + response = filterResponse(response, "basic"); + } else if (request3.responseTainting === "cors") { + response = filterResponse(response, "cors"); + } else if (request3.responseTainting === "opaque") { + response = filterResponse(response, "opaque"); + } else { + assert(false); + } + } + let internalResponse = response.status === 0 ? response : response.internalResponse; + if (internalResponse.urlList.length === 0) { + internalResponse.urlList.push(...request3.urlList); + } + if (!request3.timingAllowFailed) { + response.timingAllowPassed = true; + } + if (response.type === "opaque" && internalResponse.status === 206 && internalResponse.rangeRequested && !request3.headers.contains("range")) { + response = internalResponse = makeNetworkError(); + } + if (response.status !== 0 && (request3.method === "HEAD" || request3.method === "CONNECT" || nullBodyStatus.includes(internalResponse.status))) { + internalResponse.body = null; + fetchParams.controller.dump = true; + } + if (request3.integrity) { + const processBodyError = (reason) => fetchFinale(fetchParams, makeNetworkError(reason)); + if (request3.responseTainting === "opaque" || response.body == null) { + processBodyError(response.error); + return; + } + const processBody = (bytes) => { + if (!bytesMatch(bytes, request3.integrity)) { + processBodyError("integrity mismatch"); + return; + } + response.body = safelyExtractBody(bytes)[0]; + fetchFinale(fetchParams, response); + }; + await fullyReadBody(response.body, processBody, processBodyError); + } else { + fetchFinale(fetchParams, response); + } + } + function schemeFetch(fetchParams) { + if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) { + return Promise.resolve(makeAppropriateNetworkError(fetchParams)); + } + const { request: request3 } = fetchParams; + const { protocol: scheme } = requestCurrentURL(request3); + switch (scheme) { + case "about:": { + return Promise.resolve(makeNetworkError("about scheme is not supported")); + } + case "blob:": { + if (!resolveObjectURL) { + resolveObjectURL = require("buffer").resolveObjectURL; + } + const blobURLEntry = requestCurrentURL(request3); + if (blobURLEntry.search.length !== 0) { + return Promise.resolve(makeNetworkError("NetworkError when attempting to fetch resource.")); + } + const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString()); + if (request3.method !== "GET" || !isBlobLike(blobURLEntryObject)) { + return Promise.resolve(makeNetworkError("invalid method")); + } + const bodyWithType = safelyExtractBody(blobURLEntryObject); + const body = bodyWithType[0]; + const length = isomorphicEncode(`${body.length}`); + const type = bodyWithType[1] ?? ""; + const response = makeResponse({ + statusText: "OK", + headersList: [ + ["content-length", { name: "Content-Length", value: length }], + ["content-type", { name: "Content-Type", value: type }] + ] + }); + response.body = body; + return Promise.resolve(response); + } + case "data:": { + const currentURL = requestCurrentURL(request3); + const dataURLStruct = dataURLProcessor(currentURL); + if (dataURLStruct === "failure") { + return Promise.resolve(makeNetworkError("failed to fetch the data URL")); + } + const mimeType = serializeAMimeType(dataURLStruct.mimeType); + return Promise.resolve(makeResponse({ + statusText: "OK", + headersList: [ + ["content-type", { name: "Content-Type", value: mimeType }] + ], + body: safelyExtractBody(dataURLStruct.body)[0] + })); + } + case "file:": { + return Promise.resolve(makeNetworkError("not implemented... yet...")); + } + case "http:": + case "https:": { + return httpFetch(fetchParams).catch((err) => makeNetworkError(err)); + } + default: { + return Promise.resolve(makeNetworkError("unknown scheme")); + } + } + } + function finalizeResponse(fetchParams, response) { + fetchParams.request.done = true; + if (fetchParams.processResponseDone != null) { + queueMicrotask(() => fetchParams.processResponseDone(response)); + } + } + function fetchFinale(fetchParams, response) { + if (response.type === "error") { + response.urlList = [fetchParams.request.urlList[0]]; + response.timingInfo = createOpaqueTimingInfo({ + startTime: fetchParams.timingInfo.startTime + }); + } + const processResponseEndOfBody = () => { + fetchParams.request.done = true; + if (fetchParams.processResponseEndOfBody != null) { + queueMicrotask(() => fetchParams.processResponseEndOfBody(response)); + } + }; + if (fetchParams.processResponse != null) { + queueMicrotask(() => fetchParams.processResponse(response)); + } + if (response.body == null) { + processResponseEndOfBody(); + } else { + const identityTransformAlgorithm = (chunk, controller) => { + controller.enqueue(chunk); + }; + const transformStream = new TransformStream({ + start() { + }, + transform: identityTransformAlgorithm, + flush: processResponseEndOfBody + }, { + size() { + return 1; + } + }, { + size() { + return 1; + } + }); + response.body = { stream: response.body.stream.pipeThrough(transformStream) }; + } + if (fetchParams.processResponseConsumeBody != null) { + const processBody = (nullOrBytes) => fetchParams.processResponseConsumeBody(response, nullOrBytes); + const processBodyError = (failure) => fetchParams.processResponseConsumeBody(response, failure); + if (response.body == null) { + queueMicrotask(() => processBody(null)); + } else { + return fullyReadBody(response.body, processBody, processBodyError); + } + return Promise.resolve(); + } + } + async function httpFetch(fetchParams) { + const request3 = fetchParams.request; + let response = null; + let actualResponse = null; + const timingInfo = fetchParams.timingInfo; + if (request3.serviceWorkers === "all") { + } + if (response === null) { + if (request3.redirect === "follow") { + request3.serviceWorkers = "none"; + } + actualResponse = response = await httpNetworkOrCacheFetch(fetchParams); + if (request3.responseTainting === "cors" && corsCheck(request3, response) === "failure") { + return makeNetworkError("cors failure"); + } + if (TAOCheck(request3, response) === "failure") { + request3.timingAllowFailed = true; + } + } + if ((request3.responseTainting === "opaque" || response.type === "opaque") && crossOriginResourcePolicyCheck( + request3.origin, + request3.client, + request3.destination, + actualResponse + ) === "blocked") { + return makeNetworkError("blocked"); + } + if (redirectStatusSet.has(actualResponse.status)) { + if (request3.redirect !== "manual") { + fetchParams.controller.connection.destroy(); + } + if (request3.redirect === "error") { + response = makeNetworkError("unexpected redirect"); + } else if (request3.redirect === "manual") { + response = actualResponse; + } else if (request3.redirect === "follow") { + response = await httpRedirectFetch(fetchParams, response); + } else { + assert(false); + } + } + response.timingInfo = timingInfo; + return response; + } + function httpRedirectFetch(fetchParams, response) { + const request3 = fetchParams.request; + const actualResponse = response.internalResponse ? response.internalResponse : response; + let locationURL; + try { + locationURL = responseLocationURL( + actualResponse, + requestCurrentURL(request3).hash + ); + if (locationURL == null) { + return response; + } + } catch (err) { + return Promise.resolve(makeNetworkError(err)); + } + if (!urlIsHttpHttpsScheme(locationURL)) { + return Promise.resolve(makeNetworkError("URL scheme must be a HTTP(S) scheme")); + } + if (request3.redirectCount === 20) { + return Promise.resolve(makeNetworkError("redirect count exceeded")); + } + request3.redirectCount += 1; + if (request3.mode === "cors" && (locationURL.username || locationURL.password) && !sameOrigin(request3, locationURL)) { + return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"')); + } + if (request3.responseTainting === "cors" && (locationURL.username || locationURL.password)) { + return Promise.resolve(makeNetworkError( + 'URL cannot contain credentials for request mode "cors"' + )); + } + if (actualResponse.status !== 303 && request3.body != null && request3.body.source == null) { + return Promise.resolve(makeNetworkError()); + } + if ([301, 302].includes(actualResponse.status) && request3.method === "POST" || actualResponse.status === 303 && !GET_OR_HEAD.includes(request3.method)) { + request3.method = "GET"; + request3.body = null; + for (const headerName of requestBodyHeader) { + request3.headersList.delete(headerName); + } + } + if (!sameOrigin(requestCurrentURL(request3), locationURL)) { + request3.headersList.delete("authorization"); + request3.headersList.delete("cookie"); + request3.headersList.delete("host"); + } + if (request3.body != null) { + assert(request3.body.source != null); + request3.body = safelyExtractBody(request3.body.source)[0]; + } + const timingInfo = fetchParams.timingInfo; + timingInfo.redirectEndTime = timingInfo.postRedirectStartTime = coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability); + if (timingInfo.redirectStartTime === 0) { + timingInfo.redirectStartTime = timingInfo.startTime; + } + request3.urlList.push(locationURL); + setRequestReferrerPolicyOnRedirect(request3, actualResponse); + return mainFetch(fetchParams, true); + } + async function httpNetworkOrCacheFetch(fetchParams, isAuthenticationFetch = false, isNewConnectionFetch = false) { + const request3 = fetchParams.request; + let httpFetchParams = null; + let httpRequest = null; + let response = null; + const httpCache = null; + const revalidatingFlag = false; + if (request3.window === "no-window" && request3.redirect === "error") { + httpFetchParams = fetchParams; + httpRequest = request3; + } else { + httpRequest = makeRequest(request3); + httpFetchParams = { ...fetchParams }; + httpFetchParams.request = httpRequest; + } + const includeCredentials = request3.credentials === "include" || request3.credentials === "same-origin" && request3.responseTainting === "basic"; + const contentLength = httpRequest.body ? httpRequest.body.length : null; + let contentLengthHeaderValue = null; + if (httpRequest.body == null && ["POST", "PUT"].includes(httpRequest.method)) { + contentLengthHeaderValue = "0"; + } + if (contentLength != null) { + contentLengthHeaderValue = isomorphicEncode(`${contentLength}`); + } + if (contentLengthHeaderValue != null) { + httpRequest.headersList.append("content-length", contentLengthHeaderValue); + } + if (contentLength != null && httpRequest.keepalive) { + } + if (httpRequest.referrer instanceof URL) { + httpRequest.headersList.append("referer", isomorphicEncode(httpRequest.referrer.href)); + } + appendRequestOriginHeader(httpRequest); + appendFetchMetadata(httpRequest); + if (!httpRequest.headersList.contains("user-agent")) { + httpRequest.headersList.append("user-agent", typeof esbuildDetection === "undefined" ? "undici" : "node"); + } + if (httpRequest.cache === "default" && (httpRequest.headersList.contains("if-modified-since") || httpRequest.headersList.contains("if-none-match") || httpRequest.headersList.contains("if-unmodified-since") || httpRequest.headersList.contains("if-match") || httpRequest.headersList.contains("if-range"))) { + httpRequest.cache = "no-store"; + } + if (httpRequest.cache === "no-cache" && !httpRequest.preventNoCacheCacheControlHeaderModification && !httpRequest.headersList.contains("cache-control")) { + httpRequest.headersList.append("cache-control", "max-age=0"); + } + if (httpRequest.cache === "no-store" || httpRequest.cache === "reload") { + if (!httpRequest.headersList.contains("pragma")) { + httpRequest.headersList.append("pragma", "no-cache"); + } + if (!httpRequest.headersList.contains("cache-control")) { + httpRequest.headersList.append("cache-control", "no-cache"); + } + } + if (httpRequest.headersList.contains("range")) { + httpRequest.headersList.append("accept-encoding", "identity"); + } + if (!httpRequest.headersList.contains("accept-encoding")) { + if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) { + httpRequest.headersList.append("accept-encoding", "br, gzip, deflate"); + } else { + httpRequest.headersList.append("accept-encoding", "gzip, deflate"); + } + } + httpRequest.headersList.delete("host"); + if (includeCredentials) { + } + if (httpCache == null) { + httpRequest.cache = "no-store"; + } + if (httpRequest.mode !== "no-store" && httpRequest.mode !== "reload") { + } + if (response == null) { + if (httpRequest.mode === "only-if-cached") { + return makeNetworkError("only if cached"); + } + const forwardResponse = await httpNetworkFetch( + httpFetchParams, + includeCredentials, + isNewConnectionFetch + ); + if (!safeMethodsSet.has(httpRequest.method) && forwardResponse.status >= 200 && forwardResponse.status <= 399) { + } + if (revalidatingFlag && forwardResponse.status === 304) { + } + if (response == null) { + response = forwardResponse; + } + } + response.urlList = [...httpRequest.urlList]; + if (httpRequest.headersList.contains("range")) { + response.rangeRequested = true; + } + response.requestIncludesCredentials = includeCredentials; + if (response.status === 407) { + if (request3.window === "no-window") { + return makeNetworkError(); + } + if (isCancelled(fetchParams)) { + return makeAppropriateNetworkError(fetchParams); + } + return makeNetworkError("proxy authentication required"); + } + if ( + // response’s status is 421 + response.status === 421 && // isNewConnectionFetch is false + !isNewConnectionFetch && // request’s body is null, or request’s body is non-null and request’s body’s source is non-null + (request3.body == null || request3.body.source != null) + ) { + if (isCancelled(fetchParams)) { + return makeAppropriateNetworkError(fetchParams); + } + fetchParams.controller.connection.destroy(); + response = await httpNetworkOrCacheFetch( + fetchParams, + isAuthenticationFetch, + true + ); + } + if (isAuthenticationFetch) { + } + return response; + } + async function httpNetworkFetch(fetchParams, includeCredentials = false, forceNewConnection = false) { + assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed); + fetchParams.controller.connection = { + abort: null, + destroyed: false, + destroy(err) { + var _a; + if (!this.destroyed) { + this.destroyed = true; + (_a = this.abort) == null ? void 0 : _a.call(this, err ?? new DOMException2("The operation was aborted.", "AbortError")); + } + } + }; + const request3 = fetchParams.request; + let response = null; + const timingInfo = fetchParams.timingInfo; + const httpCache = null; + if (httpCache == null) { + request3.cache = "no-store"; + } + const newConnection = forceNewConnection ? "yes" : "no"; + if (request3.mode === "websocket") { + } else { + } + let requestBody = null; + if (request3.body == null && fetchParams.processRequestEndOfBody) { + queueMicrotask(() => fetchParams.processRequestEndOfBody()); + } else if (request3.body != null) { + const processBodyChunk = async function* (bytes) { + var _a; + if (isCancelled(fetchParams)) { + return; + } + yield bytes; + (_a = fetchParams.processRequestBodyChunkLength) == null ? void 0 : _a.call(fetchParams, bytes.byteLength); + }; + const processEndOfBody = () => { + if (isCancelled(fetchParams)) { + return; + } + if (fetchParams.processRequestEndOfBody) { + fetchParams.processRequestEndOfBody(); + } + }; + const processBodyError = (e) => { + if (isCancelled(fetchParams)) { + return; + } + if (e.name === "AbortError") { + fetchParams.controller.abort(); + } else { + fetchParams.controller.terminate(e); + } + }; + requestBody = async function* () { + try { + for await (const bytes of request3.body.stream) { + yield* processBodyChunk(bytes); + } + processEndOfBody(); + } catch (err) { + processBodyError(err); + } + }(); + } + try { + const { body, status, statusText, headersList, socket } = await dispatch({ body: requestBody }); + if (socket) { + response = makeResponse({ status, statusText, headersList, socket }); + } else { + const iterator = body[Symbol.asyncIterator](); + fetchParams.controller.next = () => iterator.next(); + response = makeResponse({ status, statusText, headersList }); + } + } catch (err) { + if (err.name === "AbortError") { + fetchParams.controller.connection.destroy(); + return makeAppropriateNetworkError(fetchParams, err); + } + return makeNetworkError(err); + } + const pullAlgorithm = () => { + fetchParams.controller.resume(); + }; + const cancelAlgorithm = (reason) => { + fetchParams.controller.abort(reason); + }; + if (!ReadableStream) { + ReadableStream = require("stream/web").ReadableStream; + } + const stream = new ReadableStream( + { + async start(controller) { + fetchParams.controller.controller = controller; + }, + async pull(controller) { + await pullAlgorithm(controller); + }, + async cancel(reason) { + await cancelAlgorithm(reason); + } + }, + { + highWaterMark: 0, + size() { + return 1; + } + } + ); + response.body = { stream }; + fetchParams.controller.on("terminated", onAborted); + fetchParams.controller.resume = async () => { + while (true) { + let bytes; + let isFailure; + try { + const { done, value } = await fetchParams.controller.next(); + if (isAborted(fetchParams)) { + break; + } + bytes = done ? void 0 : value; + } catch (err) { + if (fetchParams.controller.ended && !timingInfo.encodedBodySize) { + bytes = void 0; + } else { + bytes = err; + isFailure = true; + } + } + if (bytes === void 0) { + readableStreamClose(fetchParams.controller.controller); + finalizeResponse(fetchParams, response); + return; + } + timingInfo.decodedBodySize += (bytes == null ? void 0 : bytes.byteLength) ?? 0; + if (isFailure) { + fetchParams.controller.terminate(bytes); + return; + } + fetchParams.controller.controller.enqueue(new Uint8Array(bytes)); + if (isErrored(stream)) { + fetchParams.controller.terminate(); + return; + } + if (!fetchParams.controller.controller.desiredSize) { + return; + } + } + }; + function onAborted(reason) { + if (isAborted(fetchParams)) { + response.aborted = true; + if (isReadable(stream)) { + fetchParams.controller.controller.error( + fetchParams.controller.serializedAbortReason + ); + } + } else { + if (isReadable(stream)) { + fetchParams.controller.controller.error(new TypeError("terminated", { + cause: isErrorLike(reason) ? reason : void 0 + })); + } + } + fetchParams.controller.connection.destroy(); + } + return response; + async function dispatch({ body }) { + const url = requestCurrentURL(request3); + const agent = fetchParams.controller.dispatcher; + return new Promise((resolve, reject) => agent.dispatch( + { + path: url.pathname + url.search, + origin: url.origin, + method: request3.method, + body: fetchParams.controller.dispatcher.isMockActive ? request3.body && request3.body.source : body, + headers: request3.headersList.entries, + maxRedirections: 0, + upgrade: request3.mode === "websocket" ? "websocket" : void 0 + }, + { + body: null, + abort: null, + onConnect(abort) { + const { connection } = fetchParams.controller; + if (connection.destroyed) { + abort(new DOMException2("The operation was aborted.", "AbortError")); + } else { + fetchParams.controller.on("terminated", abort); + this.abort = connection.abort = abort; + } + }, + onHeaders(status, headersList, resume, statusText) { + if (status < 200) { + return; + } + let codings = []; + let location = ""; + const headers = new Headers(); + if (Array.isArray(headersList)) { + for (let n = 0; n < headersList.length; n += 2) { + const key = headersList[n + 0].toString("latin1"); + const val = headersList[n + 1].toString("latin1"); + if (key.toLowerCase() === "content-encoding") { + codings = val.toLowerCase().split(",").map((x) => x.trim()); + } else if (key.toLowerCase() === "location") { + location = val; + } + headers.append(key, val); + } + } else { + const keys = Object.keys(headersList); + for (const key of keys) { + const val = headersList[key]; + if (key.toLowerCase() === "content-encoding") { + codings = val.toLowerCase().split(",").map((x) => x.trim()).reverse(); + } else if (key.toLowerCase() === "location") { + location = val; + } + headers.append(key, val); + } + } + this.body = new Readable({ read: resume }); + const decoders = []; + const willFollow = request3.redirect === "follow" && location && redirectStatusSet.has(status); + if (request3.method !== "HEAD" && request3.method !== "CONNECT" && !nullBodyStatus.includes(status) && !willFollow) { + for (const coding of codings) { + if (coding === "x-gzip" || coding === "gzip") { + decoders.push(zlib.createGunzip({ + // Be less strict when decoding compressed responses, since sometimes + // servers send slightly invalid responses that are still accepted + // by common browsers. + // Always using Z_SYNC_FLUSH is what cURL does. + flush: zlib.constants.Z_SYNC_FLUSH, + finishFlush: zlib.constants.Z_SYNC_FLUSH + })); + } else if (coding === "deflate") { + decoders.push(zlib.createInflate()); + } else if (coding === "br") { + decoders.push(zlib.createBrotliDecompress()); + } else { + decoders.length = 0; + break; + } + } + } + resolve({ + status, + statusText, + headersList: headers[kHeadersList], + body: decoders.length ? pipeline(this.body, ...decoders, () => { + }) : this.body.on("error", () => { + }) + }); + return true; + }, + onData(chunk) { + if (fetchParams.controller.dump) { + return; + } + const bytes = chunk; + timingInfo.encodedBodySize += bytes.byteLength; + return this.body.push(bytes); + }, + onComplete() { + if (this.abort) { + fetchParams.controller.off("terminated", this.abort); + } + fetchParams.controller.ended = true; + this.body.push(null); + }, + onError(error) { + var _a; + if (this.abort) { + fetchParams.controller.off("terminated", this.abort); + } + (_a = this.body) == null ? void 0 : _a.destroy(error); + fetchParams.controller.terminate(error); + reject(error); + }, + onUpgrade(status, headersList, socket) { + if (status !== 101) { + return; + } + const headers = new Headers(); + for (let n = 0; n < headersList.length; n += 2) { + const key = headersList[n + 0].toString("latin1"); + const val = headersList[n + 1].toString("latin1"); + headers.append(key, val); + } + resolve({ + status, + statusText: STATUS_CODES[status], + headersList: headers[kHeadersList], + socket + }); + return true; + } + } + )); + } + } + module2.exports = { + fetch, + Fetch, + fetching, + finalizeAndReportTiming + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/symbols.js +var require_symbols3 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/symbols.js"(exports2, module2) { + "use strict"; + module2.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") + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/progressevent.js +var require_progressevent = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/progressevent.js"(exports2, module2) { + "use strict"; + var { webidl } = require_webidl(); + var kState = Symbol("ProgressEvent state"); + var ProgressEvent = class _ProgressEvent extends Event { + constructor(type, eventInitDict = {}) { + type = webidl.converters.DOMString(type); + eventInitDict = webidl.converters.ProgressEventInit(eventInitDict ?? {}); + super(type, eventInitDict); + this[kState] = { + lengthComputable: eventInitDict.lengthComputable, + loaded: eventInitDict.loaded, + total: eventInitDict.total + }; + } + get lengthComputable() { + webidl.brandCheck(this, _ProgressEvent); + return this[kState].lengthComputable; + } + get loaded() { + webidl.brandCheck(this, _ProgressEvent); + return this[kState].loaded; + } + get total() { + webidl.brandCheck(this, _ProgressEvent); + return this[kState].total; + } + }; + webidl.converters.ProgressEventInit = webidl.dictionaryConverter([ + { + key: "lengthComputable", + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: "loaded", + converter: webidl.converters["unsigned long long"], + defaultValue: 0 + }, + { + key: "total", + converter: webidl.converters["unsigned long long"], + defaultValue: 0 + }, + { + key: "bubbles", + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: "cancelable", + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: "composed", + converter: webidl.converters.boolean, + defaultValue: false + } + ]); + module2.exports = { + ProgressEvent + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/encoding.js +var require_encoding = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/encoding.js"(exports2, module2) { + "use strict"; + function getEncoding(label) { + if (!label) { + return "failure"; + } + switch (label.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"; + } + } + module2.exports = { + getEncoding + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/util.js +var require_util4 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/util.js"(exports2, module2) { + "use strict"; + var { + kState, + kError, + kResult, + kAborted, + kLastProgressEventFired + } = require_symbols3(); + var { ProgressEvent } = require_progressevent(); + var { getEncoding } = require_encoding(); + var { DOMException: DOMException2 } = require_constants(); + var { serializeAMimeType, parseMIMEType } = require_dataURL(); + var { types } = require("util"); + var { StringDecoder } = require("string_decoder"); + var { btoa } = require("buffer"); + var staticPropertyDescriptors = { + enumerable: true, + writable: false, + configurable: false + }; + function readOperation(fr, blob, type, encodingName) { + if (fr[kState] === "loading") { + throw new DOMException2("Invalid state", "InvalidStateError"); + } + fr[kState] = "loading"; + fr[kResult] = null; + fr[kError] = null; + const stream = blob.stream(); + const reader = stream.getReader(); + const bytes = []; + let chunkPromise = reader.read(); + let isFirstChunk = true; + (async () => { + while (!fr[kAborted]) { + try { + const { done, value } = await chunkPromise; + if (isFirstChunk && !fr[kAborted]) { + queueMicrotask(() => { + fireAProgressEvent("loadstart", fr); + }); + } + isFirstChunk = false; + if (!done && types.isUint8Array(value)) { + bytes.push(value); + if ((fr[kLastProgressEventFired] === void 0 || Date.now() - fr[kLastProgressEventFired] >= 50) && !fr[kAborted]) { + fr[kLastProgressEventFired] = Date.now(); + queueMicrotask(() => { + fireAProgressEvent("progress", fr); + }); + } + chunkPromise = reader.read(); + } else if (done) { + queueMicrotask(() => { + fr[kState] = "done"; + try { + const result = packageData(bytes, type, blob.type, encodingName); + if (fr[kAborted]) { + return; + } + fr[kResult] = result; + fireAProgressEvent("load", fr); + } catch (error) { + fr[kError] = error; + fireAProgressEvent("error", fr); + } + if (fr[kState] !== "loading") { + fireAProgressEvent("loadend", fr); + } + }); + break; + } + } catch (error) { + if (fr[kAborted]) { + return; + } + queueMicrotask(() => { + fr[kState] = "done"; + fr[kError] = error; + fireAProgressEvent("error", fr); + if (fr[kState] !== "loading") { + fireAProgressEvent("loadend", fr); + } + }); + break; + } + } + })(); + } + function fireAProgressEvent(e, reader) { + const event = new ProgressEvent(e, { + bubbles: false, + cancelable: false + }); + reader.dispatchEvent(event); + } + function packageData(bytes, type, mimeType, encodingName) { + switch (type) { + case "DataURL": { + let dataURL = "data:"; + const parsed = parseMIMEType(mimeType || "application/octet-stream"); + if (parsed !== "failure") { + dataURL += serializeAMimeType(parsed); + } + dataURL += ";base64,"; + const decoder = new StringDecoder("latin1"); + for (const chunk of bytes) { + dataURL += btoa(decoder.write(chunk)); + } + dataURL += btoa(decoder.end()); + return dataURL; + } + case "Text": { + let encoding = "failure"; + if (encodingName) { + encoding = getEncoding(encodingName); + } + if (encoding === "failure" && mimeType) { + const type2 = parseMIMEType(mimeType); + if (type2 !== "failure") { + encoding = getEncoding(type2.parameters.get("charset")); + } + } + if (encoding === "failure") { + encoding = "UTF-8"; + } + return decode(bytes, encoding); + } + case "ArrayBuffer": { + const sequence = combineByteSequences(bytes); + return sequence.buffer; + } + case "BinaryString": { + let binaryString = ""; + const decoder = new StringDecoder("latin1"); + for (const chunk of bytes) { + binaryString += decoder.write(chunk); + } + binaryString += decoder.end(); + return binaryString; + } + } + } + function decode(ioQueue, encoding) { + const bytes = combineByteSequences(ioQueue); + const BOMEncoding = BOMSniffing(bytes); + let slice = 0; + if (BOMEncoding !== null) { + encoding = BOMEncoding; + slice = BOMEncoding === "UTF-8" ? 3 : 2; + } + const sliced = bytes.slice(slice); + return new TextDecoder(encoding).decode(sliced); + } + function BOMSniffing(ioQueue) { + const [a, b, c] = ioQueue; + if (a === 239 && b === 187 && c === 191) { + return "UTF-8"; + } else if (a === 254 && b === 255) { + return "UTF-16BE"; + } else if (a === 255 && b === 254) { + return "UTF-16LE"; + } + return null; + } + function combineByteSequences(sequences) { + const size = sequences.reduce((a, b) => { + return a + b.byteLength; + }, 0); + let offset = 0; + return sequences.reduce((a, b) => { + a.set(b, offset); + offset += b.byteLength; + return a; + }, new Uint8Array(size)); + } + module2.exports = { + staticPropertyDescriptors, + readOperation, + fireAProgressEvent + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/filereader.js +var require_filereader = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/fileapi/filereader.js"(exports2, module2) { + "use strict"; + var { + staticPropertyDescriptors, + readOperation, + fireAProgressEvent + } = require_util4(); + var { + kState, + kError, + kResult, + kEvents, + kAborted + } = require_symbols3(); + var { webidl } = require_webidl(); + var { kEnumerableProperty } = require_util(); + var FileReader = class _FileReader extends EventTarget { + constructor() { + super(); + this[kState] = "empty"; + this[kResult] = null; + this[kError] = null; + this[kEvents] = { + loadend: null, + error: null, + abort: null, + load: null, + progress: null, + loadstart: null + }; + } + /** + * @see https://w3c.github.io/FileAPI/#dfn-readAsArrayBuffer + * @param {import('buffer').Blob} blob + */ + readAsArrayBuffer(blob) { + webidl.brandCheck(this, _FileReader); + webidl.argumentLengthCheck(arguments, 1, { header: "FileReader.readAsArrayBuffer" }); + blob = webidl.converters.Blob(blob, { strict: false }); + readOperation(this, blob, "ArrayBuffer"); + } + /** + * @see https://w3c.github.io/FileAPI/#readAsBinaryString + * @param {import('buffer').Blob} blob + */ + readAsBinaryString(blob) { + webidl.brandCheck(this, _FileReader); + webidl.argumentLengthCheck(arguments, 1, { header: "FileReader.readAsBinaryString" }); + blob = webidl.converters.Blob(blob, { strict: false }); + readOperation(this, blob, "BinaryString"); + } + /** + * @see https://w3c.github.io/FileAPI/#readAsDataText + * @param {import('buffer').Blob} blob + * @param {string?} encoding + */ + readAsText(blob, encoding = void 0) { + webidl.brandCheck(this, _FileReader); + webidl.argumentLengthCheck(arguments, 1, { header: "FileReader.readAsText" }); + blob = webidl.converters.Blob(blob, { strict: false }); + if (encoding !== void 0) { + encoding = webidl.converters.DOMString(encoding); + } + readOperation(this, blob, "Text", encoding); + } + /** + * @see https://w3c.github.io/FileAPI/#dfn-readAsDataURL + * @param {import('buffer').Blob} blob + */ + readAsDataURL(blob) { + webidl.brandCheck(this, _FileReader); + webidl.argumentLengthCheck(arguments, 1, { header: "FileReader.readAsDataURL" }); + blob = webidl.converters.Blob(blob, { strict: false }); + readOperation(this, blob, "DataURL"); + } + /** + * @see https://w3c.github.io/FileAPI/#dfn-abort + */ + abort() { + if (this[kState] === "empty" || this[kState] === "done") { + this[kResult] = null; + return; + } + if (this[kState] === "loading") { + this[kState] = "done"; + this[kResult] = null; + } + this[kAborted] = true; + fireAProgressEvent("abort", this); + if (this[kState] !== "loading") { + fireAProgressEvent("loadend", this); + } + } + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-readystate + */ + get readyState() { + webidl.brandCheck(this, _FileReader); + switch (this[kState]) { + case "empty": + return this.EMPTY; + case "loading": + return this.LOADING; + case "done": + return this.DONE; + } + } + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-result + */ + get result() { + webidl.brandCheck(this, _FileReader); + return this[kResult]; + } + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-error + */ + get error() { + webidl.brandCheck(this, _FileReader); + return this[kError]; + } + get onloadend() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].loadend; + } + set onloadend(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].loadend) { + this.removeEventListener("loadend", this[kEvents].loadend); + } + if (typeof fn === "function") { + this[kEvents].loadend = fn; + this.addEventListener("loadend", fn); + } else { + this[kEvents].loadend = null; + } + } + get onerror() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].error; + } + set onerror(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].error) { + this.removeEventListener("error", this[kEvents].error); + } + if (typeof fn === "function") { + this[kEvents].error = fn; + this.addEventListener("error", fn); + } else { + this[kEvents].error = null; + } + } + get onloadstart() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].loadstart; + } + set onloadstart(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].loadstart) { + this.removeEventListener("loadstart", this[kEvents].loadstart); + } + if (typeof fn === "function") { + this[kEvents].loadstart = fn; + this.addEventListener("loadstart", fn); + } else { + this[kEvents].loadstart = null; + } + } + get onprogress() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].progress; + } + set onprogress(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].progress) { + this.removeEventListener("progress", this[kEvents].progress); + } + if (typeof fn === "function") { + this[kEvents].progress = fn; + this.addEventListener("progress", fn); + } else { + this[kEvents].progress = null; + } + } + get onload() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].load; + } + set onload(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].load) { + this.removeEventListener("load", this[kEvents].load); + } + if (typeof fn === "function") { + this[kEvents].load = fn; + this.addEventListener("load", fn); + } else { + this[kEvents].load = null; + } + } + get onabort() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].abort; + } + set onabort(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].abort) { + this.removeEventListener("abort", this[kEvents].abort); + } + if (typeof fn === "function") { + this[kEvents].abort = fn; + this.addEventListener("abort", fn); + } else { + this[kEvents].abort = null; + } + } + }; + FileReader.EMPTY = FileReader.prototype.EMPTY = 0; + FileReader.LOADING = FileReader.prototype.LOADING = 1; + FileReader.DONE = FileReader.prototype.DONE = 2; + Object.defineProperties(FileReader.prototype, { + EMPTY: staticPropertyDescriptors, + LOADING: staticPropertyDescriptors, + DONE: staticPropertyDescriptors, + readAsArrayBuffer: kEnumerableProperty, + readAsBinaryString: kEnumerableProperty, + readAsText: kEnumerableProperty, + readAsDataURL: kEnumerableProperty, + abort: kEnumerableProperty, + readyState: kEnumerableProperty, + result: kEnumerableProperty, + error: kEnumerableProperty, + onloadstart: kEnumerableProperty, + onprogress: kEnumerableProperty, + onload: kEnumerableProperty, + onabort: kEnumerableProperty, + onerror: kEnumerableProperty, + onloadend: kEnumerableProperty, + [Symbol.toStringTag]: { + value: "FileReader", + writable: false, + enumerable: false, + configurable: true + } + }); + Object.defineProperties(FileReader, { + EMPTY: staticPropertyDescriptors, + LOADING: staticPropertyDescriptors, + DONE: staticPropertyDescriptors + }); + module2.exports = { + FileReader + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cache/symbols.js +var require_symbols4 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cache/symbols.js"(exports2, module2) { + "use strict"; + module2.exports = { + kConstruct: Symbol("constructable") + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cache/util.js +var require_util5 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cache/util.js"(exports2, module2) { + "use strict"; + var assert = require("assert"); + var { URLSerializer } = require_dataURL(); + var { isValidHeaderName } = require_util2(); + function urlEquals(A, B, excludeFragment = false) { + const serializedA = URLSerializer(A, excludeFragment); + const serializedB = URLSerializer(B, excludeFragment); + return serializedA === serializedB; + } + function fieldValues(header) { + assert(header !== null); + const values = []; + for (let value of header.split(",")) { + value = value.trim(); + if (!value.length) { + continue; + } else if (!isValidHeaderName(value)) { + continue; + } + values.push(value); + } + return values; + } + module2.exports = { + urlEquals, + fieldValues + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cache/cache.js +var require_cache = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cache/cache.js"(exports2, module2) { + "use strict"; + var { kConstruct } = require_symbols4(); + var { urlEquals, fieldValues: getFieldValues } = require_util5(); + var { kEnumerableProperty, isDisturbed } = require_util(); + var { kHeadersList } = require_symbols(); + var { webidl } = require_webidl(); + var { Response, cloneResponse } = require_response(); + var { Request } = require_request2(); + var { kState, kHeaders, kGuard, kRealm } = require_symbols2(); + var { fetching } = require_fetch(); + var { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = require_util2(); + var assert = require("assert"); + var { getGlobalDispatcher } = require_global2(); + var _relevantRequestResponseList, _batchCacheOperations, batchCacheOperations_fn, _queryCache, queryCache_fn, _requestMatchesCachedItem, requestMatchesCachedItem_fn; + var _Cache = class _Cache { + constructor() { + /** + * @see https://w3c.github.io/ServiceWorker/#batch-cache-operations-algorithm + * @param {CacheBatchOperation[]} operations + * @returns {requestResponseList} + */ + __privateAdd(this, _batchCacheOperations); + /** + * @see https://w3c.github.io/ServiceWorker/#query-cache + * @param {any} requestQuery + * @param {import('../../types/cache').CacheQueryOptions} options + * @param {requestResponseList} targetStorage + * @returns {requestResponseList} + */ + __privateAdd(this, _queryCache); + /** + * @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm + * @param {any} requestQuery + * @param {any} request + * @param {any | null} response + * @param {import('../../types/cache').CacheQueryOptions | undefined} options + * @returns {boolean} + */ + __privateAdd(this, _requestMatchesCachedItem); + /** + * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list + * @type {requestResponseList} + */ + __privateAdd(this, _relevantRequestResponseList, void 0); + if (arguments[0] !== kConstruct) { + webidl.illegalConstructor(); + } + __privateSet(this, _relevantRequestResponseList, arguments[1]); + } + async match(request3, options = {}) { + webidl.brandCheck(this, _Cache); + webidl.argumentLengthCheck(arguments, 1, { header: "Cache.match" }); + request3 = webidl.converters.RequestInfo(request3); + options = webidl.converters.CacheQueryOptions(options); + const p = await this.matchAll(request3, options); + if (p.length === 0) { + return; + } + return p[0]; + } + async matchAll(request3 = void 0, options = {}) { + var _a; + webidl.brandCheck(this, _Cache); + if (request3 !== void 0) + request3 = webidl.converters.RequestInfo(request3); + options = webidl.converters.CacheQueryOptions(options); + let r = null; + if (request3 !== void 0) { + if (request3 instanceof Request) { + r = request3[kState]; + if (r.method !== "GET" && !options.ignoreMethod) { + return []; + } + } else if (typeof request3 === "string") { + r = new Request(request3)[kState]; + } + } + const responses = []; + if (request3 === void 0) { + for (const requestResponse of __privateGet(this, _relevantRequestResponseList)) { + responses.push(requestResponse[1]); + } + } else { + const requestResponses = __privateMethod(this, _queryCache, queryCache_fn).call(this, r, options); + for (const requestResponse of requestResponses) { + responses.push(requestResponse[1]); + } + } + const responseList = []; + for (const response of responses) { + const responseObject = new Response(((_a = response.body) == null ? void 0 : _a.source) ?? null); + const body = responseObject[kState].body; + responseObject[kState] = response; + responseObject[kState].body = body; + responseObject[kHeaders][kHeadersList] = response.headersList; + responseObject[kHeaders][kGuard] = "immutable"; + responseList.push(responseObject); + } + return Object.freeze(responseList); + } + async add(request3) { + webidl.brandCheck(this, _Cache); + webidl.argumentLengthCheck(arguments, 1, { header: "Cache.add" }); + request3 = webidl.converters.RequestInfo(request3); + const requests = [request3]; + const responseArrayPromise = this.addAll(requests); + return await responseArrayPromise; + } + async addAll(requests) { + webidl.brandCheck(this, _Cache); + webidl.argumentLengthCheck(arguments, 1, { header: "Cache.addAll" }); + requests = webidl.converters["sequence"](requests); + const responsePromises = []; + const requestList = []; + for (const request3 of requests) { + if (typeof request3 === "string") { + continue; + } + const r = request3[kState]; + if (!urlIsHttpHttpsScheme(r.url) || r.method !== "GET") { + throw webidl.errors.exception({ + header: "Cache.addAll", + message: "Expected http/s scheme when method is not GET." + }); + } + } + const fetchControllers = []; + for (const request3 of requests) { + const r = new Request(request3)[kState]; + if (!urlIsHttpHttpsScheme(r.url)) { + throw webidl.errors.exception({ + header: "Cache.addAll", + message: "Expected http/s scheme." + }); + } + r.initiator = "fetch"; + r.destination = "subresource"; + requestList.push(r); + const responsePromise = createDeferredPromise(); + fetchControllers.push(fetching({ + request: r, + dispatcher: getGlobalDispatcher(), + processResponse(response) { + if (response.type === "error" || response.status === 206 || response.status < 200 || response.status > 299) { + responsePromise.reject(webidl.errors.exception({ + header: "Cache.addAll", + message: "Received an invalid status code or the request failed." + })); + } else if (response.headersList.contains("vary")) { + const fieldValues = getFieldValues(response.headersList.get("vary")); + for (const fieldValue of fieldValues) { + if (fieldValue === "*") { + responsePromise.reject(webidl.errors.exception({ + header: "Cache.addAll", + message: "invalid vary field value" + })); + for (const controller of fetchControllers) { + controller.abort(); + } + return; + } + } + } + }, + processResponseEndOfBody(response) { + if (response.aborted) { + responsePromise.reject(new DOMException("aborted", "AbortError")); + return; + } + responsePromise.resolve(response); + } + })); + responsePromises.push(responsePromise.promise); + } + const p = Promise.all(responsePromises); + const responses = await p; + const operations = []; + let index = 0; + for (const response of responses) { + const operation = { + type: "put", + // 7.3.2 + request: requestList[index], + // 7.3.3 + response + // 7.3.4 + }; + operations.push(operation); + index++; + } + const cacheJobPromise = createDeferredPromise(); + let errorData = null; + try { + __privateMethod(this, _batchCacheOperations, batchCacheOperations_fn).call(this, operations); + } catch (e) { + errorData = e; + } + queueMicrotask(() => { + if (errorData === null) { + cacheJobPromise.resolve(void 0); + } else { + cacheJobPromise.reject(errorData); + } + }); + return cacheJobPromise.promise; + } + async put(request3, response) { + webidl.brandCheck(this, _Cache); + webidl.argumentLengthCheck(arguments, 2, { header: "Cache.put" }); + request3 = webidl.converters.RequestInfo(request3); + response = webidl.converters.Response(response); + let innerRequest = null; + if (request3 instanceof Request) { + innerRequest = request3[kState]; + } else { + innerRequest = new Request(request3)[kState]; + } + if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== "GET") { + throw webidl.errors.exception({ + header: "Cache.put", + message: "Expected an http/s scheme when method is not GET" + }); + } + const innerResponse = response[kState]; + if (innerResponse.status === 206) { + throw webidl.errors.exception({ + header: "Cache.put", + message: "Got 206 status" + }); + } + if (innerResponse.headersList.contains("vary")) { + const fieldValues = getFieldValues(innerResponse.headersList.get("vary")); + for (const fieldValue of fieldValues) { + if (fieldValue === "*") { + throw webidl.errors.exception({ + header: "Cache.put", + message: "Got * vary field value" + }); + } + } + } + if (innerResponse.body && (isDisturbed(innerResponse.body.stream) || innerResponse.body.stream.locked)) { + throw webidl.errors.exception({ + header: "Cache.put", + message: "Response body is locked or disturbed" + }); + } + const clonedResponse = cloneResponse(innerResponse); + const bodyReadPromise = createDeferredPromise(); + if (innerResponse.body != null) { + const stream = innerResponse.body.stream; + const reader = stream.getReader(); + readAllBytes(reader).then(bodyReadPromise.resolve, bodyReadPromise.reject); + } else { + bodyReadPromise.resolve(void 0); + } + const operations = []; + const operation = { + type: "put", + // 14. + request: innerRequest, + // 15. + response: clonedResponse + // 16. + }; + operations.push(operation); + const bytes = await bodyReadPromise.promise; + if (clonedResponse.body != null) { + clonedResponse.body.source = bytes; + } + const cacheJobPromise = createDeferredPromise(); + let errorData = null; + try { + __privateMethod(this, _batchCacheOperations, batchCacheOperations_fn).call(this, operations); + } catch (e) { + errorData = e; + } + queueMicrotask(() => { + if (errorData === null) { + cacheJobPromise.resolve(); + } else { + cacheJobPromise.reject(errorData); + } + }); + return cacheJobPromise.promise; + } + async delete(request3, options = {}) { + webidl.brandCheck(this, _Cache); + webidl.argumentLengthCheck(arguments, 1, { header: "Cache.delete" }); + request3 = webidl.converters.RequestInfo(request3); + options = webidl.converters.CacheQueryOptions(options); + let r = null; + if (request3 instanceof Request) { + r = request3[kState]; + if (r.method !== "GET" && !options.ignoreMethod) { + return false; + } + } else { + assert(typeof request3 === "string"); + r = new Request(request3)[kState]; + } + const operations = []; + const operation = { + type: "delete", + request: r, + options + }; + operations.push(operation); + const cacheJobPromise = createDeferredPromise(); + let errorData = null; + let requestResponses; + try { + requestResponses = __privateMethod(this, _batchCacheOperations, batchCacheOperations_fn).call(this, operations); + } catch (e) { + errorData = e; + } + queueMicrotask(() => { + if (errorData === null) { + cacheJobPromise.resolve(!!(requestResponses == null ? void 0 : requestResponses.length)); + } else { + cacheJobPromise.reject(errorData); + } + }); + return cacheJobPromise.promise; + } + /** + * @see https://w3c.github.io/ServiceWorker/#dom-cache-keys + * @param {any} request + * @param {import('../../types/cache').CacheQueryOptions} options + * @returns {readonly Request[]} + */ + async keys(request3 = void 0, options = {}) { + webidl.brandCheck(this, _Cache); + if (request3 !== void 0) + request3 = webidl.converters.RequestInfo(request3); + options = webidl.converters.CacheQueryOptions(options); + let r = null; + if (request3 !== void 0) { + if (request3 instanceof Request) { + r = request3[kState]; + if (r.method !== "GET" && !options.ignoreMethod) { + return []; + } + } else if (typeof request3 === "string") { + r = new Request(request3)[kState]; + } + } + const promise = createDeferredPromise(); + const requests = []; + if (request3 === void 0) { + for (const requestResponse of __privateGet(this, _relevantRequestResponseList)) { + requests.push(requestResponse[0]); + } + } else { + const requestResponses = __privateMethod(this, _queryCache, queryCache_fn).call(this, r, options); + for (const requestResponse of requestResponses) { + requests.push(requestResponse[0]); + } + } + queueMicrotask(() => { + const requestList = []; + for (const request4 of requests) { + const requestObject = new Request("https://a"); + requestObject[kState] = request4; + requestObject[kHeaders][kHeadersList] = request4.headersList; + requestObject[kHeaders][kGuard] = "immutable"; + requestObject[kRealm] = request4.client; + requestList.push(requestObject); + } + promise.resolve(Object.freeze(requestList)); + }); + return promise.promise; + } + }; + _relevantRequestResponseList = new WeakMap(); + _batchCacheOperations = new WeakSet(); + batchCacheOperations_fn = function(operations) { + const cache = __privateGet(this, _relevantRequestResponseList); + const backupCache = [...cache]; + const addedItems = []; + const resultList = []; + try { + for (const operation of operations) { + if (operation.type !== "delete" && operation.type !== "put") { + throw webidl.errors.exception({ + header: "Cache.#batchCacheOperations", + message: 'operation type does not match "delete" or "put"' + }); + } + if (operation.type === "delete" && operation.response != null) { + throw webidl.errors.exception({ + header: "Cache.#batchCacheOperations", + message: "delete operation should not have an associated response" + }); + } + if (__privateMethod(this, _queryCache, queryCache_fn).call(this, operation.request, operation.options, addedItems).length) { + throw new DOMException("???", "InvalidStateError"); + } + let requestResponses; + if (operation.type === "delete") { + requestResponses = __privateMethod(this, _queryCache, queryCache_fn).call(this, operation.request, operation.options); + if (requestResponses.length === 0) { + return []; + } + for (const requestResponse of requestResponses) { + const idx = cache.indexOf(requestResponse); + assert(idx !== -1); + cache.splice(idx, 1); + } + } else if (operation.type === "put") { + if (operation.response == null) { + throw webidl.errors.exception({ + header: "Cache.#batchCacheOperations", + message: "put operation should have an associated response" + }); + } + const r = operation.request; + if (!urlIsHttpHttpsScheme(r.url)) { + throw webidl.errors.exception({ + header: "Cache.#batchCacheOperations", + message: "expected http or https scheme" + }); + } + if (r.method !== "GET") { + throw webidl.errors.exception({ + header: "Cache.#batchCacheOperations", + message: "not get method" + }); + } + if (operation.options != null) { + throw webidl.errors.exception({ + header: "Cache.#batchCacheOperations", + message: "options must not be defined" + }); + } + requestResponses = __privateMethod(this, _queryCache, queryCache_fn).call(this, operation.request); + for (const requestResponse of requestResponses) { + const idx = cache.indexOf(requestResponse); + assert(idx !== -1); + cache.splice(idx, 1); + } + cache.push([operation.request, operation.response]); + addedItems.push([operation.request, operation.response]); + } + resultList.push([operation.request, operation.response]); + } + return resultList; + } catch (e) { + __privateGet(this, _relevantRequestResponseList).length = 0; + __privateSet(this, _relevantRequestResponseList, backupCache); + throw e; + } + }; + _queryCache = new WeakSet(); + queryCache_fn = function(requestQuery, options, targetStorage) { + const resultList = []; + const storage = targetStorage ?? __privateGet(this, _relevantRequestResponseList); + for (const requestResponse of storage) { + const [cachedRequest, cachedResponse] = requestResponse; + if (__privateMethod(this, _requestMatchesCachedItem, requestMatchesCachedItem_fn).call(this, requestQuery, cachedRequest, cachedResponse, options)) { + resultList.push(requestResponse); + } + } + return resultList; + }; + _requestMatchesCachedItem = new WeakSet(); + requestMatchesCachedItem_fn = function(requestQuery, request3, response = null, options) { + const queryURL = new URL(requestQuery.url); + const cachedURL = new URL(request3.url); + if (options == null ? void 0 : options.ignoreSearch) { + cachedURL.search = ""; + queryURL.search = ""; + } + if (!urlEquals(queryURL, cachedURL, true)) { + return false; + } + if (response == null || (options == null ? void 0 : options.ignoreVary) || !response.headersList.contains("vary")) { + return true; + } + const fieldValues = getFieldValues(response.headersList.get("vary")); + for (const fieldValue of fieldValues) { + if (fieldValue === "*") { + return false; + } + const requestValue = request3.headersList.get(fieldValue); + const queryValue = requestQuery.headersList.get(fieldValue); + if (requestValue !== queryValue) { + return false; + } + } + return true; + }; + var Cache = _Cache; + Object.defineProperties(Cache.prototype, { + [Symbol.toStringTag]: { + value: "Cache", + configurable: true + }, + match: kEnumerableProperty, + matchAll: kEnumerableProperty, + add: kEnumerableProperty, + addAll: kEnumerableProperty, + put: kEnumerableProperty, + delete: kEnumerableProperty, + keys: kEnumerableProperty + }); + var cacheQueryOptionConverters = [ + { + key: "ignoreSearch", + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: "ignoreMethod", + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: "ignoreVary", + converter: webidl.converters.boolean, + defaultValue: false + } + ]; + webidl.converters.CacheQueryOptions = webidl.dictionaryConverter(cacheQueryOptionConverters); + webidl.converters.MultiCacheQueryOptions = webidl.dictionaryConverter([ + ...cacheQueryOptionConverters, + { + key: "cacheName", + converter: webidl.converters.DOMString + } + ]); + webidl.converters.Response = webidl.interfaceConverter(Response); + webidl.converters["sequence"] = webidl.sequenceConverter( + webidl.converters.RequestInfo + ); + module2.exports = { + Cache + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cache/cachestorage.js +var require_cachestorage = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cache/cachestorage.js"(exports2, module2) { + "use strict"; + var { kConstruct } = require_symbols4(); + var { Cache } = require_cache(); + var { webidl } = require_webidl(); + var { kEnumerableProperty } = require_util(); + var _caches; + var _CacheStorage = class _CacheStorage { + constructor() { + /** + * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-name-to-cache-map + * @type {Map} + */ + async has(cacheName) { + webidl.brandCheck(this, _CacheStorage); + webidl.argumentLengthCheck(arguments, 1, { header: "CacheStorage.has" }); + cacheName = webidl.converters.DOMString(cacheName); + return __privateGet(this, _caches).has(cacheName); + } + /** + * @see https://w3c.github.io/ServiceWorker/#dom-cachestorage-open + * @param {string} cacheName + * @returns {Promise} + */ + async open(cacheName) { + webidl.brandCheck(this, _CacheStorage); + webidl.argumentLengthCheck(arguments, 1, { header: "CacheStorage.open" }); + cacheName = webidl.converters.DOMString(cacheName); + if (__privateGet(this, _caches).has(cacheName)) { + const cache2 = __privateGet(this, _caches).get(cacheName); + return new Cache(kConstruct, cache2); + } + const cache = []; + __privateGet(this, _caches).set(cacheName, cache); + return new Cache(kConstruct, cache); + } + /** + * @see https://w3c.github.io/ServiceWorker/#cache-storage-delete + * @param {string} cacheName + * @returns {Promise} + */ + async delete(cacheName) { + webidl.brandCheck(this, _CacheStorage); + webidl.argumentLengthCheck(arguments, 1, { header: "CacheStorage.delete" }); + cacheName = webidl.converters.DOMString(cacheName); + return __privateGet(this, _caches).delete(cacheName); + } + /** + * @see https://w3c.github.io/ServiceWorker/#cache-storage-keys + * @returns {string[]} + */ + async keys() { + webidl.brandCheck(this, _CacheStorage); + const keys = __privateGet(this, _caches).keys(); + return [...keys]; + } + }; + _caches = new WeakMap(); + var CacheStorage = _CacheStorage; + Object.defineProperties(CacheStorage.prototype, { + [Symbol.toStringTag]: { + value: "CacheStorage", + configurable: true + }, + match: kEnumerableProperty, + has: kEnumerableProperty, + open: kEnumerableProperty, + delete: kEnumerableProperty, + keys: kEnumerableProperty + }); + module2.exports = { + CacheStorage + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cookies/constants.js +var require_constants3 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cookies/constants.js"(exports2, module2) { + "use strict"; + var maxAttributeValueSize = 1024; + var maxNameValuePairSize = 4096; + module2.exports = { + maxAttributeValueSize, + maxNameValuePairSize + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cookies/util.js +var require_util6 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cookies/util.js"(exports2, module2) { + "use strict"; + var assert = require("assert"); + var { kHeadersList } = require_symbols(); + function isCTLExcludingHtab(value) { + if (value.length === 0) { + return false; + } + for (const char of value) { + const code = char.charCodeAt(0); + if (code >= 0 || code <= 8 || (code >= 10 || code <= 31) || code === 127) { + return false; + } + } + } + function validateCookieName(name) { + for (const char of name) { + const code = char.charCodeAt(0); + if (code <= 32 || code > 127 || char === "(" || char === ")" || char === ">" || char === "<" || char === "@" || char === "," || char === ";" || char === ":" || char === "\\" || char === '"' || char === "/" || char === "[" || char === "]" || char === "?" || char === "=" || char === "{" || char === "}") { + throw new Error("Invalid cookie name"); + } + } + } + function validateCookieValue(value) { + for (const char of value) { + const code = char.charCodeAt(0); + if (code < 33 || // exclude CTLs (0-31) + code === 34 || code === 44 || code === 59 || code === 92 || code > 126) { + throw new Error("Invalid header value"); + } + } + } + function validateCookiePath(path) { + for (const char of path) { + const code = char.charCodeAt(0); + if (code < 33 || char === ";") { + throw new Error("Invalid cookie path"); + } + } + } + function validateCookieDomain(domain) { + if (domain.startsWith("-") || domain.endsWith(".") || domain.endsWith("-")) { + throw new Error("Invalid cookie domain"); + } + } + function toIMFDate(date) { + if (typeof date === "number") { + date = new Date(date); + } + const days = [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ]; + const months = [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ]; + const dayName = days[date.getUTCDay()]; + const day = date.getUTCDate().toString().padStart(2, "0"); + const month = months[date.getUTCMonth()]; + const year = date.getUTCFullYear(); + const hour = date.getUTCHours().toString().padStart(2, "0"); + const minute = date.getUTCMinutes().toString().padStart(2, "0"); + const second = date.getUTCSeconds().toString().padStart(2, "0"); + return `${dayName}, ${day} ${month} ${year} ${hour}:${minute}:${second} GMT`; + } + function validateCookieMaxAge(maxAge) { + if (maxAge < 0) { + throw new Error("Invalid cookie max-age"); + } + } + function stringify(cookie) { + if (cookie.name.length === 0) { + return null; + } + validateCookieName(cookie.name); + validateCookieValue(cookie.value); + const out = [`${cookie.name}=${cookie.value}`]; + if (cookie.name.startsWith("__Secure-")) { + cookie.secure = true; + } + if (cookie.name.startsWith("__Host-")) { + cookie.secure = true; + cookie.domain = null; + cookie.path = "/"; + } + if (cookie.secure) { + out.push("Secure"); + } + if (cookie.httpOnly) { + out.push("HttpOnly"); + } + if (typeof cookie.maxAge === "number") { + validateCookieMaxAge(cookie.maxAge); + out.push(`Max-Age=${cookie.maxAge}`); + } + if (cookie.domain) { + validateCookieDomain(cookie.domain); + out.push(`Domain=${cookie.domain}`); + } + if (cookie.path) { + validateCookiePath(cookie.path); + out.push(`Path=${cookie.path}`); + } + if (cookie.expires && cookie.expires.toString() !== "Invalid Date") { + out.push(`Expires=${toIMFDate(cookie.expires)}`); + } + if (cookie.sameSite) { + out.push(`SameSite=${cookie.sameSite}`); + } + for (const part of cookie.unparsed) { + if (!part.includes("=")) { + throw new Error("Invalid unparsed"); + } + const [key, ...value] = part.split("="); + out.push(`${key.trim()}=${value.join("=")}`); + } + return out.join("; "); + } + var kHeadersListNode; + function getHeadersList(headers) { + if (headers[kHeadersList]) { + return headers[kHeadersList]; + } + if (!kHeadersListNode) { + kHeadersListNode = Object.getOwnPropertySymbols(headers).find( + (symbol) => symbol.description === "headers list" + ); + assert(kHeadersListNode, "Headers cannot be parsed"); + } + const headersList = headers[kHeadersListNode]; + assert(headersList); + return headersList; + } + module2.exports = { + isCTLExcludingHtab, + stringify, + getHeadersList + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cookies/parse.js +var require_parse = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cookies/parse.js"(exports2, module2) { + "use strict"; + var { maxNameValuePairSize, maxAttributeValueSize } = require_constants3(); + var { isCTLExcludingHtab } = require_util6(); + var { collectASequenceOfCodePointsFast } = require_dataURL(); + var assert = require("assert"); + function parseSetCookie(header) { + if (isCTLExcludingHtab(header)) { + return null; + } + let nameValuePair = ""; + let unparsedAttributes = ""; + let name = ""; + let value = ""; + if (header.includes(";")) { + const position = { position: 0 }; + nameValuePair = collectASequenceOfCodePointsFast(";", header, position); + unparsedAttributes = header.slice(position.position); + } else { + nameValuePair = header; + } + if (!nameValuePair.includes("=")) { + value = nameValuePair; + } else { + const position = { position: 0 }; + name = collectASequenceOfCodePointsFast( + "=", + nameValuePair, + position + ); + value = nameValuePair.slice(position.position + 1); + } + name = name.trim(); + value = value.trim(); + if (name.length + value.length > maxNameValuePairSize) { + return null; + } + return { + name, + value, + ...parseUnparsedAttributes(unparsedAttributes) + }; + } + function parseUnparsedAttributes(unparsedAttributes, cookieAttributeList = {}) { + if (unparsedAttributes.length === 0) { + return cookieAttributeList; + } + assert(unparsedAttributes[0] === ";"); + unparsedAttributes = unparsedAttributes.slice(1); + let cookieAv = ""; + if (unparsedAttributes.includes(";")) { + cookieAv = collectASequenceOfCodePointsFast( + ";", + unparsedAttributes, + { position: 0 } + ); + unparsedAttributes = unparsedAttributes.slice(cookieAv.length); + } else { + cookieAv = unparsedAttributes; + unparsedAttributes = ""; + } + let attributeName = ""; + let attributeValue = ""; + if (cookieAv.includes("=")) { + const position = { position: 0 }; + attributeName = collectASequenceOfCodePointsFast( + "=", + cookieAv, + position + ); + attributeValue = cookieAv.slice(position.position + 1); + } else { + attributeName = cookieAv; + } + attributeName = attributeName.trim(); + attributeValue = attributeValue.trim(); + if (attributeValue.length > maxAttributeValueSize) { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); + } + const attributeNameLowercase = attributeName.toLowerCase(); + if (attributeNameLowercase === "expires") { + const expiryTime = new Date(attributeValue); + cookieAttributeList.expires = expiryTime; + } else if (attributeNameLowercase === "max-age") { + const charCode = attributeValue.charCodeAt(0); + if ((charCode < 48 || charCode > 57) && attributeValue[0] !== "-") { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); + } + if (!/^\d+$/.test(attributeValue)) { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); + } + const deltaSeconds = Number(attributeValue); + cookieAttributeList.maxAge = deltaSeconds; + } else if (attributeNameLowercase === "domain") { + let cookieDomain = attributeValue; + if (cookieDomain[0] === ".") { + cookieDomain = cookieDomain.slice(1); + } + cookieDomain = cookieDomain.toLowerCase(); + cookieAttributeList.domain = cookieDomain; + } else if (attributeNameLowercase === "path") { + let cookiePath = ""; + if (attributeValue.length === 0 || attributeValue[0] !== "/") { + cookiePath = "/"; + } else { + cookiePath = attributeValue; + } + cookieAttributeList.path = cookiePath; + } else if (attributeNameLowercase === "secure") { + cookieAttributeList.secure = true; + } else if (attributeNameLowercase === "httponly") { + cookieAttributeList.httpOnly = true; + } else if (attributeNameLowercase === "samesite") { + let enforcement = "Default"; + const attributeValueLowercase = attributeValue.toLowerCase(); + if (attributeValueLowercase.includes("none")) { + enforcement = "None"; + } + if (attributeValueLowercase.includes("strict")) { + enforcement = "Strict"; + } + if (attributeValueLowercase.includes("lax")) { + enforcement = "Lax"; + } + cookieAttributeList.sameSite = enforcement; + } else { + cookieAttributeList.unparsed ?? (cookieAttributeList.unparsed = []); + cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`); + } + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); + } + module2.exports = { + parseSetCookie, + parseUnparsedAttributes + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cookies/index.js +var require_cookies = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/cookies/index.js"(exports2, module2) { + "use strict"; + var { parseSetCookie } = require_parse(); + var { stringify, getHeadersList } = require_util6(); + var { webidl } = require_webidl(); + var { Headers } = require_headers(); + function getCookies(headers) { + webidl.argumentLengthCheck(arguments, 1, { header: "getCookies" }); + webidl.brandCheck(headers, Headers, { strict: false }); + const cookie = headers.get("cookie"); + const out = {}; + if (!cookie) { + return out; + } + for (const piece of cookie.split(";")) { + const [name, ...value] = piece.split("="); + out[name.trim()] = value.join("="); + } + return out; + } + function deleteCookie(headers, name, attributes) { + webidl.argumentLengthCheck(arguments, 2, { header: "deleteCookie" }); + webidl.brandCheck(headers, Headers, { strict: false }); + name = webidl.converters.DOMString(name); + attributes = webidl.converters.DeleteCookieAttributes(attributes); + setCookie(headers, { + name, + value: "", + expires: /* @__PURE__ */ new Date(0), + ...attributes + }); + } + function getSetCookies(headers) { + webidl.argumentLengthCheck(arguments, 1, { header: "getSetCookies" }); + webidl.brandCheck(headers, Headers, { strict: false }); + const cookies = getHeadersList(headers).cookies; + if (!cookies) { + return []; + } + return cookies.map((pair) => parseSetCookie(Array.isArray(pair) ? pair[1] : pair)); + } + function setCookie(headers, cookie) { + webidl.argumentLengthCheck(arguments, 2, { header: "setCookie" }); + webidl.brandCheck(headers, Headers, { strict: false }); + cookie = webidl.converters.Cookie(cookie); + const str = stringify(cookie); + if (str) { + headers.append("Set-Cookie", stringify(cookie)); + } + } + webidl.converters.DeleteCookieAttributes = webidl.dictionaryConverter([ + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: "path", + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: "domain", + defaultValue: null + } + ]); + webidl.converters.Cookie = webidl.dictionaryConverter([ + { + converter: webidl.converters.DOMString, + key: "name" + }, + { + converter: webidl.converters.DOMString, + key: "value" + }, + { + converter: webidl.nullableConverter((value) => { + if (typeof value === "number") { + return webidl.converters["unsigned long long"](value); + } + return new Date(value); + }), + key: "expires", + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters["long long"]), + key: "maxAge", + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: "domain", + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: "path", + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.boolean), + key: "secure", + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.boolean), + key: "httpOnly", + defaultValue: null + }, + { + converter: webidl.converters.USVString, + key: "sameSite", + allowedValues: ["Strict", "Lax", "None"] + }, + { + converter: webidl.sequenceConverter(webidl.converters.DOMString), + key: "unparsed", + defaultValue: [] + } + ]); + module2.exports = { + getCookies, + deleteCookie, + getSetCookies, + setCookie + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/constants.js +var require_constants4 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/constants.js"(exports2, module2) { + "use strict"; + var uid = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"; + var staticPropertyDescriptors = { + enumerable: true, + writable: false, + configurable: false + }; + var states = { + CONNECTING: 0, + OPEN: 1, + CLOSING: 2, + CLOSED: 3 + }; + var opcodes = { + CONTINUATION: 0, + TEXT: 1, + BINARY: 2, + CLOSE: 8, + PING: 9, + PONG: 10 + }; + var maxUnsigned16Bit = 2 ** 16 - 1; + var parserStates = { + INFO: 0, + PAYLOADLENGTH_16: 2, + PAYLOADLENGTH_64: 3, + READ_DATA: 4 + }; + var emptyBuffer = Buffer.allocUnsafe(0); + module2.exports = { + uid, + staticPropertyDescriptors, + states, + opcodes, + maxUnsigned16Bit, + parserStates, + emptyBuffer + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/symbols.js +var require_symbols5 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/symbols.js"(exports2, module2) { + "use strict"; + module2.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") + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/events.js +var require_events = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/events.js"(exports2, module2) { + "use strict"; + var { webidl } = require_webidl(); + var { kEnumerableProperty } = require_util(); + var { MessagePort } = require("worker_threads"); + var _eventInit; + var _MessageEvent = class _MessageEvent extends Event { + constructor(type, eventInitDict = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: "MessageEvent constructor" }); + type = webidl.converters.DOMString(type); + eventInitDict = webidl.converters.MessageEventInit(eventInitDict); + super(type, eventInitDict); + __privateAdd(this, _eventInit, void 0); + __privateSet(this, _eventInit, eventInitDict); + } + get data() { + webidl.brandCheck(this, _MessageEvent); + return __privateGet(this, _eventInit).data; + } + get origin() { + webidl.brandCheck(this, _MessageEvent); + return __privateGet(this, _eventInit).origin; + } + get lastEventId() { + webidl.brandCheck(this, _MessageEvent); + return __privateGet(this, _eventInit).lastEventId; + } + get source() { + webidl.brandCheck(this, _MessageEvent); + return __privateGet(this, _eventInit).source; + } + get ports() { + webidl.brandCheck(this, _MessageEvent); + if (!Object.isFrozen(__privateGet(this, _eventInit).ports)) { + Object.freeze(__privateGet(this, _eventInit).ports); + } + return __privateGet(this, _eventInit).ports; + } + initMessageEvent(type, bubbles = false, cancelable = false, data = null, origin = "", lastEventId = "", source2 = null, ports = []) { + webidl.brandCheck(this, _MessageEvent); + webidl.argumentLengthCheck(arguments, 1, { header: "MessageEvent.initMessageEvent" }); + return new _MessageEvent(type, { + bubbles, + cancelable, + data, + origin, + lastEventId, + source: source2, + ports + }); + } + }; + _eventInit = new WeakMap(); + var MessageEvent = _MessageEvent; + var _eventInit2; + var _CloseEvent = class _CloseEvent extends Event { + constructor(type, eventInitDict = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: "CloseEvent constructor" }); + type = webidl.converters.DOMString(type); + eventInitDict = webidl.converters.CloseEventInit(eventInitDict); + super(type, eventInitDict); + __privateAdd(this, _eventInit2, void 0); + __privateSet(this, _eventInit2, eventInitDict); + } + get wasClean() { + webidl.brandCheck(this, _CloseEvent); + return __privateGet(this, _eventInit2).wasClean; + } + get code() { + webidl.brandCheck(this, _CloseEvent); + return __privateGet(this, _eventInit2).code; + } + get reason() { + webidl.brandCheck(this, _CloseEvent); + return __privateGet(this, _eventInit2).reason; + } + }; + _eventInit2 = new WeakMap(); + var CloseEvent = _CloseEvent; + var _eventInit3; + var _ErrorEvent = class _ErrorEvent extends Event { + constructor(type, eventInitDict) { + webidl.argumentLengthCheck(arguments, 1, { header: "ErrorEvent constructor" }); + super(type, eventInitDict); + __privateAdd(this, _eventInit3, void 0); + type = webidl.converters.DOMString(type); + eventInitDict = webidl.converters.ErrorEventInit(eventInitDict ?? {}); + __privateSet(this, _eventInit3, eventInitDict); + } + get message() { + webidl.brandCheck(this, _ErrorEvent); + return __privateGet(this, _eventInit3).message; + } + get filename() { + webidl.brandCheck(this, _ErrorEvent); + return __privateGet(this, _eventInit3).filename; + } + get lineno() { + webidl.brandCheck(this, _ErrorEvent); + return __privateGet(this, _eventInit3).lineno; + } + get colno() { + webidl.brandCheck(this, _ErrorEvent); + return __privateGet(this, _eventInit3).colno; + } + get error() { + webidl.brandCheck(this, _ErrorEvent); + return __privateGet(this, _eventInit3).error; + } + }; + _eventInit3 = new WeakMap(); + var ErrorEvent = _ErrorEvent; + Object.defineProperties(MessageEvent.prototype, { + [Symbol.toStringTag]: { + value: "MessageEvent", + configurable: true + }, + data: kEnumerableProperty, + origin: kEnumerableProperty, + lastEventId: kEnumerableProperty, + source: kEnumerableProperty, + ports: kEnumerableProperty, + initMessageEvent: kEnumerableProperty + }); + Object.defineProperties(CloseEvent.prototype, { + [Symbol.toStringTag]: { + value: "CloseEvent", + configurable: true + }, + reason: kEnumerableProperty, + code: kEnumerableProperty, + wasClean: kEnumerableProperty + }); + Object.defineProperties(ErrorEvent.prototype, { + [Symbol.toStringTag]: { + value: "ErrorEvent", + configurable: true + }, + message: kEnumerableProperty, + filename: kEnumerableProperty, + lineno: kEnumerableProperty, + colno: kEnumerableProperty, + error: kEnumerableProperty + }); + webidl.converters.MessagePort = webidl.interfaceConverter(MessagePort); + webidl.converters["sequence"] = webidl.sequenceConverter( + webidl.converters.MessagePort + ); + var eventInit = [ + { + key: "bubbles", + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: "cancelable", + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: "composed", + converter: webidl.converters.boolean, + defaultValue: false + } + ]; + webidl.converters.MessageEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: "data", + converter: webidl.converters.any, + defaultValue: null + }, + { + key: "origin", + converter: webidl.converters.USVString, + defaultValue: "" + }, + { + key: "lastEventId", + converter: webidl.converters.DOMString, + defaultValue: "" + }, + { + key: "source", + // Node doesn't implement WindowProxy or ServiceWorker, so the only + // valid value for source is a MessagePort. + converter: webidl.nullableConverter(webidl.converters.MessagePort), + defaultValue: null + }, + { + key: "ports", + converter: webidl.converters["sequence"], + get defaultValue() { + return []; + } + } + ]); + webidl.converters.CloseEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: "wasClean", + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: "code", + converter: webidl.converters["unsigned short"], + defaultValue: 0 + }, + { + key: "reason", + converter: webidl.converters.USVString, + defaultValue: "" + } + ]); + webidl.converters.ErrorEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: "message", + converter: webidl.converters.DOMString, + defaultValue: "" + }, + { + key: "filename", + converter: webidl.converters.USVString, + defaultValue: "" + }, + { + key: "lineno", + converter: webidl.converters["unsigned long"], + defaultValue: 0 + }, + { + key: "colno", + converter: webidl.converters["unsigned long"], + defaultValue: 0 + }, + { + key: "error", + converter: webidl.converters.any + } + ]); + module2.exports = { + MessageEvent, + CloseEvent, + ErrorEvent + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/util.js +var require_util7 = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/util.js"(exports2, module2) { + "use strict"; + var { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = require_symbols5(); + var { states, opcodes } = require_constants4(); + var { MessageEvent, ErrorEvent } = require_events(); + function isEstablished(ws) { + return ws[kReadyState] === states.OPEN; + } + function isClosing(ws) { + return ws[kReadyState] === states.CLOSING; + } + function isClosed(ws) { + return ws[kReadyState] === states.CLOSED; + } + function fireEvent(e, target, eventConstructor = Event, eventInitDict) { + const event = new eventConstructor(e, eventInitDict); + target.dispatchEvent(event); + } + function websocketMessageReceived(ws, type, data) { + if (ws[kReadyState] !== states.OPEN) { + return; + } + let dataForEvent; + if (type === opcodes.TEXT) { + try { + dataForEvent = new TextDecoder("utf-8", { fatal: true }).decode(data); + } catch { + failWebsocketConnection(ws, "Received invalid UTF-8 in text frame."); + return; + } + } else if (type === opcodes.BINARY) { + if (ws[kBinaryType] === "blob") { + dataForEvent = new Blob([data]); + } else { + dataForEvent = new Uint8Array(data).buffer; + } + } + fireEvent("message", ws, MessageEvent, { + origin: ws[kWebSocketURL].origin, + data: dataForEvent + }); + } + function isValidSubprotocol(protocol) { + if (protocol.length === 0) { + return false; + } + for (const char of protocol) { + const code = char.charCodeAt(0); + if (code < 33 || code > 126 || char === "(" || char === ")" || char === "<" || char === ">" || char === "@" || char === "," || char === ";" || char === ":" || char === "\\" || char === '"' || char === "/" || char === "[" || char === "]" || char === "?" || char === "=" || char === "{" || char === "}" || code === 32 || // SP + code === 9) { + return false; + } + } + return true; + } + function isValidStatusCode(code) { + if (code >= 1e3 && code < 1015) { + return code !== 1004 && // reserved + code !== 1005 && // "MUST NOT be set as a status code" + code !== 1006; + } + return code >= 3e3 && code <= 4999; + } + function failWebsocketConnection(ws, reason) { + const { [kController]: controller, [kResponse]: response } = ws; + controller.abort(); + if ((response == null ? void 0 : response.socket) && !response.socket.destroyed) { + response.socket.destroy(); + } + if (reason) { + fireEvent("error", ws, ErrorEvent, { + error: new Error(reason) + }); + } + } + module2.exports = { + isEstablished, + isClosing, + isClosed, + fireEvent, + isValidSubprotocol, + isValidStatusCode, + failWebsocketConnection, + websocketMessageReceived + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/connection.js +var require_connection = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/connection.js"(exports2, module2) { + "use strict"; + var diagnosticsChannel = require("diagnostics_channel"); + var { uid, states } = require_constants4(); + var { + kReadyState, + kSentClose, + kByteParser, + kReceivedClose + } = require_symbols5(); + var { fireEvent, failWebsocketConnection } = require_util7(); + var { CloseEvent } = require_events(); + var { makeRequest } = require_request2(); + var { fetching } = require_fetch(); + var { Headers } = require_headers(); + var { getGlobalDispatcher } = require_global2(); + var { kHeadersList } = require_symbols(); + var channels = {}; + channels.open = diagnosticsChannel.channel("undici:websocket:open"); + channels.close = diagnosticsChannel.channel("undici:websocket:close"); + channels.socketError = diagnosticsChannel.channel("undici:websocket:socket_error"); + var crypto; + try { + crypto = require("crypto"); + } catch { + } + function establishWebSocketConnection(url, protocols, ws, onEstablish, options) { + const requestURL = url; + requestURL.protocol = url.protocol === "ws:" ? "http:" : "https:"; + const request3 = makeRequest({ + urlList: [requestURL], + serviceWorkers: "none", + referrer: "no-referrer", + mode: "websocket", + credentials: "include", + cache: "no-store", + redirect: "error" + }); + if (options.headers) { + const headersList = new Headers(options.headers)[kHeadersList]; + request3.headersList = headersList; + } + const keyValue = crypto.randomBytes(16).toString("base64"); + request3.headersList.append("sec-websocket-key", keyValue); + request3.headersList.append("sec-websocket-version", "13"); + for (const protocol of protocols) { + request3.headersList.append("sec-websocket-protocol", protocol); + } + const permessageDeflate = ""; + const controller = fetching({ + request: request3, + useParallelQueue: true, + dispatcher: options.dispatcher ?? getGlobalDispatcher(), + processResponse(response) { + var _a, _b; + if (response.type === "error" || response.status !== 101) { + failWebsocketConnection(ws, "Received network error or non-101 status code."); + return; + } + if (protocols.length !== 0 && !response.headersList.get("Sec-WebSocket-Protocol")) { + failWebsocketConnection(ws, "Server did not respond with sent protocols."); + return; + } + if (((_a = response.headersList.get("Upgrade")) == null ? void 0 : _a.toLowerCase()) !== "websocket") { + failWebsocketConnection(ws, 'Server did not set Upgrade header to "websocket".'); + return; + } + if (((_b = response.headersList.get("Connection")) == null ? void 0 : _b.toLowerCase()) !== "upgrade") { + failWebsocketConnection(ws, 'Server did not set Connection header to "upgrade".'); + return; + } + const secWSAccept = response.headersList.get("Sec-WebSocket-Accept"); + const digest = crypto.createHash("sha1").update(keyValue + uid).digest("base64"); + if (secWSAccept !== digest) { + failWebsocketConnection(ws, "Incorrect hash received in Sec-WebSocket-Accept header."); + return; + } + const secExtension = response.headersList.get("Sec-WebSocket-Extensions"); + if (secExtension !== null && secExtension !== permessageDeflate) { + failWebsocketConnection(ws, "Received different permessage-deflate than the one set."); + return; + } + const secProtocol = response.headersList.get("Sec-WebSocket-Protocol"); + if (secProtocol !== null && secProtocol !== request3.headersList.get("Sec-WebSocket-Protocol")) { + failWebsocketConnection(ws, "Protocol was not set in the opening handshake."); + return; + } + response.socket.on("data", onSocketData); + response.socket.on("close", onSocketClose); + response.socket.on("error", onSocketError); + if (channels.open.hasSubscribers) { + channels.open.publish({ + address: response.socket.address(), + protocol: secProtocol, + extensions: secExtension + }); + } + onEstablish(response); + } + }); + return controller; + } + function onSocketData(chunk) { + if (!this.ws[kByteParser].write(chunk)) { + this.pause(); + } + } + function onSocketClose() { + const { ws } = this; + const wasClean = ws[kSentClose] && ws[kReceivedClose]; + let code = 1005; + let reason = ""; + const result = ws[kByteParser].closingInfo; + if (result) { + code = result.code ?? 1005; + reason = result.reason; + } else if (!ws[kSentClose]) { + code = 1006; + } + ws[kReadyState] = states.CLOSED; + fireEvent("close", ws, CloseEvent, { + wasClean, + code, + reason + }); + if (channels.close.hasSubscribers) { + channels.close.publish({ + websocket: ws, + code, + reason + }); + } + } + function onSocketError(error) { + const { ws } = this; + ws[kReadyState] = states.CLOSING; + if (channels.socketError.hasSubscribers) { + channels.socketError.publish(error); + } + this.destroy(); + } + module2.exports = { + establishWebSocketConnection + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/frame.js +var require_frame = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/frame.js"(exports2, module2) { + "use strict"; + var { maxUnsigned16Bit } = require_constants4(); + var crypto; + try { + crypto = require("crypto"); + } catch { + } + var WebsocketFrameSend = class { + /** + * @param {Buffer|undefined} data + */ + constructor(data) { + this.frameData = data; + this.maskKey = crypto.randomBytes(4); + } + createFrame(opcode) { + var _a; + const bodyLength = ((_a = this.frameData) == null ? void 0 : _a.byteLength) ?? 0; + let payloadLength = bodyLength; + let offset = 6; + if (bodyLength > maxUnsigned16Bit) { + offset += 8; + payloadLength = 127; + } else if (bodyLength > 125) { + offset += 2; + payloadLength = 126; + } + const buffer = Buffer.allocUnsafe(bodyLength + offset); + buffer[0] = buffer[1] = 0; + buffer[0] |= 128; + buffer[0] = (buffer[0] & 240) + opcode; + buffer[offset - 4] = this.maskKey[0]; + buffer[offset - 3] = this.maskKey[1]; + buffer[offset - 2] = this.maskKey[2]; + buffer[offset - 1] = this.maskKey[3]; + buffer[1] = payloadLength; + if (payloadLength === 126) { + buffer.writeUInt16BE(bodyLength, 2); + } else if (payloadLength === 127) { + buffer[2] = buffer[3] = 0; + buffer.writeUIntBE(bodyLength, 4, 6); + } + buffer[1] |= 128; + for (let i = 0; i < bodyLength; i++) { + buffer[offset + i] = this.frameData[i] ^ this.maskKey[i % 4]; + } + return buffer; + } + }; + module2.exports = { + WebsocketFrameSend + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/receiver.js +var require_receiver = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/receiver.js"(exports2, module2) { + "use strict"; + var { Writable } = require("stream"); + var diagnosticsChannel = require("diagnostics_channel"); + var { parserStates, opcodes, states, emptyBuffer } = require_constants4(); + var { kReadyState, kSentClose, kResponse, kReceivedClose } = require_symbols5(); + var { isValidStatusCode, failWebsocketConnection, websocketMessageReceived } = require_util7(); + var { WebsocketFrameSend } = require_frame(); + var channels = {}; + channels.ping = diagnosticsChannel.channel("undici:websocket:ping"); + channels.pong = diagnosticsChannel.channel("undici:websocket:pong"); + var _buffers, _byteOffset, _state, _info, _fragments; + var ByteParser = class extends Writable { + constructor(ws) { + super(); + __privateAdd(this, _buffers, []); + __privateAdd(this, _byteOffset, 0); + __privateAdd(this, _state, parserStates.INFO); + __privateAdd(this, _info, {}); + __privateAdd(this, _fragments, []); + this.ws = ws; + } + /** + * @param {Buffer} chunk + * @param {() => void} callback + */ + _write(chunk, _, callback) { + __privateGet(this, _buffers).push(chunk); + __privateSet(this, _byteOffset, __privateGet(this, _byteOffset) + chunk.length); + this.run(callback); + } + /** + * Runs whenever a new chunk is received. + * Callback is called whenever there are no more chunks buffering, + * or not enough bytes are buffered to parse. + */ + run(callback) { + var _a; + while (true) { + if (__privateGet(this, _state) === parserStates.INFO) { + if (__privateGet(this, _byteOffset) < 2) { + return callback(); + } + const buffer = this.consume(2); + __privateGet(this, _info).fin = (buffer[0] & 128) !== 0; + __privateGet(this, _info).opcode = buffer[0] & 15; + (_a = __privateGet(this, _info)).originalOpcode ?? (_a.originalOpcode = __privateGet(this, _info).opcode); + __privateGet(this, _info).fragmented = !__privateGet(this, _info).fin && __privateGet(this, _info).opcode !== opcodes.CONTINUATION; + if (__privateGet(this, _info).fragmented && __privateGet(this, _info).opcode !== opcodes.BINARY && __privateGet(this, _info).opcode !== opcodes.TEXT) { + failWebsocketConnection(this.ws, "Invalid frame type was fragmented."); + return; + } + const payloadLength = buffer[1] & 127; + if (payloadLength <= 125) { + __privateGet(this, _info).payloadLength = payloadLength; + __privateSet(this, _state, parserStates.READ_DATA); + } else if (payloadLength === 126) { + __privateSet(this, _state, parserStates.PAYLOADLENGTH_16); + } else if (payloadLength === 127) { + __privateSet(this, _state, parserStates.PAYLOADLENGTH_64); + } + if (__privateGet(this, _info).fragmented && payloadLength > 125) { + failWebsocketConnection(this.ws, "Fragmented frame exceeded 125 bytes."); + return; + } else if ((__privateGet(this, _info).opcode === opcodes.PING || __privateGet(this, _info).opcode === opcodes.PONG || __privateGet(this, _info).opcode === opcodes.CLOSE) && payloadLength > 125) { + failWebsocketConnection(this.ws, "Payload length for control frame exceeded 125 bytes."); + return; + } else if (__privateGet(this, _info).opcode === opcodes.CLOSE) { + if (payloadLength === 1) { + failWebsocketConnection(this.ws, "Received close frame with a 1-byte body."); + return; + } + const body = this.consume(payloadLength); + __privateGet(this, _info).closeInfo = this.parseCloseBody(false, body); + if (!this.ws[kSentClose]) { + const body2 = Buffer.allocUnsafe(2); + body2.writeUInt16BE(__privateGet(this, _info).closeInfo.code, 0); + const closeFrame = new WebsocketFrameSend(body2); + this.ws[kResponse].socket.write( + closeFrame.createFrame(opcodes.CLOSE), + (err) => { + if (!err) { + this.ws[kSentClose] = true; + } + } + ); + } + this.ws[kReadyState] = states.CLOSING; + this.ws[kReceivedClose] = true; + this.end(); + return; + } else if (__privateGet(this, _info).opcode === opcodes.PING) { + const body = this.consume(payloadLength); + if (!this.ws[kReceivedClose]) { + const frame = new WebsocketFrameSend(body); + this.ws[kResponse].socket.write(frame.createFrame(opcodes.PONG)); + if (channels.ping.hasSubscribers) { + channels.ping.publish({ + payload: body + }); + } + } + __privateSet(this, _state, parserStates.INFO); + if (__privateGet(this, _byteOffset) > 0) { + continue; + } else { + callback(); + return; + } + } else if (__privateGet(this, _info).opcode === opcodes.PONG) { + const body = this.consume(payloadLength); + if (channels.pong.hasSubscribers) { + channels.pong.publish({ + payload: body + }); + } + if (__privateGet(this, _byteOffset) > 0) { + continue; + } else { + callback(); + return; + } + } + } else if (__privateGet(this, _state) === parserStates.PAYLOADLENGTH_16) { + if (__privateGet(this, _byteOffset) < 2) { + return callback(); + } + const buffer = this.consume(2); + __privateGet(this, _info).payloadLength = buffer.readUInt16BE(0); + __privateSet(this, _state, parserStates.READ_DATA); + } else if (__privateGet(this, _state) === parserStates.PAYLOADLENGTH_64) { + if (__privateGet(this, _byteOffset) < 8) { + return callback(); + } + const buffer = this.consume(8); + const upper = buffer.readUInt32BE(0); + if (upper > 2 ** 31 - 1) { + failWebsocketConnection(this.ws, "Received payload length > 2^31 bytes."); + return; + } + const lower = buffer.readUInt32BE(4); + __privateGet(this, _info).payloadLength = (upper << 8) + lower; + __privateSet(this, _state, parserStates.READ_DATA); + } else if (__privateGet(this, _state) === parserStates.READ_DATA) { + if (__privateGet(this, _byteOffset) < __privateGet(this, _info).payloadLength) { + return callback(); + } else if (__privateGet(this, _byteOffset) >= __privateGet(this, _info).payloadLength) { + const body = this.consume(__privateGet(this, _info).payloadLength); + __privateGet(this, _fragments).push(body); + if (!__privateGet(this, _info).fragmented || __privateGet(this, _info).fin && __privateGet(this, _info).opcode === opcodes.CONTINUATION) { + const fullMessage = Buffer.concat(__privateGet(this, _fragments)); + websocketMessageReceived(this.ws, __privateGet(this, _info).originalOpcode, fullMessage); + __privateSet(this, _info, {}); + __privateGet(this, _fragments).length = 0; + } + __privateSet(this, _state, parserStates.INFO); + } + } + if (__privateGet(this, _byteOffset) > 0) { + continue; + } else { + callback(); + break; + } + } + } + /** + * Take n bytes from the buffered Buffers + * @param {number} n + * @returns {Buffer|null} + */ + consume(n) { + if (n > __privateGet(this, _byteOffset)) { + return null; + } else if (n === 0) { + return emptyBuffer; + } + if (__privateGet(this, _buffers)[0].length === n) { + __privateSet(this, _byteOffset, __privateGet(this, _byteOffset) - __privateGet(this, _buffers)[0].length); + return __privateGet(this, _buffers).shift(); + } + const buffer = Buffer.allocUnsafe(n); + let offset = 0; + while (offset !== n) { + const next = __privateGet(this, _buffers)[0]; + const { length } = next; + if (length + offset === n) { + buffer.set(__privateGet(this, _buffers).shift(), offset); + break; + } else if (length + offset > n) { + buffer.set(next.subarray(0, n - offset), offset); + __privateGet(this, _buffers)[0] = next.subarray(n - offset); + break; + } else { + buffer.set(__privateGet(this, _buffers).shift(), offset); + offset += next.length; + } + } + __privateSet(this, _byteOffset, __privateGet(this, _byteOffset) - n); + return buffer; + } + parseCloseBody(onlyCode, data) { + let code; + if (data.length >= 2) { + code = data.readUInt16BE(0); + } + if (onlyCode) { + if (!isValidStatusCode(code)) { + return null; + } + return { code }; + } + let reason = data.subarray(2); + if (reason[0] === 239 && reason[1] === 187 && reason[2] === 191) { + reason = reason.subarray(3); + } + if (code !== void 0 && !isValidStatusCode(code)) { + return null; + } + try { + reason = new TextDecoder("utf-8", { fatal: true }).decode(reason); + } catch { + return null; + } + return { code, reason }; + } + get closingInfo() { + return __privateGet(this, _info).closeInfo; + } + }; + _buffers = new WeakMap(); + _byteOffset = new WeakMap(); + _state = new WeakMap(); + _info = new WeakMap(); + _fragments = new WeakMap(); + module2.exports = { + ByteParser + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/websocket.js +var require_websocket = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/lib/websocket/websocket.js"(exports2, module2) { + "use strict"; + var { webidl } = require_webidl(); + var { DOMException: DOMException2 } = require_constants(); + var { URLSerializer } = require_dataURL(); + var { getGlobalOrigin } = require_global(); + var { staticPropertyDescriptors, states, opcodes, emptyBuffer } = require_constants4(); + var { + kWebSocketURL, + kReadyState, + kController, + kBinaryType, + kResponse, + kSentClose, + kByteParser + } = require_symbols5(); + var { isEstablished, isClosing, isValidSubprotocol, failWebsocketConnection, fireEvent } = require_util7(); + var { establishWebSocketConnection } = require_connection(); + var { WebsocketFrameSend } = require_frame(); + var { ByteParser } = require_receiver(); + var { kEnumerableProperty, isBlobLike } = require_util(); + var { getGlobalDispatcher } = require_global2(); + var { types } = require("util"); + var experimentalWarned = false; + var _events, _bufferedAmount, _protocol, _extensions, _onConnectionEstablished, onConnectionEstablished_fn; + var _WebSocket = class _WebSocket extends EventTarget { + /** + * @param {string} url + * @param {string|string[]} protocols + */ + constructor(url, protocols = []) { + super(); + /** + * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol + */ + __privateAdd(this, _onConnectionEstablished); + __privateAdd(this, _events, { + open: null, + error: null, + close: null, + message: null + }); + __privateAdd(this, _bufferedAmount, 0); + __privateAdd(this, _protocol, ""); + __privateAdd(this, _extensions, ""); + webidl.argumentLengthCheck(arguments, 1, { header: "WebSocket constructor" }); + if (!experimentalWarned) { + experimentalWarned = true; + process.emitWarning("WebSockets are experimental, expect them to change at any time.", { + code: "UNDICI-WS" + }); + } + const options = webidl.converters["DOMString or sequence or WebSocketInit"](protocols); + url = webidl.converters.USVString(url); + protocols = options.protocols; + const baseURL = getGlobalOrigin(); + let urlRecord; + try { + urlRecord = new URL(url, baseURL); + } catch (e) { + throw new DOMException2(e, "SyntaxError"); + } + if (urlRecord.protocol === "http:") { + urlRecord.protocol = "ws:"; + } else if (urlRecord.protocol === "https:") { + urlRecord.protocol = "wss:"; + } + if (urlRecord.protocol !== "ws:" && urlRecord.protocol !== "wss:") { + throw new DOMException2( + `Expected a ws: or wss: protocol, got ${urlRecord.protocol}`, + "SyntaxError" + ); + } + if (urlRecord.hash || urlRecord.href.endsWith("#")) { + throw new DOMException2("Got fragment", "SyntaxError"); + } + if (typeof protocols === "string") { + protocols = [protocols]; + } + if (protocols.length !== new Set(protocols.map((p) => p.toLowerCase())).size) { + throw new DOMException2("Invalid Sec-WebSocket-Protocol value", "SyntaxError"); + } + if (protocols.length > 0 && !protocols.every((p) => isValidSubprotocol(p))) { + throw new DOMException2("Invalid Sec-WebSocket-Protocol value", "SyntaxError"); + } + this[kWebSocketURL] = new URL(urlRecord.href); + this[kController] = establishWebSocketConnection( + urlRecord, + protocols, + this, + (response) => __privateMethod(this, _onConnectionEstablished, onConnectionEstablished_fn).call(this, response), + options + ); + this[kReadyState] = _WebSocket.CONNECTING; + this[kBinaryType] = "blob"; + } + /** + * @see https://websockets.spec.whatwg.org/#dom-websocket-close + * @param {number|undefined} code + * @param {string|undefined} reason + */ + close(code = void 0, reason = void 0) { + webidl.brandCheck(this, _WebSocket); + if (code !== void 0) { + code = webidl.converters["unsigned short"](code, { clamp: true }); + } + if (reason !== void 0) { + reason = webidl.converters.USVString(reason); + } + if (code !== void 0) { + if (code !== 1e3 && (code < 3e3 || code > 4999)) { + throw new DOMException2("invalid code", "InvalidAccessError"); + } + } + let reasonByteLength = 0; + if (reason !== void 0) { + reasonByteLength = Buffer.byteLength(reason); + if (reasonByteLength > 123) { + throw new DOMException2( + `Reason must be less than 123 bytes; received ${reasonByteLength}`, + "SyntaxError" + ); + } + } + if (this[kReadyState] === _WebSocket.CLOSING || this[kReadyState] === _WebSocket.CLOSED) { + } else if (!isEstablished(this)) { + failWebsocketConnection(this, "Connection was closed before it was established."); + this[kReadyState] = _WebSocket.CLOSING; + } else if (!isClosing(this)) { + const frame = new WebsocketFrameSend(); + if (code !== void 0 && reason === void 0) { + frame.frameData = Buffer.allocUnsafe(2); + frame.frameData.writeUInt16BE(code, 0); + } else if (code !== void 0 && reason !== void 0) { + frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength); + frame.frameData.writeUInt16BE(code, 0); + frame.frameData.write(reason, 2, "utf-8"); + } else { + frame.frameData = emptyBuffer; + } + const socket = this[kResponse].socket; + socket.write(frame.createFrame(opcodes.CLOSE), (err) => { + if (!err) { + this[kSentClose] = true; + } + }); + this[kReadyState] = states.CLOSING; + } else { + this[kReadyState] = _WebSocket.CLOSING; + } + } + /** + * @see https://websockets.spec.whatwg.org/#dom-websocket-send + * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data + */ + send(data) { + webidl.brandCheck(this, _WebSocket); + webidl.argumentLengthCheck(arguments, 1, { header: "WebSocket.send" }); + data = webidl.converters.WebSocketSendData(data); + if (this[kReadyState] === _WebSocket.CONNECTING) { + throw new DOMException2("Sent before connected.", "InvalidStateError"); + } + if (!isEstablished(this) || isClosing(this)) { + return; + } + const socket = this[kResponse].socket; + if (typeof data === "string") { + const value = Buffer.from(data); + const frame = new WebsocketFrameSend(value); + const buffer = frame.createFrame(opcodes.TEXT); + __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) + value.byteLength); + socket.write(buffer, () => { + __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) - value.byteLength); + }); + } else if (types.isArrayBuffer(data)) { + const value = Buffer.from(data); + const frame = new WebsocketFrameSend(value); + const buffer = frame.createFrame(opcodes.BINARY); + __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) + value.byteLength); + socket.write(buffer, () => { + __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) - value.byteLength); + }); + } else if (ArrayBuffer.isView(data)) { + const ab = Buffer.from(data, data.byteOffset, data.byteLength); + const frame = new WebsocketFrameSend(ab); + const buffer = frame.createFrame(opcodes.BINARY); + __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) + ab.byteLength); + socket.write(buffer, () => { + __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) - ab.byteLength); + }); + } else if (isBlobLike(data)) { + const frame = new WebsocketFrameSend(); + data.arrayBuffer().then((ab) => { + const value = Buffer.from(ab); + frame.frameData = value; + const buffer = frame.createFrame(opcodes.BINARY); + __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) + value.byteLength); + socket.write(buffer, () => { + __privateSet(this, _bufferedAmount, __privateGet(this, _bufferedAmount) - value.byteLength); + }); + }); + } + } + get readyState() { + webidl.brandCheck(this, _WebSocket); + return this[kReadyState]; + } + get bufferedAmount() { + webidl.brandCheck(this, _WebSocket); + return __privateGet(this, _bufferedAmount); + } + get url() { + webidl.brandCheck(this, _WebSocket); + return URLSerializer(this[kWebSocketURL]); + } + get extensions() { + webidl.brandCheck(this, _WebSocket); + return __privateGet(this, _extensions); + } + get protocol() { + webidl.brandCheck(this, _WebSocket); + return __privateGet(this, _protocol); + } + get onopen() { + webidl.brandCheck(this, _WebSocket); + return __privateGet(this, _events).open; + } + set onopen(fn) { + webidl.brandCheck(this, _WebSocket); + if (__privateGet(this, _events).open) { + this.removeEventListener("open", __privateGet(this, _events).open); + } + if (typeof fn === "function") { + __privateGet(this, _events).open = fn; + this.addEventListener("open", fn); + } else { + __privateGet(this, _events).open = null; + } + } + get onerror() { + webidl.brandCheck(this, _WebSocket); + return __privateGet(this, _events).error; + } + set onerror(fn) { + webidl.brandCheck(this, _WebSocket); + if (__privateGet(this, _events).error) { + this.removeEventListener("error", __privateGet(this, _events).error); + } + if (typeof fn === "function") { + __privateGet(this, _events).error = fn; + this.addEventListener("error", fn); + } else { + __privateGet(this, _events).error = null; + } + } + get onclose() { + webidl.brandCheck(this, _WebSocket); + return __privateGet(this, _events).close; + } + set onclose(fn) { + webidl.brandCheck(this, _WebSocket); + if (__privateGet(this, _events).close) { + this.removeEventListener("close", __privateGet(this, _events).close); + } + if (typeof fn === "function") { + __privateGet(this, _events).close = fn; + this.addEventListener("close", fn); + } else { + __privateGet(this, _events).close = null; + } + } + get onmessage() { + webidl.brandCheck(this, _WebSocket); + return __privateGet(this, _events).message; + } + set onmessage(fn) { + webidl.brandCheck(this, _WebSocket); + if (__privateGet(this, _events).message) { + this.removeEventListener("message", __privateGet(this, _events).message); + } + if (typeof fn === "function") { + __privateGet(this, _events).message = fn; + this.addEventListener("message", fn); + } else { + __privateGet(this, _events).message = null; + } + } + get binaryType() { + webidl.brandCheck(this, _WebSocket); + return this[kBinaryType]; + } + set binaryType(type) { + webidl.brandCheck(this, _WebSocket); + if (type !== "blob" && type !== "arraybuffer") { + this[kBinaryType] = "blob"; + } else { + this[kBinaryType] = type; + } + } + }; + _events = new WeakMap(); + _bufferedAmount = new WeakMap(); + _protocol = new WeakMap(); + _extensions = new WeakMap(); + _onConnectionEstablished = new WeakSet(); + onConnectionEstablished_fn = function(response) { + this[kResponse] = response; + const parser = new ByteParser(this); + parser.on("drain", function onParserDrain() { + this.ws[kResponse].socket.resume(); + }); + response.socket.ws = this; + this[kByteParser] = parser; + this[kReadyState] = states.OPEN; + const extensions = response.headersList.get("sec-websocket-extensions"); + if (extensions !== null) { + __privateSet(this, _extensions, extensions); + } + const protocol = response.headersList.get("sec-websocket-protocol"); + if (protocol !== null) { + __privateSet(this, _protocol, protocol); + } + fireEvent("open", this); + }; + var WebSocket = _WebSocket; + WebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING; + WebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN; + WebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING; + WebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED; + Object.defineProperties(WebSocket.prototype, { + CONNECTING: staticPropertyDescriptors, + OPEN: staticPropertyDescriptors, + CLOSING: staticPropertyDescriptors, + CLOSED: staticPropertyDescriptors, + url: kEnumerableProperty, + readyState: kEnumerableProperty, + bufferedAmount: kEnumerableProperty, + onopen: kEnumerableProperty, + onerror: kEnumerableProperty, + onclose: kEnumerableProperty, + close: kEnumerableProperty, + onmessage: kEnumerableProperty, + binaryType: kEnumerableProperty, + send: kEnumerableProperty, + extensions: kEnumerableProperty, + protocol: kEnumerableProperty, + [Symbol.toStringTag]: { + value: "WebSocket", + writable: false, + enumerable: false, + configurable: true + } + }); + Object.defineProperties(WebSocket, { + CONNECTING: staticPropertyDescriptors, + OPEN: staticPropertyDescriptors, + CLOSING: staticPropertyDescriptors, + CLOSED: staticPropertyDescriptors + }); + webidl.converters["sequence"] = webidl.sequenceConverter( + webidl.converters.DOMString + ); + webidl.converters["DOMString or sequence"] = function(V) { + if (webidl.util.Type(V) === "Object" && Symbol.iterator in V) { + return webidl.converters["sequence"](V); + } + return webidl.converters.DOMString(V); + }; + webidl.converters.WebSocketInit = webidl.dictionaryConverter([ + { + key: "protocols", + converter: webidl.converters["DOMString or sequence"], + get defaultValue() { + return []; + } + }, + { + key: "dispatcher", + converter: (V) => V, + get defaultValue() { + return getGlobalDispatcher(); + } + }, + { + key: "headers", + converter: webidl.nullableConverter(webidl.converters.HeadersInit) + } + ]); + webidl.converters["DOMString or sequence or WebSocketInit"] = function(V) { + if (webidl.util.Type(V) === "Object" && !(Symbol.iterator in V)) { + return webidl.converters.WebSocketInit(V); + } + return { protocols: webidl.converters["DOMString or sequence"](V) }; + }; + webidl.converters.WebSocketSendData = function(V) { + if (webidl.util.Type(V) === "Object") { + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }); + } + if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) { + return webidl.converters.BufferSource(V); + } + } + return webidl.converters.USVString(V); + }; + module2.exports = { + WebSocket + }; + } +}); + +// node_modules/.pnpm/undici@5.27.0/node_modules/undici/index.js +var require_undici = __commonJS({ + "node_modules/.pnpm/undici@5.27.0/node_modules/undici/index.js"(exports2, module2) { + "use strict"; + var Client = require_client(); + var Dispatcher = require_dispatcher(); + var errors = require_errors(); + var Pool = require_pool(); + var BalancedPool = require_balanced_pool(); + var Agent = require_agent(); + var util = require_util(); + var { InvalidArgumentError } = errors; + var api = require_api(); + var buildConnector = require_connect(); + var MockClient = require_mock_client(); + var MockAgent = require_mock_agent(); + var MockPool = require_mock_pool(); + var mockErrors = require_mock_errors(); + var ProxyAgent = require_proxy_agent(); + var { getGlobalDispatcher, setGlobalDispatcher } = require_global2(); + var DecoratorHandler = require_DecoratorHandler(); + var RedirectHandler = require_RedirectHandler(); + var createRedirectInterceptor = require_redirectInterceptor(); + var hasCrypto; + try { + require("crypto"); + hasCrypto = true; + } catch { + hasCrypto = false; + } + Object.assign(Dispatcher.prototype, api); + module2.exports.Dispatcher = Dispatcher; + module2.exports.Client = Client; + module2.exports.Pool = Pool; + module2.exports.BalancedPool = BalancedPool; + module2.exports.Agent = Agent; + module2.exports.ProxyAgent = ProxyAgent; + module2.exports.DecoratorHandler = DecoratorHandler; + module2.exports.RedirectHandler = RedirectHandler; + module2.exports.createRedirectInterceptor = createRedirectInterceptor; + module2.exports.buildConnector = buildConnector; + module2.exports.errors = errors; + function makeDispatcher(fn) { + return (url, opts, handler) => { + if (typeof opts === "function") { + handler = opts; + opts = null; + } + if (!url || typeof url !== "string" && typeof url !== "object" && !(url instanceof URL)) { + throw new InvalidArgumentError("invalid url"); + } + if (opts != null && typeof opts !== "object") { + throw new InvalidArgumentError("invalid opts"); + } + if (opts && opts.path != null) { + if (typeof opts.path !== "string") { + throw new InvalidArgumentError("invalid opts.path"); + } + let path = opts.path; + if (!opts.path.startsWith("/")) { + path = `/${path}`; + } + url = new URL(util.parseOrigin(url).origin + path); + } else { + if (!opts) { + opts = typeof url === "object" ? url : {}; + } + url = util.parseURL(url); + } + const { agent, dispatcher = getGlobalDispatcher() } = opts; + if (agent) { + throw new InvalidArgumentError("unsupported opts.agent. Did you mean opts.client?"); + } + return fn.call(dispatcher, { + ...opts, + origin: url.origin, + path: url.search ? `${url.pathname}${url.search}` : url.pathname, + method: opts.method || (opts.body ? "PUT" : "GET") + }, handler); + }; + } + module2.exports.setGlobalDispatcher = setGlobalDispatcher; + module2.exports.getGlobalDispatcher = getGlobalDispatcher; + if (util.nodeMajor > 16 || util.nodeMajor === 16 && util.nodeMinor >= 8) { + let fetchImpl = null; + module2.exports.fetch = async function fetch(resource) { + if (!fetchImpl) { + fetchImpl = require_fetch().fetch; + } + try { + return await fetchImpl(...arguments); + } catch (err) { + if (typeof err === "object") { + Error.captureStackTrace(err, this); + } + throw err; + } + }; + module2.exports.Headers = require_headers().Headers; + module2.exports.Response = require_response().Response; + module2.exports.Request = require_request2().Request; + module2.exports.FormData = require_formdata().FormData; + module2.exports.File = require_file().File; + module2.exports.FileReader = require_filereader().FileReader; + const { setGlobalOrigin, getGlobalOrigin } = require_global(); + module2.exports.setGlobalOrigin = setGlobalOrigin; + module2.exports.getGlobalOrigin = getGlobalOrigin; + const { CacheStorage } = require_cachestorage(); + const { kConstruct } = require_symbols4(); + module2.exports.caches = new CacheStorage(kConstruct); + } + if (util.nodeMajor >= 16) { + const { deleteCookie, getCookies, getSetCookies, setCookie } = require_cookies(); + module2.exports.deleteCookie = deleteCookie; + module2.exports.getCookies = getCookies; + module2.exports.getSetCookies = getSetCookies; + module2.exports.setCookie = setCookie; + const { parseMIMEType, serializeAMimeType } = require_dataURL(); + module2.exports.parseMIMEType = parseMIMEType; + module2.exports.serializeAMimeType = serializeAMimeType; + } + if (util.nodeMajor >= 18 && hasCrypto) { + const { WebSocket } = require_websocket(); + module2.exports.WebSocket = WebSocket; + } + module2.exports.request = makeDispatcher(api.request); + module2.exports.stream = makeDispatcher(api.stream); + module2.exports.pipeline = makeDispatcher(api.pipeline); + module2.exports.connect = makeDispatcher(api.connect); + module2.exports.upgrade = makeDispatcher(api.upgrade); + module2.exports.MockClient = MockClient; + module2.exports.MockPool = MockPool; + module2.exports.MockAgent = MockAgent; + module2.exports.mockErrors = mockErrors; + } +}); + +// integrations/sync/server/server.ts +var server_exports = {}; +__export(server_exports, { + getPlayerApiToken: () => getPlayerApiToken, + prependSnailyCAD: () => prependSnailyCAD +}); +module.exports = __toCommonJS(server_exports); + +// src/utils/get-player-ids.server.ts +function getPlayerIds(source2, returnType) { + const _identifiers = getPlayerIdentifiers(source2); + const identifiers = { license: null, steamId: null, discordId: null }; + const identifiersArray = []; + if (returnType === "object") { + for (const identifier of _identifiers) { + if (identifier.includes("steam")) { + identifiers.steamId = identifier; + } else if (identifier.includes("discord")) { + identifiers.discordId = identifier; + } else if (identifier.startsWith("license:")) { + identifiers.license = identifier; + } + } + return identifiers; + } + for (const identifier of _identifiers) { + identifiersArray.push(identifier); + } + return identifiersArray; +} + +// src/utils/fetch.server.ts +var import_undici2 = __toESM(require_undici()); + +// src/utils/version.server.ts +var import_undici = __toESM(require_undici()); +on("onResourceStart", async (resourceName) => { + if (GetCurrentResourceName() !== resourceName) { + return; + } + await verifyCADApiVersion(); + await verifyCurrentVersion(); +}); +async function verifyCurrentVersion() { + const currentResourceVersion = GetResourceMetadata(GetCurrentResourceName(), "version"); + console.log(`Checking for updates... +Current Version: ${currentResourceVersion}`); + try { + const PACKAGE_JSON_URL = "https://raw.githubusercontent.com/SnailyCAD/fivem-integrations/main/package.json"; + const data = await (0, import_undici.request)(PACKAGE_JSON_URL).then((res) => res.body.json()); + if (data.version !== currentResourceVersion) { + console.log(` +--------------------------------------- + +[${GetCurrentResourceName()}] A new version is available: ${data.version}. +Please find the latest version at: https://github.com/SnailyCAD/fivem-integrations/releases + +---------------------------------------`); + } + } catch (err) { + } +} +async function verifyCADApiVersion() { + try { + const { data } = await cadRequest({ + path: "/", + method: "GET", + responseType: "text" + }); + if (!(data == null ? void 0 : data.includes("200 Success. Current CAD Version"))) { + console.warn(` +--------------------------------------- + +[${GetCurrentResourceName()}] Failed to verify SnailyCAD version. Please make sure the following: + +- Correct global API Token set in server.cfg as "snailycad_api_key" +- Correct SnailyCAD URL set in server.cfg as "snailycad_url" +- Your SnailyCAD instance API is running and is accessible from this server + +---------------------------------------`); + } + } catch (err) { + console.error(err); + console.warn(` +--------------------------------------- + + [${GetCurrentResourceName()}] Failed to verify SnailyCAD version. Please make sure the following: + + - Correct global API Token set in server.cfg as "snailycad_api_key" + - Correct SnailyCAD URL set in server.cfg as "snailycad_url" + - Your SnailyCAD instance API is running and is accessible from this server + +---------------------------------------`); + } +} + +// src/utils/fetch.server.ts +async function cadRequest(options) { + var _a; + const url = GetConvar("snailycad_url", "null"); + const apiKey = GetConvar("snailycad_api_key", "null"); + const isFromDispatch = options.isFromDispatch ?? true; + if (url === "null") { + console.warn("No `snailycad_url` convar was found in your server.cfg"); + return { errorMessage: "No `snailycad_url` convar was found in your server.cfg", data: null }; + } + let tokenHeader = { "snaily-cad-api-token": apiKey }; + if (((_a = options.headers) == null ? void 0 : _a.userApiToken) && typeof options.headers.userApiToken === "string") { + tokenHeader = { "snaily-cad-user-api-token": options.headers.userApiToken }; + } + try { + const response = await (0, import_undici2.request)(`${url}${options.path}`, { + method: options.method, + body: options.data ? JSON.stringify(options.data) : void 0, + headers: { + "is-from-dispatch": isFromDispatch ? "true" : void 0, + "content-type": "application/json", + ...tokenHeader + } + }); + const responseType = options.responseType ?? "json"; + const json = await response.body[responseType](); + return { data: json }; + } catch (error) { + console.error("SnailyCAD API error:", JSON.stringify(error, null, 2)); + const errorMessage = error instanceof Error ? error.message : "Unknown error"; + return { data: null, error, errorMessage }; + } +} + +// integrations/sync/server/flows/auth.ts +RegisterCommand( + "sn-whoami" /* WhoAmI */, + async (source2) => { + CancelEvent(); + const { data } = await cadRequest({ + method: "POST", + path: "/user", + headers: { + userApiToken: getPlayerApiToken(source2) + } + }); + if (!(data == null ? void 0 : data.id)) { + emitNet("chat:addMessage", source2, { + args: [prependSnailyCAD("Please make sure you're authenticated. Use: ^5/sn-auth^7.")] + }); + return; + } + emitNet("chat:addMessage", source2, { + args: [prependSnailyCAD(`Your SnailyCAD username is ^5${data.username}^7.`)] + }); + }, + false +); +RegisterCommand( + "sn-logout" /* Logout */, + async (source2) => { + CancelEvent(); + const { data } = await cadRequest({ + method: "POST", + path: "/user", + headers: { + userApiToken: getPlayerApiToken(source2) + } + }); + if (!(data == null ? void 0 : data.id)) { + emitNet("chat:addMessage", source2, { + args: [prependSnailyCAD("Please make sure you're authenticated. Use: ^5/sn-auth^7.")] + }); + return; + } + const identifiers = getPlayerIds(source2, "object"); + const userLicense = identifiers.license; + DeleteResourceKvp(`snailycad:${userLicense}:token`); + emitNet("chat:addMessage", source2, { + args: [prependSnailyCAD("Successfully logged out this player from your SnailyCAD account.")] + }); + }, + false +); +RegisterCommand( + "sn-auth" /* Auth */, + (source2) => { + CancelEvent(); + emitNet("sna-sync:request-authentication-flow" /* RequestAuthFlow */, source2); + }, + false +); +onNet("sna-sync:on-user-save" /* OnUserSave */, async (userData) => { + CancelEvent(); + const identifiers = getPlayerIds(source, "object"); + if (!identifiers.license) { + console.error("no license found"); + return; + } + SetResourceKvp(`snailycad:${identifiers.license}:token`, userData.token); +}); + +// integrations/sync/server/flows/unit-status.ts +onNet("playerDropped", async () => { + var _a; + const isFeatureEnabledConvar = GetConvar("snailycad_player_leave_auto_off_duty", "false"); + if (isFeatureEnabledConvar !== "true") + return; + const player = global.source; + const userApiToken = getPlayerApiToken(player); + const { data } = await cadRequest({ + method: "POST", + path: "/user?includeActiveUnit=true", + headers: { + userApiToken + } + }); + if (!(data == null ? void 0 : data.unit)) + return; + const { data: values } = await cadRequest({ + method: "GET", + path: "/admin/values/codes_10?includeAll=true", + headers: { + userApiToken + } + }); + const all10Codes = ((_a = values == null ? void 0 : values.find((v) => v.type === "CODES_10")) == null ? void 0 : _a.values) ?? null; + const offDutyCode = (all10Codes == null ? void 0 : all10Codes.find((v) => v.shouldDo === "SET_OFF_DUTY")) ?? null; + if (offDutyCode) { + await cadRequest({ + method: "PUT", + path: `/dispatch/status/${data.unit.id}`, + headers: { + userApiToken + }, + data: { + status: offDutyCode.id + } + }); + } +}); +RegisterCommand( + "sn-active-unit" /* ActiveUnit */, + async (source2) => { + var _a; + CancelEvent(); + const { data } = await cadRequest({ + method: "POST", + path: "/user?includeActiveUnit=true", + headers: { + userApiToken: getPlayerApiToken(source2) + } + }); + if (!(data == null ? void 0 : data.id)) { + emitNet("chat:addMessage", source2, { + args: [prependSnailyCAD("Please make sure you're authenticated. Use: ^5/sn-auth^7.")] + }); + return; + } + if (!data.unit) { + emitNet("chat:addMessage", source2, { + args: [ + prependSnailyCAD( + "No active unit found. Go on-duty first in the SnailyCAD web interface." + ) + ] + }); + return; + } + const unitName = getUnitName(data.unit); + const unitStatus = ((_a = data.unit.status) == null ? void 0 : _a.value.value) ?? "None"; + emitNet("chat:addMessage", source2, { + args: [ + prependSnailyCAD(`Your active unit is ^5${unitName} ^7with status of ^5${unitStatus}^7.`) + ] + }); + }, + false +); +RegisterCommand( + "sn-set-status" /* SetStatus */, + async (source2, extraArgs) => { + var _a; + CancelEvent(); + const userApiToken = getPlayerApiToken(source2); + const { data } = await cadRequest({ + method: "POST", + path: "/user?includeActiveUnit=true", + headers: { + userApiToken + } + }); + if (!(data == null ? void 0 : data.id)) { + emitNet("chat:addMessage", source2, { + args: [prependSnailyCAD("Please make sure you're authenticated. Use: ^5/sn-auth^7.")] + }); + return; + } + if (!data.unit) { + emitNet("chat:addMessage", source2, { + args: [ + prependSnailyCAD( + "No active unit found. Go on-duty first in the SnailyCAD web interface." + ) + ] + }); + return; + } + const { data: values } = await cadRequest({ + method: "GET", + path: "/admin/values/codes_10?includeAll=true", + headers: { + userApiToken + } + }); + const all10Codes = ((_a = values == null ? void 0 : values.find((v) => v.type === "CODES_10")) == null ? void 0 : _a.values) ?? null; + const statusCodes = (all10Codes == null ? void 0 : all10Codes.filter((v) => v.type === "STATUS_CODE")) ?? []; + const [statusCode] = extraArgs ?? []; + if (statusCode) { + const nearestStatusCode = statusCodes.find( + (v) => v.value.value.toLowerCase().startsWith(statusCode.toLowerCase()) + ); + if (!nearestStatusCode) { + emitNet("chat:addMessage", source2, { + args: [prependSnailyCAD("An invalid status code was provided.")] + }); + return; + } + emit("sna-sync:on-set-unit-status" /* OnSetUnitStatus */, source2, data.unit.id, nearestStatusCode.id); + return; + } + emitNet( + "sna-sync:request-set-status-flow" /* RequestSetStatusFlow */, + source2, + data.unit.id, + source2, + userApiToken, + statusCodes + ); + }, + false +); +onNet( + "sna-sync:on-set-unit-status" /* OnSetUnitStatus */, + async (source2, unitId, statusCodeId) => { + var _a; + CancelEvent(); + const { data: updatedUnit } = await cadRequest({ + method: "PUT", + path: `/dispatch/status/${unitId}`, + headers: { + userApiToken: getPlayerApiToken(source2) + }, + data: { + status: statusCodeId + } + }); + if (!(updatedUnit == null ? void 0 : updatedUnit.id)) { + emitNet("chat:addMessage", source2, { + args: [prependSnailyCAD("An error occurred while updating your status.")] + }); + return; + } + emitNet("chat:addMessage", source2, { + args: [ + prependSnailyCAD(`Your status has been updated to ^5${(_a = updatedUnit.status) == null ? void 0 : _a.value.value}^7.`) + ] + }); + } +); +function getUnitName(unit) { + if ("deputies" in unit || "officers" in unit) + return ""; + return `${unit.citizen.name} ${unit.citizen.surname}`; +} + +// integrations/sync/server/flows/panic-button.ts +RegisterCommand( + "sn-panic-button" /* PanicButton */, + async (source2) => { + var _a; + CancelEvent(); + const { data } = await cadRequest({ + method: "POST", + path: "/user?includeActiveUnit=true", + headers: { + userApiToken: getPlayerApiToken(source2) + } + }); + if (!(data == null ? void 0 : data.id)) { + emitNet("chat:addMessage", source2, { + args: [prependSnailyCAD("Please make sure you're authenticated. Use: ^5/sn-auth^7.")] + }); + return; + } + if (!data.unit) { + emitNet("chat:addMessage", source2, { + args: [ + prependSnailyCAD( + "No active unit found. Go on-duty first in the SnailyCAD web interface." + ) + ] + }); + return; + } + const isOfficer = "divisions" in data.unit && Array.isArray(data.unit.divisions); + const path = isOfficer ? "/leo/panic-button" : "/ems-fd/panic-button"; + const dataKey = isOfficer ? "officerId" : "deputyId"; + const { data: updatedUnit } = await cadRequest({ + method: "POST", + path, + data: { + [dataKey]: data.unit.id + }, + headers: { + userApiToken: getPlayerApiToken(source2) + } + }); + if (!(updatedUnit == null ? void 0 : updatedUnit.id)) { + emitNet("chat:addMessage", source2, { + args: [prependSnailyCAD("An error occurred while updating your status.")] + }); + return; + } + const isCurrentlyInPanicButtonState = ((_a = updatedUnit.status) == null ? void 0 : _a.shouldDo) === "PANIC_BUTTON"; + emitNet("chat:addMessage", source2, { + args: [ + prependSnailyCAD( + `You successfully ${isCurrentlyInPanicButtonState ? "enabled" : "disabled"} your panic button` + ) + ] + }); + }, + false +); + +// integrations/sync/server/flows/911-call-attach.ts +RegisterCommand( + "sn-attach" /* AttachTo911Call */, + async (source2, extraArgs) => { + CancelEvent(); + const userApiToken = getPlayerApiToken(source2); + const { data } = await cadRequest({ + method: "POST", + path: "/user?includeActiveUnit=true", + headers: { userApiToken } + }); + if (!(data == null ? void 0 : data.id)) { + emitNet("chat:addMessage", source2, { + args: [prependSnailyCAD("Please make sure you're authenticated. Use: ^5/sn-auth^7.")] + }); + return; + } + if (!data.unit) { + emitNet("chat:addMessage", source2, { + args: [ + prependSnailyCAD( + "No active unit found. Go on-duty first in the SnailyCAD web interface." + ) + ] + }); + return; + } + const [caseNumber] = extraArgs ?? []; + if (caseNumber) { + const caseNumberWithoutHash = caseNumber.startsWith("#") ? caseNumber.replace("#", "") : caseNumber; + const { data: call } = await cadRequest({ + method: "GET", + path: `/911-calls/${caseNumberWithoutHash}`, + headers: { userApiToken } + }); + if (!(call == null ? void 0 : call.id)) { + emitNet("chat:addMessage", source2, { + args: [ + prependSnailyCAD("That call could not be found. Please try a different case-number.") + ] + }); + return; + } + emit("sna-sync:on-call-911-attach" /* OnCall911Attach */, source2, "assign", data.unit.id, call.id); + return; + } + const { data: callData } = await cadRequest({ + method: "GET", + path: "/911-calls", + headers: { userApiToken } + }); + emitNet( + "sna-sync:request-call-911-attach-flow" /* RequestCall911AttachFlow */, + source2, + data.unit.id, + source2, + (callData == null ? void 0 : callData.calls) ?? [], + userApiToken + ); + }, + false +); +onNet( + "sna-sync:on-call-911-attach" /* OnCall911Attach */, + async (source2, type, unitId, callId) => { + const { data: updatedCall } = await cadRequest({ + method: "POST", + path: `/911-calls/${type}/${callId}`, + data: { + unit: unitId + }, + headers: { userApiToken: getPlayerApiToken(source2) } + }); + if (!(updatedCall == null ? void 0 : updatedCall.id)) { + emitNet("chat:addMessage", source2, { + args: [prependSnailyCAD("An error occurred while attaching you to the call.")] + }); + return; + } + if (type === "assign") { + emitNet("chat:addMessage", source2, { + args: [ + prependSnailyCAD( + `Successfully attached yourself to a call with case number: #${updatedCall.caseNumber}.` + ) + ] + }); + } else { + emitNet("chat:addMessage", source2, { + args: [ + prependSnailyCAD( + `Successfully removed yourself from a call with case number: #${updatedCall.caseNumber}.` + ) + ] + }); + } + } +); + +// src/utils/postal/postals.json +var postals_default = [ + { + x: 2325.4345703125, + y: 5147.21484375, + code: "2000" + }, + { + x: 2151.2138671875, + y: 5166.0888671875, + code: "2001" + }, + { + x: 2059.6528320313, + y: 5105.8408203125, + code: "2002" + }, + { + x: 1932.6868896484, + y: 5103.4384765625, + code: "2003" + }, + { + x: 1874.1627197266, + y: 5058.5385742188, + code: "2004" + }, + { + x: 1790.8677978516, + y: 4980.5830078125, + code: "2005" + }, + { + x: 1722.9151611328, + y: 4922.7026367188, + code: "2006" + }, + { + x: 1618.3675537109, + y: 4869.5747070313, + code: "2007" + }, + { + x: 1720.4150390625, + y: 4869.5498046875, + code: "2008" + }, + { + x: 1626.4921875, + y: 4812.8330078125, + code: "2009" + }, + { + x: 1724.9730224609, + y: 4815.1616210938, + code: "2010" + }, + { + x: 1640.4869384766, + y: 4758.4838867188, + code: "2011" + }, + { + x: 1740.1538085938, + y: 4759.6303710938, + code: "2012" + }, + { + x: 1647.4232177734, + y: 4705.2939453125, + code: "2013" + }, + { + x: 1749.4649658203, + y: 4707.6118164063, + code: "2014" + }, + { + x: 1652.0007324219, + y: 4648.5717773438, + code: "2015" + }, + { + x: 1751.7038574219, + y: 4654.4521484375, + code: "2016" + }, + { + x: 1798.2783203125, + y: 4607.2275390625, + code: "2017" + }, + { + x: 1880.2452392578, + y: 4613.1025390625, + code: "2018" + }, + { + x: 1956.2924804688, + y: 4631.9892578125, + code: "2019" + }, + { + x: 2006.3699951172, + y: 4681.5327148438, + code: "2020" + }, + { + x: 1945.4973144531, + y: 4801.9169921875, + code: "2021" + }, + { + x: 1905.84765625, + y: 4860.9282226563, + code: "2022" + }, + { + x: 1850.8508300781, + y: 4918.7465820313, + code: "2023" + }, + { + x: 1964.7199707031, + y: 4997.796875, + code: "2024" + }, + { + x: 2037.2509765625, + y: 4908.0278320313, + code: "2025" + }, + { + x: 2195.98046875, + y: 5039.0419921875, + code: "2026" + }, + { + x: 2399.5415039063, + y: 4988.2368164063, + code: "2027" + }, + { + x: 2263.0915527344, + y: 4912.6440429688, + code: "2028" + }, + { + x: 2141.9887695313, + y: 4841.7666015625, + code: "2029" + }, + { + x: 2071.6528320313, + y: 4763.8330078125, + code: "2030" + }, + { + x: 2242.1860351563, + y: 4777.966796875, + code: "2031" + }, + { + x: 2328.8666992188, + y: 4865.3110351563, + code: "2032" + }, + { + x: 2337.6499023438, + y: 4748.4252929688, + code: "2033" + }, + { + x: 2417.2333984375, + y: 4790.8999023438, + code: "2034" + }, + { + x: 2421.2778320313, + y: 4689.322265625, + code: "2035" + }, + { + x: 2484.35546875, + y: 4735.341796875, + code: "2036" + }, + { + x: 2510.8581542969, + y: 4840.3696289063, + code: "2037" + }, + { + x: 2609.3720703125, + y: 4881.6694335938, + code: "2038" + }, + { + x: 2635.8583984375, + y: 4718.7333984375, + code: "2039" + }, + { + x: 2571.4553222656, + y: 4651.408203125, + code: "2040" + }, + { + x: 2509.4165039063, + y: 4591.1923828125, + code: "2041" + }, + { + x: 2552.4360351563, + y: 4526.2192382813, + code: "2042" + }, + { + x: 2643.8388671875, + y: 4604.1171875, + code: "2043" + }, + { + x: 2662.0444335938, + y: 4487.2250976563, + code: "2044" + }, + { + x: 2596.4248046875, + y: 4426.9912109375, + code: "2045" + }, + { + x: 2526.1025390625, + y: 4358.4770507813, + code: "2046" + }, + { + x: 2516.0109863281, + y: 4252.19921875, + code: "2047" + }, + { + x: 2432.7163085938, + y: 4130.552734375, + code: "2048" + }, + { + x: 2688.2358398438, + y: 4275.7583007813, + code: "2049" + }, + { + x: 2879.9858398438, + y: 4385.541015625, + code: "2050" + }, + { + x: 2928.888671875, + y: 4517.7216796875, + code: "2051" + }, + { + x: 2876.2612304688, + y: 4626.3110351563, + code: "2052" + }, + { + x: 2811.85546875, + y: 4745.5366210938, + code: "2053" + }, + { + x: 2774.6083984375, + y: 4863.5556640625, + code: "2054" + }, + { + x: 2731.4553222656, + y: 5025.2856445313, + code: "2055" + }, + { + x: 3051.9165039063, + y: 5011.0834960938, + code: "2056" + }, + { + x: 3318.0610351563, + y: 5191.6752929688, + code: "2057" + }, + { + x: 3392.9614257813, + y: 5463.1772460938, + code: "2058" + }, + { + x: 3751.1640625, + y: 4490.3896484375, + code: "2059" + }, + { + x: 3523.6528320313, + y: 3685.2565917969, + code: "2060" + }, + { + x: 1698.5841064453, + y: 3599.630859375, + code: "3000" + }, + { + x: 1664.0155029297, + y: 3657.4467773438, + code: "3001" + }, + { + x: 1763.7017822266, + y: 3637.3305664063, + code: "3002" + }, + { + x: 1732.3602294922, + y: 3697.5083007813, + code: "3003" + }, + { + x: 1845.0377197266, + y: 3686.875, + code: "3004" + }, + { + x: 1804.2158203125, + y: 3741.1557617188, + code: "3005" + }, + { + x: 1909.8052978516, + y: 3723.4416503906, + code: "3006" + }, + { + x: 1874.7437744141, + y: 3775.328125, + code: "3007" + }, + { + x: 1980.3048095703, + y: 3761.1333007813, + code: "3008" + }, + { + x: 1947.779296875, + y: 3821.3081054688, + code: "3009" + }, + { + x: 2068.7026367188, + y: 3803.5920410156, + code: "3010" + }, + { + x: 2032.6301269531, + y: 3863.7858886719, + code: "3011" + }, + { + x: 1915.0797119141, + y: 3900.3471679688, + code: "3012" + }, + { + x: 1811.0383300781, + y: 3910.880859375, + code: "3013" + }, + { + x: 1837.5073242188, + y: 3849.4609375, + code: "3014" + }, + { + x: 1729.4243164063, + y: 3867.1586914063, + code: "3015" + }, + { + x: 1764.1710205078, + y: 3803.3999023438, + code: "3016" + }, + { + x: 1632.4604492188, + y: 3877.7250976563, + code: "3017" + }, + { + x: 1695.5550537109, + y: 3753.7414550781, + code: "3018" + }, + { + x: 1659.4842529297, + y: 3815.0869140625, + code: "3019" + }, + { + x: 1635.1939697266, + y: 3720.60546875, + code: "3020" + }, + { + x: 1586.1025390625, + y: 3754.8356933594, + code: "3021" + }, + { + x: 1550.0340576172, + y: 3805.5637207031, + code: "3022" + }, + { + x: 1532.8271484375, + y: 3702.8420410156, + code: "3023" + }, + { + x: 1500.2799072266, + y: 3660.2998046875, + code: "3024" + }, + { + x: 1406.3410644531, + y: 3649.625, + code: "3025" + }, + { + x: 1370.5953369141, + y: 3610.6567382813, + code: "3026" + }, + { + x: 1155.3911132813, + y: 3585.2182617188, + code: "3027" + }, + { + x: 1002.1698608398, + y: 3586.970703125, + code: "3028" + }, + { + x: 890.87438964844, + y: 3664.8664550781, + code: "3029" + }, + { + x: 868.12127685547, + y: 3584.5717773438, + code: "3030" + }, + { + x: 464.05184936523, + y: 3546.1821289063, + code: "3031" + }, + { + x: 354.55065917969, + y: 3571.5322265625, + code: "3032" + }, + { + x: 12.16725730896, + y: 3624.5874023438, + code: "3033" + }, + { + x: 106.29637908936, + y: 3715.4526367188, + code: "3034" + }, + { + x: 1512.6649169922, + y: 3571.7692871094, + code: "3035" + }, + { + x: 1619.1922607422, + y: 3549.9096679688, + code: "3036" + }, + { + x: 1772.3302001953, + y: 3271.2485351563, + code: "3037" + }, + { + x: 1898.9097900391, + y: 3274.7416992188, + code: "3038" + }, + { + x: 1971.7969970703, + y: 3237.5124511719, + code: "3039" + }, + { + x: 1982.0775146484, + y: 3340.2080078125, + code: "3040" + }, + { + x: 2054.947265625, + y: 3439.3666992188, + code: "3041" + }, + { + x: 2165.5749511719, + y: 3509.5932617188, + code: "3042" + }, + { + x: 2194.1762695313, + y: 3343.0915527344, + code: "3043" + }, + { + x: 2117.1166992188, + y: 3171.2788085938, + code: "3044" + }, + { + x: 1994.0245361328, + y: 3027.2221679688, + code: "3045" + }, + { + x: 2019.6750488281, + y: 2948.1025390625, + code: "3046" + }, + { + x: 2127.9638671875, + y: 2936.8850097656, + code: "3047" + }, + { + x: 2385.0139160156, + y: 3089.1416015625, + code: "3048" + }, + { + x: 2466.7514648438, + y: 3296.2875976563, + code: "3049" + }, + { + x: 2578.60546875, + y: 3170.5209960938, + code: "3050" + }, + { + x: 2649.7263183594, + y: 3283.2431640625, + code: "3051" + }, + { + x: 2715.1831054688, + y: 3490.3386230469, + code: "3052" + }, + { + x: 2620.7888183594, + y: 2748.8625488281, + code: "3053" + }, + { + x: 2892.5708007813, + y: 2871.037109375, + code: "3054" + }, + { + x: 3092.947265625, + y: 2850.3403320313, + code: "3055" + }, + { + x: 2529.4777832031, + y: 2624.2233886719, + code: "3056" + }, + { + x: 2347.9375, + y: 2562.8107910156, + code: "3057" + }, + { + x: 2090.8237304688, + y: 2307.1806640625, + code: "3058" + }, + { + x: 2435.2250976563, + y: 2136.5595703125, + code: "3059" + }, + { + x: 2129.7290039063, + y: 1824.2932128906, + code: "3060" + }, + { + x: 2498.9165039063, + y: 1638.3122558594, + code: "3061" + }, + { + x: 2748.8806152344, + y: 1728.0220947266, + code: "3062" + }, + { + x: 2743.240234375, + y: 1360.8472900391, + code: "3063" + }, + { + x: 2411.7565917969, + y: 1215.591796875, + code: "3064" + }, + { + x: 1698.2772216797, + y: 2577.6418457031, + code: "4000" + }, + { + x: 1558.7576904297, + y: 2204.5749511719, + code: "4001" + }, + { + x: 1572.5209960938, + y: 1671.529296875, + code: "4002" + }, + { + x: 1232.7921142578, + y: 1878.6875, + code: "4003" + }, + { + x: 1115.5771484375, + y: 2102.9555664063, + code: "4004" + }, + { + x: 1126.4464111328, + y: 2505.4987792969, + code: "4005" + }, + { + x: 738.87951660156, + y: 2552.6716308594, + code: "4006" + }, + { + x: 851.88513183594, + y: 2287.615234375, + code: "4007" + }, + { + x: 979.0517578125, + y: 2060.93359375, + code: "4008" + }, + { + x: 850.06805419922, + y: 2171.275390625, + code: "4009" + }, + { + x: 248.26159667969, + y: 2579.158203125, + code: "4010" + }, + { + x: 72.049034118652, + y: 2791.0595703125, + code: "4011" + }, + { + x: -24.513399124146, + y: 2883.7233886719, + code: "4012" + }, + { + x: 171.71435546875, + y: 3051.9291992188, + code: "4013" + }, + { + x: 199.73529052734, + y: 2784.50390625, + code: "4014" + }, + { + x: 359.95733642578, + y: 2622.1733398438, + code: "4015" + }, + { + x: 393.29782104492, + y: 2578.4697265625, + code: "4016" + }, + { + x: 481.49340820313, + y: 2645.1513671875, + code: "4017" + }, + { + x: 481.83526611328, + y: 2596.1435546875, + code: "4018" + }, + { + x: 567.63238525391, + y: 2659.2497558594, + code: "4019" + }, + { + x: 596.22540283203, + y: 2766.0400390625, + code: "4020" + }, + { + x: 932.36022949219, + y: 2656.7985839844, + code: "4021" + }, + { + x: 976.32257080078, + y: 2712.8264160156, + code: "4022" + }, + { + x: 1035.6104736328, + y: 2652.38671875, + code: "4023" + }, + { + x: 1202.3509521484, + y: 2708.0361328125, + code: "4024" + }, + { + x: 1135.3509521484, + y: 2647.7917480469, + code: "4025" + }, + { + x: -432.455078125, + y: 2847.0344238281, + code: "5000" + }, + { + x: -111.16876983643, + y: 1904.4890136719, + code: "5001" + }, + { + x: -827.80084228516, + y: 1729.7996826172, + code: "5002" + }, + { + x: -1298.4808349609, + y: 2482.5209960938, + code: "5004" + }, + { + x: -1612.5933837891, + y: 2825.9462890625, + code: "5005" + }, + { + x: -2401.2626953125, + y: 3522.0424804688, + code: "5006" + }, + { + x: -1695.5712890625, + y: 2431.4914550781, + code: "5007" + }, + { + x: -1763.189453125, + y: 2228.3947753906, + code: "5008" + }, + { + x: -1912.8382568359, + y: 1929.0791015625, + code: "5009" + }, + { + x: -2059.5356445313, + y: 2296.7932128906, + code: "5010" + }, + { + x: -2556.2705078125, + y: 2323.9028320313, + code: "5011" + }, + { + x: -2583.1748046875, + y: 1905.3527832031, + code: "5012" + }, + { + x: -2798.3693847656, + y: 1436.0512695313, + code: "5013" + }, + { + x: -2614.8747558594, + y: 1119.2763671875, + code: "5014" + }, + { + x: -2127.6206054688, + y: 965.19665527344, + code: "5015" + }, + { + x: -1789.1284179688, + y: 830.56616210938, + code: "5016" + }, + { + x: -1497.2863769531, + y: 1452.0844726563, + code: "5017" + }, + { + x: -1544.8598632813, + y: 973.00732421875, + code: "5018" + }, + { + x: -794.03955078125, + y: 1043.3806152344, + code: "5019" + }, + { + x: -423.65374755859, + y: 1130.7108154297, + code: "5020" + }, + { + x: -190.8380279541, + y: 1450.0402832031, + code: "5021" + }, + { + x: 139.99778747559, + y: 1421.6665039063, + code: "5022" + }, + { + x: 808.36334228516, + y: 1729.169921875, + code: "5023" + }, + { + x: 1420.1495361328, + y: 1236.8513183594, + code: "5024" + }, + { + x: 767.54479980469, + y: 1282.3012695313, + code: "5025" + }, + { + x: 145.04937744141, + y: 1134.1402587891, + code: "5026" + }, + { + x: -3209.5334472656, + y: 1289.7377929688, + code: "5027" + }, + { + x: -3219.8818359375, + y: 1252.5125732422, + code: "5028" + }, + { + x: -3219.6066894531, + y: 1214.1319580078, + code: "5029" + }, + { + x: -3225.259765625, + y: 1180.4542236328, + code: "5030" + }, + { + x: -3231.5, + y: 1150.9360351563, + code: "5031" + }, + { + x: -3258.41015625, + y: 1107.2193603516, + code: "5032" + }, + { + x: -3159.5808105469, + y: 1115.4633789063, + code: "5033" + }, + { + x: -3181.7373046875, + y: 1054.6513671875, + code: "5034" + }, + { + x: -3265.2766113281, + y: 1080.0319824219, + code: "5035" + }, + { + x: -3268.5485839844, + y: 1050.4859619141, + code: "5036" + }, + { + x: -3267.6665039063, + y: 1017.9842529297, + code: "5037" + }, + { + x: -3271.5385742188, + y: 986.66461181641, + code: "5038" + }, + { + x: -3427.08984375, + y: 965.98327636719, + code: "5039" + }, + { + x: -3252.6755371094, + y: 912.82080078125, + code: "5040" + }, + { + x: -3049.3513183594, + y: 800.64678955078, + code: "5041" + }, + { + x: -3139.1105957031, + y: 751.76202392578, + code: "5042" + }, + { + x: -3140.0373535156, + y: 714.55914306641, + code: "5043" + }, + { + x: -3124.9997558594, + y: 679.12921142578, + code: "5044" + }, + { + x: -3104.8137207031, + y: 648.91979980469, + code: "5045" + }, + { + x: -3082.5166015625, + y: 621.79669189453, + code: "5046" + }, + { + x: -3072.2216796875, + y: 595.18688964844, + code: "5047" + }, + { + x: -3063.6931152344, + y: 564.455078125, + code: "5048" + }, + { + x: -3062.8161621094, + y: 537.88696289063, + code: "5049" + }, + { + x: -3059.60546875, + y: 510.1064453125, + code: "5050" + }, + { + x: -3068.2106933594, + y: 481.17578125, + code: "5051" + }, + { + x: -3082.7136230469, + y: 451.04525756836, + code: "5052" + }, + { + x: -3100.7553710938, + y: 401.41351318359, + code: "5053" + }, + { + x: -3115.8542480469, + y: 368.93173217773, + code: "5054" + }, + { + x: -3122.6906738281, + y: 340.56274414063, + code: "5055" + }, + { + x: -3133.6220703125, + y: 310.44152832031, + code: "5056" + }, + { + x: -3140.4401855469, + y: 279.70132446289, + code: "5057" + }, + { + x: -3137.7958984375, + y: 247.23010253906, + code: "5058" + }, + { + x: -3117.4375, + y: 215.91195678711, + code: "5059" + }, + { + x: -3084.1052246094, + y: 157.45587158203, + code: "5060" + }, + { + x: -3067.9194335938, + y: 109.04676818848, + code: "5061" + }, + { + x: -3029.8791503906, + y: 68.267807006836, + code: "5062" + }, + { + x: -2972.9401855469, + y: 34.603740692139, + code: "5063" + }, + { + x: -2881.1638183594, + y: 12.759202003479, + code: "5064" + }, + { + x: -2947.6696777344, + y: 371.97171020508, + code: "5065" + }, + { + x: -3033.5871582031, + y: 384.34530639648, + code: "5066" + }, + { + x: -2946.5361328125, + y: 401.41748046875, + code: "5067" + }, + { + x: -2941.5354003906, + y: 428.54724121094, + code: "5068" + }, + { + x: -2938.8955078125, + y: 459.24383544922, + code: "5069" + }, + { + x: -2940.3774414063, + y: 486.94250488281, + code: "5070" + }, + { + x: -2199.2092285156, + y: -389.80383300781, + code: "7000" + }, + { + x: -2116.3181152344, + y: -332.00323486328, + code: "7001" + }, + { + x: -2116.6474609375, + y: -431.80743408203, + code: "7002" + }, + { + x: -2082.7109375, + y: -254.1768951416, + code: "7003" + }, + { + x: -2048.8107910156, + y: -473.78384399414, + code: "7004" + }, + { + x: -2019.6340332031, + y: -223.5227355957, + code: "7005" + }, + { + x: -2018.7672119141, + y: -498.02963256836, + code: "7006" + }, + { + x: -1963.6116943359, + y: -266.07138061523, + code: "7007" + }, + { + x: -1984.607421875, + y: -523.46142578125, + code: "7008" + }, + { + x: -2009.7395019531, + y: -342.28518676758, + code: "7009" + }, + { + x: -1958.1031494141, + y: -548.30725097656, + code: "7010" + }, + { + x: -1884.072265625, + y: -328.76721191406, + code: "7011" + }, + { + x: -1932.2103271484, + y: -571.99481201172, + code: "7012" + }, + { + x: -1950.8552246094, + y: -386.65811157227, + code: "7013" + }, + { + x: -1903.9252929688, + y: -598.01983642578, + code: "7014" + }, + { + x: -1825.1501464844, + y: -371.97402954102, + code: "7015" + }, + { + x: -1871.4891357422, + y: -619.91717529297, + code: "7016" + }, + { + x: -1888.3256835938, + y: -430.47146606445, + code: "7017" + }, + { + x: -1852.6398925781, + y: -650.08361816406, + code: "7018" + }, + { + x: -1792.1490478516, + y: -422.84359741211, + code: "7019" + }, + { + x: -1821.3714599609, + y: -674.30865478516, + code: "7020" + }, + { + x: -1824.0679931641, + y: -477.79266357422, + code: "7021" + }, + { + x: -1781.3073730469, + y: -705.05755615234, + code: "7022" + }, + { + x: -1713.1843261719, + y: -476.66754150391, + code: "7023" + }, + { + x: -1648.576171875, + y: -516.84448242188, + code: "7024" + }, + { + x: -1686.0948486328, + y: -437.1676940918, + code: "7025" + }, + { + x: -1597.8563232422, + y: -444.87408447266, + code: "7026" + }, + { + x: -1648.9616699219, + y: -395.31716918945, + code: "7027" + }, + { + x: -1566.0848388672, + y: -403.62777709961, + code: "7028" + }, + { + x: -1611.2490234375, + y: -351.30529785156, + code: "7029" + }, + { + x: -1507.6091308594, + y: -331.92144775391, + code: "7030" + }, + { + x: -1563.4343261719, + y: -273.51312255859, + code: "7031" + }, + { + x: -1489.373046875, + y: -190.91166687012, + code: "7032" + }, + { + x: -1549.9063720703, + y: -102.99909973145, + code: "7033" + }, + { + x: -1484.7360839844, + y: -53.421825408936, + code: "7034" + }, + { + x: -1593.6586914063, + y: -46.95739364624, + code: "7035" + }, + { + x: -1485.3869628906, + y: 23.832782745361, + code: "7036" + }, + { + x: -1562.4373779297, + y: 13.172778129578, + code: "7037" + }, + { + x: -1654.2404785156, + y: 26.725975036621, + code: "7038" + }, + { + x: -1699.4086914063, + y: 65.067581176758, + code: "7039" + }, + { + x: -1622.4224853516, + y: 103.41746520996, + code: "7040" + }, + { + x: -1564.8999023438, + y: 80.378746032715, + code: "7041" + }, + { + x: -1493.7747802734, + y: 74.446685791016, + code: "7042" + }, + { + x: -1554.8959960938, + y: 137.55923461914, + code: "7043" + }, + { + x: -1487.9063720703, + y: 120.43137359619, + code: "7044" + }, + { + x: -1481.1636962891, + y: 165.26069641113, + code: "7045" + }, + { + x: -1447.2622070313, + y: 207.74937438965, + code: "7046" + }, + { + x: -1396.8343505859, + y: 272.08969116211, + code: "7047" + }, + { + x: -1311.5577392578, + y: 252.57038879395, + code: "7048" + }, + { + x: -1362.6612548828, + y: 327.51477050781, + code: "7049" + }, + { + x: -1314.5948486328, + y: 360.55511474609, + code: "7050" + }, + { + x: -1288.3446044922, + y: 314.5029296875, + code: "7051" + }, + { + x: -1243.1960449219, + y: 368.21478271484, + code: "7052" + }, + { + x: -1217.525390625, + y: 267.8522644043, + code: "7053" + }, + { + x: -1211.3543701172, + y: 321.56488037109, + code: "7054" + }, + { + x: -1133.1903076172, + y: 359.32727050781, + code: "7055" + }, + { + x: -1117.5603027344, + y: 299.68145751953, + code: "7056" + }, + { + x: -1037.6297607422, + y: 225.86000061035, + code: "7057" + }, + { + x: -1029.6843261719, + y: 157.37721252441, + code: "7058" + }, + { + x: -996.35229492188, + y: 110.71755218506, + code: "7059" + }, + { + x: -916.42034912109, + y: 103.61616516113, + code: "7060" + }, + { + x: -920.28967285156, + y: 154.36337280273, + code: "7061" + }, + { + x: -927.09112548828, + y: 199.21054077148, + code: "7062" + }, + { + x: -807.57794189453, + y: 164.95886230469, + code: "7063" + }, + { + x: -823.84216308594, + y: 107.6879196167, + code: "7064" + }, + { + x: -701.96051025391, + y: 190.87864685059, + code: "7065" + }, + { + x: -701.70788574219, + y: 145.39820861816, + code: "7066" + }, + { + x: -599.33984375, + y: 212.64114379883, + code: "7067" + }, + { + x: -600.82861328125, + y: 156.52317810059, + code: "7068" + }, + { + x: -493.72451782227, + y: 211.39082336426, + code: "7069" + }, + { + x: -498.17999267578, + y: 158.81488037109, + code: "7070" + }, + { + x: -418.12149047852, + y: 206.01795959473, + code: "7071" + }, + { + x: -419.13818359375, + y: 154.64540100098, + code: "7072" + }, + { + x: -339.17007446289, + y: 208.31494140625, + code: "7073" + }, + { + x: -342.44937133789, + y: 150.45230102539, + code: "7074" + }, + { + x: -267.19244384766, + y: 216.56059265137, + code: "7075" + }, + { + x: -269.85913085938, + y: 156.34120178223, + code: "7076" + }, + { + x: -164.54524230957, + y: 220.63507080078, + code: "7077" + }, + { + x: -170.33535766602, + y: 156.90377807617, + code: "7078" + }, + { + x: -51.261993408203, + y: 224.14115905762, + code: "7079" + }, + { + x: -59.861751556396, + y: 156.80795288086, + code: "7080" + }, + { + x: -71.413513183594, + y: 97.181373596191, + code: "7081" + }, + { + x: 3.8074636459351, + y: 47.566139221191, + code: "7082" + }, + { + x: 24.751974105835, + y: 99.49405670166, + code: "7083" + }, + { + x: 41.28279876709, + y: 148.3278503418, + code: "7084" + }, + { + x: 57.770198822021, + y: 197.98307800293, + code: "7085" + }, + { + x: 86.936210632324, + y: 272.8330078125, + code: "7086" + }, + { + x: 185.22845458984, + y: 388.5940246582, + code: "7087" + }, + { + x: 151.84634399414, + y: 320.07727050781, + code: "7088" + }, + { + x: 166.25904846191, + y: 251.57748413086, + code: "7089" + }, + { + x: 265.88671875, + y: 213.06823730469, + code: "7090" + }, + { + x: 293.73529052734, + y: 289.29541015625, + code: "7091" + }, + { + x: 310.46026611328, + y: 358.32046508789, + code: "7092" + }, + { + x: 379.85479736328, + y: 336.45932006836, + code: "7093" + }, + { + x: 363.01657104492, + y: 267.38198852539, + code: "7094" + }, + { + x: 339.67346191406, + y: 191.19873046875, + code: "7095" + }, + { + x: 422.00445556641, + y: 153.41694641113, + code: "7096" + }, + { + x: 449.39508056641, + y: 237.2190246582, + code: "7097" + }, + { + x: 517.52410888672, + y: 218.90100097656, + code: "7098" + }, + { + x: 487.09075927734, + y: 133.30479431152, + code: "7099" + }, + { + x: 579.41821289063, + y: 96.697784423828, + code: "7100" + }, + { + x: 607.43518066406, + y: 184.6509552002, + code: "7101" + }, + { + x: 709.21997070313, + y: 156.31629943848, + code: "7102" + }, + { + x: 678.79772949219, + y: 76.612144470215, + code: "7103" + }, + { + x: 587.54901123047, + y: -7.8100380897522, + code: "7104" + }, + { + x: 502.20208740234, + y: -47.399017333984, + code: "7105" + }, + { + x: 470.02700805664, + y: -118.2336807251, + code: "7106" + }, + { + x: 441.36865234375, + y: -190.85466003418, + code: "7107" + }, + { + x: 426.8782043457, + y: -250.52320861816, + code: "7108" + }, + { + x: 331.12322998047, + y: -223.47969055176, + code: "7109" + }, + { + x: 356.57424926758, + y: -160.24067687988, + code: "7110" + }, + { + x: 386.94644165039, + y: -76.430992126465, + code: "7111" + }, + { + x: 422.60900878906, + y: -16.83233833313, + code: "7112" + }, + { + x: 451.68350219727, + y: 54.277870178223, + code: "7113" + }, + { + x: 391.29364013672, + y: 71.067588806152, + code: "7114" + }, + { + x: 361.43807983398, + y: 5.528687953949, + code: "7115" + }, + { + x: 337.4909362793, + y: -54.708728790283, + code: "7116" + }, + { + x: 304.0458984375, + y: -145.77757263184, + code: "7117" + }, + { + x: 283.68252563477, + y: -198.23512268066, + code: "7118" + }, + { + x: 202.48402404785, + y: -174.63926696777, + code: "7119" + }, + { + x: 223.40191650391, + y: -113.85186767578, + code: "7120" + }, + { + x: 250.84468078613, + y: -39.525653839111, + code: "7121" + }, + { + x: 275.28668212891, + y: 33.049011230469, + code: "7122" + }, + { + x: 297.97344970703, + y: 101.52397155762, + code: "7123" + }, + { + x: 228.58941650391, + y: 126.29117584229, + code: "7124" + }, + { + x: 201.09918212891, + y: 50.693996429443, + code: "7125" + }, + { + x: 182.45341491699, + y: -9.5587949752808, + code: "7126" + }, + { + x: 147.91889953613, + y: -91.046058654785, + code: "7127" + }, + { + x: 126.35182189941, + y: -145.99638366699, + code: "7128" + }, + { + x: 46.364261627197, + y: -112.9450302124, + code: "7129" + }, + { + x: 67.301887512207, + y: -61.006088256836, + code: "7130" + }, + { + x: 95.328193664551, + y: 20.40322303772, + code: "7131" + }, + { + x: 108.54914855957, + y: 64.059242248535, + code: "7132" + }, + { + x: 127.78938293457, + y: 116.97310638428, + code: "7133" + }, + { + x: 141.61860656738, + y: 167.12309265137, + code: "7134" + }, + { + x: -8.0422210693359, + y: -24.743330001831, + code: "7135" + }, + { + x: -21.934183120728, + y: -90.271217346191, + code: "7136" + }, + { + x: -124.36614227295, + y: -49.571273803711, + code: "7137" + }, + { + x: -106.42967224121, + y: 18.787809371948, + code: "7138" + }, + { + x: -182.25309753418, + y: 59.578884124756, + code: "7139" + }, + { + x: -197.94508361816, + y: -24.859977722168, + code: "7140" + }, + { + x: -290.69509887695, + y: 8.1253080368042, + code: "7141" + }, + { + x: -282.97415161133, + y: 90.788482666016, + code: "7142" + }, + { + x: -354.13092041016, + y: 91.340026855469, + code: "7143" + }, + { + x: -353.85736083984, + y: 35.223419189453, + code: "7144" + }, + { + x: -435.06552124023, + y: 38.151237487793, + code: "7145" + }, + { + x: -434.21737670898, + y: 94.225944519043, + code: "7146" + }, + { + x: -505.97164916992, + y: 95.970291137695, + code: "7147" + }, + { + x: -506.88833618164, + y: 33.970352172852, + code: "7148" + }, + { + x: -605.18395996094, + y: 31.588443756104, + code: "7149" + }, + { + x: -604.90783691406, + y: 93.528701782227, + code: "7150" + }, + { + x: -698.51153564453, + y: 68.708045959473, + code: "7151" + }, + { + x: -691.76470947266, + y: 9.6718225479126, + code: "7152" + }, + { + x: -774.73699951172, + y: -9.2394599914551, + code: "7153" + }, + { + x: -796.29791259766, + y: 52.13858795166, + code: "7154" + }, + { + x: -914.65380859375, + y: 39.113334655762, + code: "7155" + }, + { + x: -865.41485595703, + y: -48.261569976807, + code: "7156" + }, + { + x: -1132.5535888672, + y: -204.72421264648, + code: "7157" + }, + { + x: -1226.751953125, + y: -143.95236206055, + code: "7158" + }, + { + x: -1293.2147216797, + y: -117.44091796875, + code: "7159" + }, + { + x: -1364.3817138672, + y: 51.36882019043, + code: "7160" + }, + { + x: -1361.15625, + y: -105.07413482666, + code: "7161" + }, + { + x: -1357.9561767578, + y: -183.01718139648, + code: "7162" + }, + { + x: -1240.8408203125, + y: -194.26989746094, + code: "7163" + }, + { + x: -1204.5501708984, + y: -248.015625, + code: "7164" + }, + { + x: -1278.6323242188, + y: -284.64767456055, + code: "7165" + }, + { + x: -1429.4681396484, + y: -253.36561584473, + code: "7166" + }, + { + x: -1307.0205078125, + y: -241.00469970703, + code: "7167" + }, + { + x: -1375.2297363281, + y: -329.00192260742, + code: "7168" + }, + { + x: -1459.9578857422, + y: -376.86303710938, + code: "7169" + }, + { + x: -1532.3116455078, + y: -437.10891723633, + code: "7170" + }, + { + x: -1588.7243652344, + y: -587.67156982422, + code: "7171" + }, + { + x: -1508.1793212891, + y: -526.90173339844, + code: "7172" + }, + { + x: -1406.3796386719, + y: -456.11715698242, + code: "7173" + }, + { + x: -1324.1636962891, + y: -406.97958374023, + code: "7174" + }, + { + x: -1237.5474853516, + y: -361.89862060547, + code: "7175" + }, + { + x: -1162.9831542969, + y: -321.61190795898, + code: "7176" + }, + { + x: -1085.3809814453, + y: -308.07412719727, + code: "7177" + }, + { + x: -1074.4820556641, + y: -249.66285705566, + code: "7178" + }, + { + x: -934.90258789063, + y: -178.86724853516, + code: "7179" + }, + { + x: -831.94970703125, + y: -125.18535614014, + code: "7180" + }, + { + x: -743.11566162109, + y: -75.616943359375, + code: "7181" + }, + { + x: -627.16333007813, + y: -31.379716873169, + code: "7182" + }, + { + x: -516.63244628906, + y: -29.634790420532, + code: "7183" + }, + { + x: -438.34127807617, + y: -28.469976425171, + code: "7184" + }, + { + x: -341.84225463867, + y: -60.965557098389, + code: "7185" + }, + { + x: -210.51528930664, + y: -109.40273284912, + code: "7186" + }, + { + x: -140.60443115234, + y: -129.51954650879, + code: "7187" + }, + { + x: -45.913478851318, + y: -164.96725463867, + code: "7188" + }, + { + x: 21.043941497803, + y: -190.9725189209, + code: "7189" + }, + { + x: 108.06352233887, + y: -221.10440063477, + code: "7190" + }, + { + x: 172.09213256836, + y: -242.99082946777, + code: "7191" + }, + { + x: 257.93273925781, + y: -279.00726318359, + code: "7192" + }, + { + x: 304.82440185547, + y: -295.57809448242, + code: "7193" + }, + { + x: 390.09271240234, + y: -323.34320068359, + code: "7194" + }, + { + x: 377.35684204102, + y: -358.76672363281, + code: "7195" + }, + { + x: 294.26147460938, + y: -339.58251953125, + code: "7196" + }, + { + x: 239.05592346191, + y: -321.30206298828, + code: "7197" + }, + { + x: 156.11320495605, + y: -286.52401733398, + code: "7198" + }, + { + x: 89.100494384766, + y: -264.71020507813, + code: "7199" + }, + { + x: 4.9829225540161, + y: -230.5140838623, + code: "7200" + }, + { + x: -51.424247741699, + y: -212.25173950195, + code: "7201" + }, + { + x: -147.44256591797, + y: -180.49078369141, + code: "7202" + }, + { + x: -225.07437133789, + y: -158.06991577148, + code: "7203" + }, + { + x: -347.58557128906, + y: -115.0101776123, + code: "7204" + }, + { + x: -473.03695678711, + y: -66.647735595703, + code: "7205" + }, + { + x: -616.19506835938, + y: -90.261505126953, + code: "7206" + }, + { + x: -711.53289794922, + y: -125.12683105469, + code: "7207" + }, + { + x: -801.57043457031, + y: -168.83096313477, + code: "7208" + }, + { + x: -871.07830810547, + y: -233.84226989746, + code: "7209" + }, + { + x: -985.2216796875, + y: -281.61315917969, + code: "7210" + }, + { + x: -1075.2819824219, + y: -346.12161254883, + code: "7211" + }, + { + x: -1133.4451904297, + y: -373.1533203125, + code: "7212" + }, + { + x: -1221.6993408203, + y: -396.22146606445, + code: "7213" + }, + { + x: -1291.6506347656, + y: -448.19494628906, + code: "7214" + }, + { + x: -1372.2003173828, + y: -499.12393188477, + code: "7215" + }, + { + x: -1442.7905273438, + y: -547.9931640625, + code: "7216" + }, + { + x: -1529.2775878906, + y: -612.9306640625, + code: "7217" + }, + { + x: -1468.208984375, + y: -668.4365234375, + code: "7218" + }, + { + x: -1397.7141113281, + y: -616.50567626953, + code: "7219" + }, + { + x: -1319.4672851563, + y: -570.59692382813, + code: "7220" + }, + { + x: -1236.9929199219, + y: -500.71939086914, + code: "7221" + }, + { + x: -1192.6867675781, + y: -456.6296081543, + code: "7222" + }, + { + x: -1116.26171875, + y: -437.17132568359, + code: "7223" + }, + { + x: -1038.6811523438, + y: -405.91580200195, + code: "7224" + }, + { + x: -950.45629882813, + y: -358.13793945313, + code: "7225" + }, + { + x: -863.43701171875, + y: -337.49066162109, + code: "7226" + }, + { + x: -773.43572998047, + y: -220.03509521484, + code: "7227" + }, + { + x: -683.05572509766, + y: -174.72058105469, + code: "7228" + }, + { + x: -593.42590332031, + y: -132.69073486328, + code: "7229" + }, + { + x: -434.96331787109, + y: -129.74906921387, + code: "7230" + }, + { + x: -333.77029418945, + y: -148.63935852051, + code: "7231" + }, + { + x: -229.61874389648, + y: -210.62959289551, + code: "7232" + }, + { + x: -158.52439880371, + y: -230.71984863281, + code: "7233" + }, + { + x: -85.653625488281, + y: -286.23663330078, + code: "7234" + }, + { + x: -24.609064102173, + y: -305.72967529297, + code: "7235" + }, + { + x: 65.954689025879, + y: -339.39633178711, + code: "7236" + }, + { + x: 128.22149658203, + y: -363.60174560547, + code: "7237" + }, + { + x: 214.67274475098, + y: -389.03237915039, + code: "7238" + }, + { + x: 271.01861572266, + y: -432.14071655273, + code: "7239" + }, + { + x: 200.45906066895, + y: -447.49761962891, + code: "7240" + }, + { + x: 112.20059967041, + y: -415.62548828125, + code: "7241" + }, + { + x: 39.297740936279, + y: -399.71298217773, + code: "7242" + }, + { + x: -50.179836273193, + y: -367.28509521484, + code: "7243" + }, + { + x: -102.442527771, + y: -343.09912109375, + code: "7244" + }, + { + x: -205.45635986328, + y: -308.86437988281, + code: "7245" + }, + { + x: -335.06890869141, + y: -247.51156616211, + code: "7246" + }, + { + x: -407.41165161133, + y: -173.76556396484, + code: "7247" + }, + { + x: -552.95635986328, + y: -198.59223937988, + code: "7248" + }, + { + x: -527.32592773438, + y: -246.41288757324, + code: "7249" + }, + { + x: -609.56915283203, + y: -290.55505371094, + code: "7250" + }, + { + x: -637.74108886719, + y: -238.21565246582, + code: "7251" + }, + { + x: -708.29119873047, + y: -317.93792724609, + code: "7252" + }, + { + x: -772.34887695313, + y: -376.9787902832, + code: "7253" + }, + { + x: -907.90661621094, + y: -380.63442993164, + code: "7254" + }, + { + x: -1033.8917236328, + y: -440.162109375, + code: "7255" + }, + { + x: -1117.4270019531, + y: -482.70053100586, + code: "7256" + }, + { + x: -1196.8448486328, + y: -540.54779052734, + code: "7257" + }, + { + x: -1296.7912597656, + y: -608.94848632813, + code: "7258" + }, + { + x: -1380.4765625, + y: -661.00457763672, + code: "7259" + }, + { + x: -1435.6938476563, + y: -699.41857910156, + code: "7260" + }, + { + x: -1330.3391113281, + y: -708.89611816406, + code: "7261" + }, + { + x: -1252.6789550781, + y: -665.22430419922, + code: "7262" + }, + { + x: -1178.6728515625, + y: -595.59741210938, + code: "7263" + }, + { + x: -1124.1014404297, + y: -556.05163574219, + code: "7264" + }, + { + x: -1063.0361328125, + y: -525.39495849609, + code: "7265" + }, + { + x: -994.33551025391, + y: -492.98516845703, + code: "7266" + }, + { + x: -894.89099121094, + y: -439.87539672852, + code: "7267" + }, + { + x: -790.12915039063, + y: -438.1298828125, + code: "7268" + }, + { + x: -696.00360107422, + y: -413.35885620117, + code: "7269" + }, + { + x: -576.52172851563, + y: -348.46997070313, + code: "7270" + }, + { + x: -575.54638671875, + y: -422.2868347168, + code: "7271" + }, + { + x: -467.97714233398, + y: -427.6130065918, + code: "7272" + }, + { + x: -504.89535522461, + y: -330.84494018555, + code: "7273" + }, + { + x: -447.94088745117, + y: -303.10745239258, + code: "7274" + }, + { + x: -380.36608886719, + y: -360.9977722168, + code: "7275" + }, + { + x: -374.79534912109, + y: -429.47268676758, + code: "7276" + }, + { + x: -291.27841186523, + y: -443.0768737793, + code: "7277" + }, + { + x: -121.00784301758, + y: -415.94769287109, + code: "7278" + }, + { + x: -72.945343017578, + y: -445.46435546875, + code: "7279" + }, + { + x: 51.300407409668, + y: -445.50051879883, + code: "7280" + }, + { + x: 379.78671264648, + y: -442.5491027832, + code: "7281" + }, + { + x: 571.29211425781, + y: -230.64088439941, + code: "7282" + }, + { + x: 573.90319824219, + y: -141.51860046387, + code: "7283" + }, + { + x: 684.57373046875, + y: -62.453575134277, + code: "7284" + }, + { + x: 775.15447998047, + y: 68.541107177734, + code: "7285" + }, + { + x: 751.83099365234, + y: 225.51345825195, + code: "7286" + }, + { + x: 1265.6342773438, + y: 318.17315673828, + code: "7287" + }, + { + x: 1091.7604980469, + y: 237.2815246582, + code: "7288" + }, + { + x: 1031.2438964844, + y: 153.43008422852, + code: "7289" + }, + { + x: 1132.4299316406, + y: 102.0453338623, + code: "7290" + }, + { + x: 990.43524169922, + y: 78.978652954102, + code: "7291" + }, + { + x: 951.14349365234, + y: 15.789879798889, + code: "7292" + }, + { + x: 897.08648681641, + y: -47.410163879395, + code: "7293" + }, + { + x: 802.30731201172, + y: -129.49909973145, + code: "7294" + }, + { + x: 883.87591552734, + y: -179.1529083252, + code: "7295" + }, + { + x: 737.31951904297, + y: -303.07089233398, + code: "7296" + }, + { + x: 858.00885009766, + y: -284.80178833008, + code: "7297" + }, + { + x: 956.86846923828, + y: -228.18383789063, + code: "7298" + }, + { + x: 1004.9545288086, + y: -132.57548522949, + code: "7299" + }, + { + x: 1112.0799560547, + y: -198.71315002441, + code: "7300" + }, + { + x: 1056.8569335938, + y: -283.15243530273, + code: "7301" + }, + { + x: 1159.2609863281, + y: -309.76162719727, + code: "7302" + }, + { + x: 1106.41796875, + y: -339.31286621094, + code: "7303" + }, + { + x: 998.08197021484, + y: -368.86080932617, + code: "7304" + }, + { + x: 1025.4958496094, + y: -396.64190673828, + code: "7305" + }, + { + x: 1032.5069580078, + y: -482.85696411133, + code: "7306" + }, + { + x: 984.22222900391, + y: -421.69152832031, + code: "7307" + }, + { + x: 1004.5624389648, + y: -507.33633422852, + code: "7308" + }, + { + x: 952.30828857422, + y: -451.27035522461, + code: "7309" + }, + { + x: 961.44720458984, + y: -530.39605712891, + code: "7310" + }, + { + x: 919.19305419922, + y: -474.91271972656, + code: "7311" + }, + { + x: 920.62359619141, + y: -553.45599365234, + code: "7312" + }, + { + x: 861.27502441406, + y: -498.60314941406, + code: "7313" + }, + { + x: 837.93188476563, + y: -534.06561279297, + code: "7314" + }, + { + x: 834.6513671875, + y: -571.2861328125, + code: "7315" + }, + { + x: 868.69256591797, + y: -606.81170654297, + code: "7316" + }, + { + x: 910.16247558594, + y: -639.21429443359, + code: "7317" + }, + { + x: 984.22778320313, + y: -609.14489746094, + code: "7318" + }, + { + x: 940.15533447266, + y: -673.52618408203, + code: "7319" + }, + { + x: 962.33331298828, + y: -711.86682128906, + code: "7320" + }, + { + x: 1029.8846435547, + y: -682.97528076172, + code: "7321" + }, + { + x: 988.23333740234, + y: -743.79754638672, + code: "7322" + }, + { + x: 1059.9173583984, + y: -716.05279541016, + code: "7323" + }, + { + x: 1048.3874511719, + y: -790.47393798828, + code: "7324" + }, + { + x: 1112.9832763672, + y: -743.86700439453, + code: "7325" + }, + { + x: 1146.2985839844, + y: -792.89196777344, + code: "7326" + }, + { + x: 1151.85546875, + y: -710.85028076172, + code: "7327" + }, + { + x: 1241.865234375, + y: -712.66967773438, + code: "7328" + }, + { + x: 1302.3513183594, + y: -757.56036376953, + code: "7329" + }, + { + x: 1375.2471923828, + y: -778.2587890625, + code: "7330" + }, + { + x: 1418.5832519531, + y: -719.27124023438, + code: "7331" + }, + { + x: 1348.0096435547, + y: -695.68811035156, + code: "7332" + }, + { + x: 1243.8138427734, + y: -663.23425292969, + code: "7333" + }, + { + x: 1141.3553466797, + y: -664.12512207031, + code: "7334" + }, + { + x: 1133.3791503906, + y: -611.91491699219, + code: "7335" + }, + { + x: 1233.3999023438, + y: -624.34521484375, + code: "7336" + }, + { + x: 1130.3444824219, + y: -556.46697998047, + code: "7337" + }, + { + x: 1226.7858886719, + y: -581.15197753906, + code: "7338" + }, + { + x: 1316.2248535156, + y: -592.51257324219, + code: "7339" + }, + { + x: 1383.7846679688, + y: -620.29193115234, + code: "7340" + }, + { + x: 1404.7026367188, + y: -562.45245361328, + code: "7341" + }, + { + x: 1347.1457519531, + y: -532.98547363281, + code: "7342" + }, + { + x: 1235.8304443359, + y: -493.45098876953, + code: "7343" + }, + { + x: 1131.0235595703, + y: -484.64471435547, + code: "7344" + }, + { + x: 1248.1322021484, + y: -443.09335327148, + code: "7345" + }, + { + x: 1138.6513671875, + y: -445.71017456055, + code: "7346" + }, + { + x: 1264.6722412109, + y: -363.70111083984, + code: "7347" + }, + { + x: 1146.2971191406, + y: -399.16549682617, + code: "7348" + }, + { + x: 1374.98046875, + y: -149.51196289063, + code: "7349" + }, + { + x: 1635.5555419922, + y: -30.312574386597, + code: "7350" + }, + { + x: 2178, + y: 73.750213623047, + code: "7351" + }, + { + x: 1859.2497558594, + y: 335.0166015625, + code: "7352" + }, + { + x: 2424, + y: 570.25042724609, + code: "7353" + }, + { + x: 2565.1499023438, + y: 291.29028320313, + code: "7354" + }, + { + x: 2579.5817871094, + y: 465.62487792969, + code: "7355" + }, + { + x: 2407.4816894531, + y: 631.80883789063, + code: "7356" + }, + { + x: 1532.5715332031, + y: 815.74157714844, + code: "7357" + }, + { + x: 1975.5415039063, + y: 846.99938964844, + code: "7358" + }, + { + x: 2291.591796875, + y: 939.62420654297, + code: "7359" + }, + { + x: 2013.2316894531, + y: 1271.3271484375, + code: "7360" + }, + { + x: -1830.291015625, + y: -1214.4635009766, + code: "8000" + }, + { + x: -1678.4899902344, + y: -1117.2708740234, + code: "8001" + }, + { + x: -1620.734375, + y: -1045.5661621094, + code: "8002" + }, + { + x: -1559.7967529297, + y: -974.66320800781, + code: "8003" + }, + { + x: -1613.6203613281, + y: -830.43530273438, + code: "8004" + }, + { + x: -1484.1507568359, + y: -918.12463378906, + code: "8005" + }, + { + x: -1415.4753417969, + y: -876.10388183594, + code: "8006" + }, + { + x: -1343.1877441406, + y: -793.85461425781, + code: "8007" + }, + { + x: -1273.4790039063, + y: -786.72662353516, + code: "8008" + }, + { + x: -1232.4600830078, + y: -836.15246582031, + code: "8009" + }, + { + x: -1168.3585205078, + y: -793.15966796875, + code: "8010" + }, + { + x: -1199.9035644531, + y: -756.53601074219, + code: "8011" + }, + { + x: -1165.298828125, + y: -727.05938720703, + code: "8012" + }, + { + x: -1131.4459228516, + y: -761.37280273438, + code: "8013" + }, + { + x: -1075.2786865234, + y: -708.79516601563, + code: "8014" + }, + { + x: -1031.8812255859, + y: -672.93310546875, + code: "8015" + }, + { + x: -977.32299804688, + y: -642.66235351563, + code: "8016" + }, + { + x: -920.38171386719, + y: -621.97686767578, + code: "8017" + }, + { + x: -806.84155273438, + y: -609.24731445313, + code: "8018" + }, + { + x: -690.900390625, + y: -616.42333984375, + code: "8019" + }, + { + x: -551.08923339844, + y: -611.66772460938, + code: "8020" + }, + { + x: -314, + y: -598.94732666016, + code: "8021" + }, + { + x: -179.7685546875, + y: -579.82098388672, + code: "8022" + }, + { + x: -200.94201660156, + y: -643.61340332031, + code: "8023" + }, + { + x: -134.41723632813, + y: -615.75347900391, + code: "8024" + }, + { + x: -63.135009765625, + y: -698.6923828125, + code: "8025" + }, + { + x: -40.45458984375, + y: -641.31292724609, + code: "8026" + }, + { + x: -17.804565429688, + y: -581.57183837891, + code: "8027" + }, + { + x: 47.885620117188, + y: -593.5556640625, + code: "8028" + }, + { + x: 25.114074707031, + y: -653.37811279297, + code: "8029" + }, + { + x: 6.3492431640625, + y: -716.36633300781, + code: "8030" + }, + { + x: 87.976623535156, + y: -750.6728515625, + code: "8031" + }, + { + x: 112.23950195313, + y: -680.56030273438, + code: "8032" + }, + { + x: 133.30133056641, + y: -620.82183837891, + code: "8033" + }, + { + x: 188.67425537109, + y: -647.15240478516, + code: "8034" + }, + { + x: 173.08740234375, + y: -702.19592285156, + code: "8035" + }, + { + x: 143.93762207031, + y: -769.15155029297, + code: "8036" + }, + { + x: 246.29974365234, + y: -812.24029541016, + code: "8037" + }, + { + x: 270.53942871094, + y: -742.11029052734, + code: "8038" + }, + { + x: 290.00720214844, + y: -677.58953857422, + code: "8039" + }, + { + x: 326.24517822266, + y: -609.85137939453, + code: "8040" + }, + { + x: 462.87261962891, + y: -636.20239257813, + code: "8041" + }, + { + x: 374.75653076172, + y: -729.50396728516, + code: "8042" + }, + { + x: 358.39038085938, + y: -824.39807128906, + code: "8043" + }, + { + x: 457.5615234375, + y: -716.79925537109, + code: "8044" + }, + { + x: 456.33410644531, + y: -805.27172851563, + code: "8045" + }, + { + x: 456.67822265625, + y: -907.32147216797, + code: "8046" + }, + { + x: 464.20166015625, + y: -993.43060302734, + code: "8047" + }, + { + x: 359.36865234375, + y: -1011.7819824219, + code: "8048" + }, + { + x: 362.11944580078, + y: -927.90307617188, + code: "8049" + }, + { + x: 325.01721191406, + y: -887.50073242188, + code: "8050" + }, + { + x: 292.69952392578, + y: -983.19506835938, + code: "8051" + }, + { + x: 273.89923095703, + y: -1028.6313476563, + code: "8052" + }, + { + x: 171.40972900391, + y: -991.18896484375, + code: "8053" + }, + { + x: 221.99188232422, + y: -881.20806884766, + code: "8054" + }, + { + x: 77.266540527344, + y: -821.47180175781, + code: "8055" + }, + { + x: 68.063781738281, + y: -884.46630859375, + code: "8056" + }, + { + x: 48.502136230469, + y: -940.29296875, + code: "8057" + }, + { + x: -61.113586425781, + y: -900.44781494141, + code: "8058" + }, + { + x: -43.23681640625, + y: -842.26586914063, + code: "8059" + }, + { + x: -26.1337890625, + y: -788.89819335938, + code: "8060" + }, + { + x: -81.564697265625, + y: -764.98870849609, + code: "8061" + }, + { + x: -106.72705078125, + y: -816.0107421875, + code: "8062" + }, + { + x: -129.48596191406, + y: -875.82818603516, + code: "8063" + }, + { + x: -223.96990966797, + y: -843.17120361328, + code: "8064" + }, + { + x: -207.68090820313, + y: -786.60998535156, + code: "8065" + }, + { + x: -187.39575195313, + y: -731.65405273438, + code: "8066" + }, + { + x: -301.76251220703, + y: -694.13153076172, + code: "8067" + }, + { + x: -301.71411132813, + y: -693.98406982422, + code: "8068" + }, + { + x: -324.98895263672, + y: -816.22521972656, + code: "8069" + }, + { + x: -460.11907958984, + y: -819.43811035156, + code: "8070" + }, + { + x: -468.53918457031, + y: -758.87475585938, + code: "8071" + }, + { + x: -494.47418212891, + y: -701.51293945313, + code: "8072" + }, + { + x: -588.96990966797, + y: -696.76776123047, + code: "8073" + }, + { + x: -579.85424804688, + y: -758.00122070313, + code: "8074" + }, + { + x: -549.23425292969, + y: -808.41369628906, + code: "8075" + }, + { + x: -697.12164306641, + y: -813.23229980469, + code: "8076" + }, + { + x: -695.17755126953, + y: -755.06591796875, + code: "8077" + }, + { + x: -693.22772216797, + y: -692.9306640625, + code: "8078" + }, + { + x: -777.00115966797, + y: -688.97875976563, + code: "8079" + }, + { + x: -780.63635253906, + y: -755.92938232422, + code: "8080" + }, + { + x: -778.72772216797, + y: -811.79296875, + code: "8081" + }, + { + x: -820.61395263672, + y: -784.72058105469, + code: "8082" + }, + { + x: -825.85101318359, + y: -725.76879882813, + code: "8083" + }, + { + x: -901.24066162109, + y: -693.91833496094, + code: "8084" + }, + { + x: -901.66876220703, + y: -759.30755615234, + code: "8085" + }, + { + x: -904.50994873047, + y: -811.95483398438, + code: "8086" + }, + { + x: -963.15289306641, + y: -804.82659912109, + code: "8087" + }, + { + x: -966.00994873047, + y: -723.55163574219, + code: "8088" + }, + { + x: -1023.8558959961, + y: -769.82843017578, + code: "8089" + }, + { + x: -1084.8941650391, + y: -830.42523193359, + code: "8090" + }, + { + x: -1111.6213378906, + y: -879.06958007813, + code: "8091" + }, + { + x: -1175.83203125, + y: -916.56103515625, + code: "8092" + }, + { + x: -1234.453125, + y: -950.07574462891, + code: "8093" + }, + { + x: -1329.7668457031, + y: -965.24383544922, + code: "8094" + }, + { + x: -1354.1298828125, + y: -919.81860351563, + code: "8095" + }, + { + x: -1410.3618164063, + y: -987.5986328125, + code: "8096" + }, + { + x: -1504.8696289063, + y: -1076.0716552734, + code: "8097" + }, + { + x: -1435.9759521484, + y: -1114.3579101563, + code: "8098" + }, + { + x: -1421.2749023438, + y: -1197.2924804688, + code: "8099" + }, + { + x: -1339.2521972656, + y: -1182.1665039063, + code: "8100" + }, + { + x: -1338.125, + y: -1134.3774414063, + code: "8101" + }, + { + x: -1359.2917480469, + y: -1065.0572509766, + code: "8102" + }, + { + x: -1313.4952392578, + y: -1006.940246582, + code: "8103" + }, + { + x: -1293.9929199219, + y: -1054.7724609375, + code: "8104" + }, + { + x: -1276.4588623047, + y: -1109.0532226563, + code: "8105" + }, + { + x: -1266.6072998047, + y: -1152.8873291016, + code: "8106" + }, + { + x: -1224.0283203125, + y: -1014.2146606445, + code: "8107" + }, + { + x: -1195.8745117188, + y: -1078.5490722656, + code: "8108" + }, + { + x: -1179.4812011719, + y: -1129.8607177734, + code: "8109" + }, + { + x: -1156.8045654297, + y: -1180.1136474609, + code: "8110" + }, + { + x: -1153.2834472656, + y: -1244.7104492188, + code: "8111" + }, + { + x: -1103.5051269531, + y: -1283.8050537109, + code: "8112" + }, + { + x: -1010.8887939453, + y: -1222.5776367188, + code: "8113" + }, + { + x: -1038.3781738281, + y: -1174.7432861328, + code: "8114" + }, + { + x: -1063.4271240234, + y: -1130.8625488281, + code: "8115" + }, + { + x: -1090.2277832031, + y: -1077.0704345703, + code: "8116" + }, + { + x: -1117.7211914063, + y: -1037.6478271484, + code: "8117" + }, + { + x: -1150.8475341797, + y: -980.26293945313, + code: "8118" + }, + { + x: -1062.0001220703, + y: -934.07153320313, + code: "8119" + }, + { + x: -1028.1959228516, + y: -990.69000244141, + code: "8120" + }, + { + x: -1007.8956298828, + y: -1029.7551269531, + code: "8121" + }, + { + x: -974.84289550781, + y: -1076.8254394531, + code: "8122" + }, + { + x: -954.54565429688, + y: -1117.4990234375, + code: "8123" + }, + { + x: -940.62219238281, + y: -1179.6693115234, + code: "8124" + }, + { + x: -890.05810546875, + y: -1156.5856933594, + code: "8125" + }, + { + x: -829.146484375, + y: -1114.3566894531, + code: "8126" + }, + { + x: -851.08880615234, + y: -1068.1715087891, + code: "8127" + }, + { + x: -884.19775390625, + y: -1023.565612793, + code: "8128" + }, + { + x: -912.38952636719, + y: -975.99487304688, + code: "8129" + }, + { + x: -940.86529541016, + y: -925.58642578125, + code: "8130" + }, + { + x: -977.18560791016, + y: -880.96557617188, + code: "8131" + }, + { + x: -886.755859375, + y: -861.07391357422, + code: "8132" + }, + { + x: -804.32641601563, + y: -868.27331542969, + code: "8133" + }, + { + x: -803.1748046875, + y: -917.71661376953, + code: "8134" + }, + { + x: -806.00982666016, + y: -967.96362304688, + code: "8135" + }, + { + x: -770.52813720703, + y: -1026.1676025391, + code: "8136" + }, + { + x: -750.345703125, + y: -1071.6313476563, + code: "8137" + }, + { + x: -700.55529785156, + y: -1031.0007324219, + code: "8138" + }, + { + x: -718.55364990234, + y: -984.82147216797, + code: "8139" + }, + { + x: -693.51342773438, + y: -933.83929443359, + code: "8140" + }, + { + x: -696.35992431641, + y: -871.6806640625, + code: "8141" + }, + { + x: -586.82690429688, + y: -870.10583496094, + code: "8142" + }, + { + x: -545.82250976563, + y: -894.85827636719, + code: "8143" + }, + { + x: -563.00665283203, + y: -940.42175292969, + code: "8144" + }, + { + x: -472.60583496094, + y: -1056.7182617188, + code: "8145" + }, + { + x: -492.99487304688, + y: -1006.5607299805, + code: "8146" + }, + { + x: -485.44836425781, + y: -946.77185058594, + code: "8147" + }, + { + x: -470.01870727539, + y: -886.9052734375, + code: "8148" + }, + { + x: -327.6982421875, + y: -884.65887451172, + code: "8149" + }, + { + x: -336.88616943359, + y: -946.072265625, + code: "8150" + }, + { + x: -338.91271972656, + y: -1003.4870605469, + code: "8151" + }, + { + x: -334.58642578125, + y: -1068.0604248047, + code: "8152" + }, + { + x: -317.48376464844, + y: -1119.9077148438, + code: "8153" + }, + { + x: -287.63110351563, + y: -1033.0723876953, + code: "8154" + }, + { + x: -272.1279296875, + y: -969.33654785156, + code: "8155" + }, + { + x: -254.23693847656, + y: -907.1806640625, + code: "8156" + }, + { + x: -159.82067871094, + y: -943.06695556641, + code: "8157" + }, + { + x: -180.19482421875, + y: -1006.8634033203, + code: "8158" + }, + { + x: -201.34191894531, + y: -1066.6782226563, + code: "8159" + }, + { + x: -228.0712890625, + y: -1123.2899169922, + code: "8160" + }, + { + x: -138.45300292969, + y: -1123.2999267578, + code: "8161" + }, + { + x: -118.19567871094, + y: -1063.5217285156, + code: "8162" + }, + { + x: -100.28674316406, + y: -1007.7569580078, + code: "8163" + }, + { + x: -89.623161315918, + y: -964.93267822266, + code: "8164" + }, + { + x: -3.1412353515625, + y: -999.86987304688, + code: "8165" + }, + { + x: -20.306701660156, + y: -1061.2722167969, + code: "8166" + }, + { + x: -43.883117675781, + y: -1123.4693603516, + code: "8167" + }, + { + x: 24.226928710938, + y: -1091.6182861328, + code: "8168" + }, + { + x: 50.932918548584, + y: -1026.1612548828, + code: "8169" + }, + { + x: 131.72967529297, + y: -1048.6171875, + code: "8170" + }, + { + x: 109.76110839844, + y: -1108.4281005859, + code: "8171" + }, + { + x: 173.09448242188, + y: -1106.0588378906, + code: "8172" + }, + { + x: 175.8193359375, + y: -1071.8271484375, + code: "8173" + }, + { + x: 268.63513183594, + y: -1071.8500976563, + code: "8174" + }, + { + x: 265.79010009766, + y: -1110.1579589844, + code: "8175" + }, + { + x: 357.78820800781, + y: -1110.9970703125, + code: "8176" + }, + { + x: 356.53411865234, + y: -1071.1478271484, + code: "8177" + }, + { + x: 453.3203125, + y: -1070.3530273438, + code: "8178" + }, + { + x: 453.67822265625, + y: -1111.8461914063, + code: "8179" + }, + { + x: 746.54296875, + y: -1136.5583496094, + code: "8180" + }, + { + x: 749.26934814453, + y: -1074.4306640625, + code: "8181" + }, + { + x: 744.84594726563, + y: -985.97827148438, + code: "8182" + }, + { + x: 739.59899902344, + y: -935.78637695313, + code: "8183" + }, + { + x: 735.94299316406, + y: -887.18041992188, + code: "8184" + }, + { + x: 729.90185546875, + y: -820.24847412109, + code: "8185" + }, + { + x: 731.87231445313, + y: -760.47180175781, + code: "8186" + }, + { + x: 739.40161132813, + y: -709.4892578125, + code: "8187" + }, + { + x: 817.798828125, + y: -746.24493408203, + code: "8188" + }, + { + x: 813.44592285156, + y: -788.44323730469, + code: "8189" + }, + { + x: 813.77825927734, + y: -821.92578125, + code: "8190" + }, + { + x: 816.51934814453, + y: -884.91625976563, + code: "8191" + }, + { + x: 829.63092041016, + y: -937.55480957031, + code: "8192" + }, + { + x: 831.572265625, + y: -986.21954345703, + code: "8193" + }, + { + x: 841.68493652344, + y: -1033.2755126953, + code: "8194" + }, + { + x: 834.65478515625, + y: -1109.8161621094, + code: "8195" + }, + { + x: 904.37091064453, + y: -1130.5729980469, + code: "8196" + }, + { + x: 911.10461425781, + y: -1051.8024902344, + code: "8197" + }, + { + x: 926.62200927734, + y: -969.60461425781, + code: "8198" + }, + { + x: 918.21075439453, + y: -897.119140625, + code: "8199" + }, + { + x: -1406.5347900391, + y: -1268.6197509766, + code: "8200" + }, + { + x: -1362.576171875, + y: -1344.2043457031, + code: "8201" + }, + { + x: -1387.0986328125, + y: -1421.5750732422, + code: "8202" + }, + { + x: -1367.3278808594, + y: -1516.0430908203, + code: "8203" + }, + { + x: -1320.4248046875, + y: -1607.5413818359, + code: "8204" + }, + { + x: -1255.2265625, + y: -1700.8128662109, + code: "8205" + }, + { + x: -1198.8803710938, + y: -1793.5231933594, + code: "8206" + }, + { + x: -1084.0930175781, + y: -1662.5076904297, + code: "8207" + }, + { + x: -1110.9595947266, + y: -1617.0979003906, + code: "8208" + }, + { + x: -1156.7485351563, + y: -1553.349609375, + code: "8209" + }, + { + x: -1192.4637451172, + y: -1499.6339111328, + code: "8210" + }, + { + x: -1238.2485351563, + y: -1430.5867919922, + code: "8211" + }, + { + x: -1275.7347412109, + y: -1366.8492431641, + code: "8212" + }, + { + x: -1289.033203125, + y: -1317.2657470703, + code: "8213" + }, + { + x: -1312.3676757813, + y: -1265.9447021484, + code: "8214" + }, + { + x: -1322.7319335938, + y: -1232.3039550781, + code: "8215" + }, + { + x: -1253.39453125, + y: -1208.1477050781, + code: "8216" + }, + { + x: -1244.6705322266, + y: -1239.3704833984, + code: "8217" + }, + { + x: -1218.5848388672, + y: -1304.3797607422, + code: "8218" + }, + { + x: -1205.9111328125, + y: -1337.4548339844, + code: "8219" + }, + { + x: -1176.1430664063, + y: -1392.3951416016, + code: "8220" + }, + { + x: -1135.0238037109, + y: -1453.1245117188, + code: "8221" + }, + { + x: -1105.3430175781, + y: -1501.0115966797, + code: "8222" + }, + { + x: -1058.4248046875, + y: -1572.4730224609, + code: "8223" + }, + { + x: -1038.6776123047, + y: -1604.9644775391, + code: "8224" + }, + { + x: -964.03210449219, + y: -1584.3395996094, + code: "8225" + }, + { + x: -914.76403808594, + y: -1520.599609375, + code: "8226" + }, + { + x: -1004.2291870117, + y: -1528.86328125, + code: "8227" + }, + { + x: -1028.7485351563, + y: -1495.8439941406, + code: "8228" + }, + { + x: -944.04754638672, + y: -1430.3278808594, + code: "8229" + }, + { + x: -1042.3331298828, + y: -1393.162109375, + code: "8230" + }, + { + x: -1112.3000488281, + y: -1360.1431884766, + code: "8231" + }, + { + x: -983.37646484375, + y: -1289.3161621094, + code: "8232" + }, + { + x: -954.77386474609, + y: -1328.3073730469, + code: "8233" + }, + { + x: -885.44458007813, + y: -1302.3771972656, + code: "8234" + }, + { + x: -891.65002441406, + y: -1248.0938720703, + code: "8235" + }, + { + x: -811.63067626953, + y: -1199.6518554688, + code: "8236" + }, + { + x: -791.92803955078, + y: -1242.7899169922, + code: "8237" + }, + { + x: -802.2822265625, + y: -1308.3205566406, + code: "8238" + }, + { + x: -698.70843505859, + y: -1307.7591552734, + code: "8239" + }, + { + x: -714.98480224609, + y: -1416.4106445313, + code: "8240" + }, + { + x: -754.84582519531, + y: -1469.5748291016, + code: "8241" + }, + { + x: -742.16125488281, + y: -1519.7728271484, + code: "8242" + }, + { + x: -692.91424560547, + y: -1492.0563964844, + code: "8243" + }, + { + x: -686.75427246094, + y: -1440.7452392578, + code: "8244" + }, + { + x: -638.69464111328, + y: -1235.3330078125, + code: "8245" + }, + { + x: -676.18487548828, + y: -1187.5369873047, + code: "8246" + }, + { + x: -697.74755859375, + y: -1155.0841064453, + code: "8247" + }, + { + x: -717.52648925781, + y: -1124.4047851563, + code: "8248" + }, + { + x: -586.21545410156, + y: -986.32403564453, + code: "8249" + }, + { + x: -588.90850830078, + y: -1026.4881591797, + code: "8250" + }, + { + x: -606.36547851563, + y: -1065.4576416016, + code: "8251" + }, + { + x: -623.22509765625, + y: -1110.3604736328, + code: "8252" + }, + { + x: -612.92242431641, + y: -1160.5725097656, + code: "8253" + }, + { + x: -529.42797851563, + y: -1234.3839111328, + code: "8254" + }, + { + x: -554.15460205078, + y: -1292.1862792969, + code: "8255" + }, + { + x: -2262.1477050781, + y: 297.61862182617, + code: "6000" + }, + { + x: -1994.5190429688, + y: 648.20050048828, + code: "6001" + }, + { + x: -1887.9575195313, + y: 641.11657714844, + code: "6002" + }, + { + x: -2014.0268554688, + y: 599.19030761719, + code: "6003" + }, + { + x: -1912.8198242188, + y: 590.29577636719, + code: "6004" + }, + { + x: -2021.7159423828, + y: 547.93298339844, + code: "6005" + }, + { + x: -1927.6529541016, + y: 532.35278320313, + code: "6006" + }, + { + x: -2030.7054443359, + y: 493.98202514648, + code: "6007" + }, + { + x: -1943.0958251953, + y: 472.10983276367, + code: "6008" + }, + { + x: -2031.3487548828, + y: 436.68328857422, + code: "6009" + }, + { + x: -1928.3488769531, + y: 418.35144042969, + code: "6010" + }, + { + x: -2014.828125, + y: 388.83602905273, + code: "6011" + }, + { + x: -1919.5220947266, + y: 366.36947631836, + code: "6012" + }, + { + x: -2003.0770263672, + y: 323.84991455078, + code: "6013" + }, + { + x: -1908.953125, + y: 298.46801757813, + code: "6014" + }, + { + x: -1997.8389892578, + y: 268.93615722656, + code: "6015" + }, + { + x: -1893.6683349609, + y: 249.42088317871, + code: "6016" + }, + { + x: -1978.9973144531, + y: 213.98333740234, + code: "6017" + }, + { + x: -1952.7348632813, + y: 159.64445495605, + code: "6018" + }, + { + x: -1897.5489501953, + y: 112.38739013672, + code: "6019" + }, + { + x: -1869.5643310547, + y: 207.38467407227, + code: "6020" + }, + { + x: -1737.0852050781, + y: 214.4333190918, + code: "6021" + }, + { + x: -1700.2106933594, + y: 159.50413513184, + code: "6022" + }, + { + x: -1660.9986572266, + y: 246.86109924316, + code: "6023" + }, + { + x: -1625.8809814453, + y: 186.05140686035, + code: "6024" + }, + { + x: -1563.6281738281, + y: 213.79307556152, + code: "6025" + }, + { + x: -1849.6419677734, + y: 304.65264892578, + code: "6026" + }, + { + x: -1795.0516357422, + y: 427.42770385742, + code: "6027" + }, + { + x: -1794.806640625, + y: 322.92083740234, + code: "6028" + }, + { + x: -1737.2999267578, + y: 355.95559692383, + code: "6029" + }, + { + x: -1669.1251220703, + y: 365.39450073242, + code: "6030" + }, + { + x: -1569.6906738281, + y: 403.12774658203, + code: "6031" + }, + { + x: -1492.6707763672, + y: 541.81518554688, + code: "6032" + }, + { + x: -1481.1917724609, + y: 427.87646484375, + code: "6033" + }, + { + x: -1470.8723144531, + y: 485.10702514648, + code: "6034" + }, + { + x: -1389.7387695313, + y: 578.95404052734, + code: "6035" + }, + { + x: -1319.8041992188, + y: 649.19311523438, + code: "6036" + }, + { + x: -1313.0637207031, + y: 597.20562744141, + code: "6037" + }, + { + x: -1262.6334228516, + y: 679.24865722656, + code: "6038" + }, + { + x: -1251.7319335938, + y: 618.4013671875, + code: "6039" + }, + { + x: -1191.8388671875, + y: 650.865234375, + code: "6040" + }, + { + x: -1146.6955566406, + y: 714.00988769531, + code: "6041" + }, + { + x: -1123.3859863281, + y: 807.26391601563, + code: "6042" + }, + { + x: -1096.5444335938, + y: 745.27099609375, + code: "6043" + }, + { + x: -1007.7152099609, + y: 762.95837402344, + code: "6044" + }, + { + x: -910.65142822266, + y: 761.17913818359, + code: "6045" + }, + { + x: -846.13549804688, + y: 771.1787109375, + code: "6046" + }, + { + x: -786.77917480469, + y: 790.03894042969, + code: "6047" + }, + { + x: -663.72924804688, + y: 783.50695800781, + code: "6048" + }, + { + x: -613.87359619141, + y: 829.54168701172, + code: "6049" + }, + { + x: -556.94104003906, + y: 807.65979003906, + code: "6050" + }, + { + x: -604.46942138672, + y: 765.74035644531, + code: "6051" + }, + { + x: -657.92224121094, + y: 717.29736328125, + code: "6052" + }, + { + x: -577.37915039063, + y: 705.44445800781, + code: "6053" + }, + { + x: -535.78741455078, + y: 740.81671142578, + code: "6054" + }, + { + x: -514.25689697266, + y: 780.93884277344, + code: "6055" + }, + { + x: -485.08337402344, + y: 686.45562744141, + code: "6056" + }, + { + x: -464.73760986328, + y: 633.91528320313, + code: "6057" + }, + { + x: -350.533203125, + y: 687.02502441406, + code: "6058" + }, + { + x: -401.02182006836, + y: 642.13891601563, + code: "6059" + }, + { + x: -291.67199707031, + y: 648.49810791016, + code: "6060" + }, + { + x: -341.48052978516, + y: 601.91802978516, + code: "6061" + }, + { + x: -239.08898925781, + y: 624.33056640625, + code: "6062" + }, + { + x: -277.17504882813, + y: 579.43884277344, + code: "6063" + }, + { + x: -168.29577636719, + y: 625.44171142578, + code: "6064" + }, + { + x: -204.01466369629, + y: 572.865234375, + code: "6065" + }, + { + x: -123.47906494141, + y: 574.03063964844, + code: "6066" + }, + { + x: -96.05509185791, + y: 814.24304199219, + code: "6067" + }, + { + x: -166.05004882813, + y: 880.9013671875, + code: "6068" + }, + { + x: -203.5856628418, + y: 980.06671142578, + code: "6069" + }, + { + x: -80.529174804688, + y: 1000.1196289063, + code: "6070" + }, + { + x: -44.25, + y: 922.18334960938, + code: "6071" + }, + { + x: 153.15551757813, + y: 735.05572509766, + code: "6072" + }, + { + x: 243.75549316406, + y: 761.61242675781, + code: "6073" + }, + { + x: 375.67501831055, + y: 793.47485351563, + code: "6074" + }, + { + x: 677.57409667969, + y: 638.79724121094, + code: "6075" + }, + { + x: 808.29443359375, + y: 554.34033203125, + code: "6076" + }, + { + x: 656.84167480469, + y: 492.91119384766, + code: "6077" + }, + { + x: 360.77349853516, + y: 414.39306640625, + code: "6078" + }, + { + x: 308.50833129883, + y: 453.89862060547, + code: "6079" + }, + { + x: 295.21667480469, + y: 504.61383056641, + code: "6080" + }, + { + x: 249.45138549805, + y: 658.66259765625, + code: "6081" + }, + { + x: 239.11804199219, + y: 589.58752441406, + code: "6082" + }, + { + x: 175.05268859863, + y: 555.31396484375, + code: "6083" + }, + { + x: 95.065246582031, + y: 548.21667480469, + code: "6084" + }, + { + x: 31.002807617188, + y: 528.72082519531, + code: "6085" + }, + { + x: 39.556945800781, + y: 488.56109619141, + code: "6086" + }, + { + x: 101.82203674316, + y: 501.5361328125, + code: "6087" + }, + { + x: 170.56524658203, + y: 513.30560302734, + code: "6088" + }, + { + x: 198.58605957031, + y: 465.48751831055, + code: "6089" + }, + { + x: 130.96112060547, + y: 448.33193969727, + code: "6090" + }, + { + x: 62.770755767822, + y: 434.7236328125, + code: "6091" + }, + { + x: -1.2972412109375, + y: 447.09588623047, + code: "6092" + }, + { + x: -66.628433227539, + y: 468.28079223633, + code: "6093" + }, + { + x: -119.97309112549, + y: 482.46658325195, + code: "6094" + }, + { + x: -175.78332519531, + y: 485.40130615234, + code: "6095" + }, + { + x: -232.74758911133, + y: 470.56115722656, + code: "6096" + }, + { + x: -291.53466796875, + y: 474.73196411133, + code: "6097" + }, + { + x: -369.76379394531, + y: 455.81115722656, + code: "6098" + }, + { + x: -331.13897705078, + y: 511.28619384766, + code: "6099" + }, + { + x: -402.87100219727, + y: 492.36114501953, + code: "6100" + }, + { + x: -360.69793701172, + y: 541.34301757813, + code: "6101" + }, + { + x: -439.50415039063, + y: 518.86938476563, + code: "6102" + }, + { + x: -410.33340454102, + y: 567.25268554688, + code: "6103" + }, + { + x: -492.69583129883, + y: 531.83337402344, + code: "6104" + }, + { + x: -459.35787963867, + y: 578.43200683594, + code: "6105" + }, + { + x: -528.75988769531, + y: 594.927734375, + code: "6106" + }, + { + x: -558.10064697266, + y: 628.72186279297, + code: "6107" + }, + { + x: -601.43756103516, + y: 648.56945800781, + code: "6108" + }, + { + x: -648.38018798828, + y: 667.43884277344, + code: "6109" + }, + { + x: -718.94104003906, + y: 695.73327636719, + code: "6110" + }, + { + x: -654.31750488281, + y: 630.17919921875, + code: "6111" + }, + { + x: -664.091796875, + y: 580.56677246094, + code: "6112" + }, + { + x: -713.98077392578, + y: 631.90423583984, + code: "6113" + }, + { + x: -717.83959960938, + y: 572.28198242188, + code: "6114" + }, + { + x: -766.55902099609, + y: 589.95812988281, + code: "6115" + }, + { + x: -775.70361328125, + y: 620.64440917969, + code: "6116" + }, + { + x: -789.62451171875, + y: 648.34301757813, + code: "6117" + }, + { + x: -806.47595214844, + y: 677.22369384766, + code: "6118" + }, + { + x: -862.28363037109, + y: 677.79028320313, + code: "6119" + }, + { + x: -918.67370605469, + y: 673.61810302734, + code: "6120" + }, + { + x: -974.53161621094, + y: 672.35675048828, + code: "6121" + }, + { + x: -1026.2021484375, + y: 675.30151367188, + code: "6122" + }, + { + x: -1065.5067138672, + y: 708.35546875, + code: "6123" + }, + { + x: -1338.2426757813, + y: 541.27087402344, + code: "6124" + }, + { + x: -1388.7254638672, + y: 508.19418334961, + code: "6125" + }, + { + x: -1410.8890380859, + y: 438.9221496582, + code: "6126" + }, + { + x: -1343.9058837891, + y: 476.67770385742, + code: "6127" + }, + { + x: -1351.9217529297, + y: 434.14993286133, + code: "6128" + }, + { + x: -1230.0601806641, + y: 443.54446411133, + code: "6129" + }, + { + x: -1284.1134033203, + y: 488.95129394531, + code: "6130" + }, + { + x: -1212.4343261719, + y: 494.26245117188, + code: "6131" + }, + { + x: -1212.158203125, + y: 563.90283203125, + code: "6132" + }, + { + x: -1140.2407226563, + y: 527.28747558594, + code: "6133" + }, + { + x: -1158.8768310547, + y: 573.85028076172, + code: "6134" + }, + { + x: -1115.4670410156, + y: 595.69030761719, + code: "6135" + }, + { + x: -1085.6940917969, + y: 547.24731445313, + code: "6136" + }, + { + x: -1037.5952148438, + y: 565.49865722656, + code: "6137" + }, + { + x: -954.66888427734, + y: 609.72082519531, + code: "6138" + }, + { + x: -972.70709228516, + y: 558.93609619141, + code: "6139" + }, + { + x: -895.13220214844, + y: 582.51110839844, + code: "6140" + }, + { + x: -922.60095214844, + y: 537.04864501953, + code: "6141" + }, + { + x: -854.97277832031, + y: 554.59283447266, + code: "6142" + }, + { + x: -892.58575439453, + y: 498.03335571289, + code: "6143" + }, + { + x: -831.50915527344, + y: 513.93762207031, + code: "6144" + }, + { + x: -884.38293457031, + y: 452.51110839844, + code: "6145" + }, + { + x: -823.89910888672, + y: 466.66662597656, + code: "6146" + }, + { + x: -814.16357421875, + y: 409.9831237793, + code: "6147" + }, + { + x: -773.17822265625, + y: 481.37347412109, + code: "6148" + }, + { + x: -756.38006591797, + y: 412.8776550293, + code: "6149" + }, + { + x: -724.23278808594, + y: 499.6208190918, + code: "6150" + }, + { + x: -712.74206542969, + y: 441.16241455078, + code: "6151" + }, + { + x: -671.13714599609, + y: 517.88616943359, + code: "6152" + }, + { + x: -659.64196777344, + y: 466.4958190918, + code: "6153" + }, + { + x: -607.41296386719, + y: 531.97094726563, + code: "6154" + }, + { + x: -598.89373779297, + y: 476.46380615234, + code: "6155" + }, + { + x: -558.46899414063, + y: 553.77642822266, + code: "6156" + }, + { + x: -521.02032470703, + y: 494.13180541992, + code: "6157" + }, + { + x: -510.1328125, + y: 452.78060913086, + code: "6158" + }, + { + x: -590.72540283203, + y: 387.22906494141, + code: "6159" + }, + { + x: -498.37484741211, + y: 374.80413818359, + code: "6160" + }, + { + x: -477.44799804688, + y: 418.48046875, + code: "6161" + }, + { + x: -422.26184082031, + y: 419.63055419922, + code: "6162" + }, + { + x: -437.25512695313, + y: 367.65478515625, + code: "6163" + }, + { + x: -462.48934936523, + y: 328.10137939453, + code: "6164" + }, + { + x: -393.73489379883, + y: 328.10000610352, + code: "6165" + }, + { + x: -369.84939575195, + y: 390.66912841797, + code: "6166" + }, + { + x: -323.51623535156, + y: 347.55966186523, + code: "6167" + }, + { + x: -316.17437744141, + y: 405.98754882813, + code: "6168" + }, + { + x: -266.91488647461, + y: 369.94305419922, + code: "6169" + }, + { + x: -207.63012695313, + y: 388.1985168457, + code: "6170" + }, + { + x: -157.18350219727, + y: 410.58056640625, + code: "6171" + }, + { + x: -84.303298950195, + y: 439.47348022461, + code: "6172" + }, + { + x: -86.418128967285, + y: 357.40148925781, + code: "6173" + }, + { + x: -6.4694213867188, + y: 404.0319519043, + code: "6174" + }, + { + x: -42.2138671875, + y: 334.93740844727, + code: "6175" + }, + { + x: 49.536071777344, + y: 376.21939086914, + code: "6176" + }, + { + x: 12.605529785156, + y: 310.67916870117, + code: "6177" + }, + { + x: -149.43428039551, + y: 291.76098632813, + code: "6178" + }, + { + x: -217.6293182373, + y: 297.13497924805, + code: "6179" + }, + { + x: -269.89212036133, + y: 289.37637329102, + code: "6180" + }, + { + x: -359.32946777344, + y: 272.82220458984, + code: "6181" + }, + { + x: -425.75863647461, + y: 271.02914428711, + code: "6182" + }, + { + x: -494.56964111328, + y: 286.93753051758, + code: "6183" + }, + { + x: -568.09265136719, + y: 335.89297485352, + code: "6184" + }, + { + x: -571.34918212891, + y: 290.98889160156, + code: "6185" + }, + { + x: -634.80773925781, + y: 294.49157714844, + code: "6186" + }, + { + x: -698.30737304688, + y: 314.51943969727, + code: "6187" + }, + { + x: -781.28607177734, + y: 319.22219848633, + code: "6188" + }, + { + x: -756.80535888672, + y: 260.7624206543, + code: "6189" + }, + { + x: -830.34216308594, + y: 254.25691223145, + code: "6190" + }, + { + x: -882.001953125, + y: 285.53472900391, + code: "6191" + }, + { + x: -873.49456787109, + y: 340.39581298828, + code: "6192" + }, + { + x: -945.36529541016, + y: 389.28802490234, + code: "6193" + }, + { + x: -933.15216064453, + y: 473.7096862793, + code: "6194" + }, + { + x: -980.72039794922, + y: 433.56103515625, + code: "6195" + }, + { + x: -951.53369140625, + y: 509.10546875, + code: "6196" + }, + { + x: -997.88922119141, + y: 468.37091064453, + code: "6197" + }, + { + x: -1015.9061889648, + y: 521.47497558594, + code: "6198" + }, + { + x: -1069.9627685547, + y: 478.95004272461, + code: "6199" + }, + { + x: -1041.3735351563, + y: 419.33206176758, + code: "6200" + }, + { + x: -1041.6975097656, + y: 368.53604125977, + code: "6201" + }, + { + x: -962.31048583984, + y: 326, + code: "6202" + }, + { + x: -1037.6130371094, + y: 308.8818359375, + code: "6203" + }, + { + x: -1112.3223876953, + y: 419.82232666016, + code: "6204" + }, + { + x: -1133.8972167969, + y: 487.09161376953, + code: "6205" + }, + { + x: -1164.3012695313, + y: 446.32086181641, + code: "6206" + }, + { + x: -617.99291992188, + y: -1779.3375244141, + code: "9000" + }, + { + x: -557.49957275391, + y: -1797.0583496094, + code: "9001" + }, + { + x: -512.93701171875, + y: -1739.8428955078, + code: "9002" + }, + { + x: -455.40063476563, + y: -1752.8360595703, + code: "9003" + }, + { + x: -442.17102050781, + y: -1722.7446289063, + code: "9004" + }, + { + x: -425.97006225586, + y: -1691.4652099609, + code: "9005" + }, + { + x: -325.95092773438, + y: -1964.2082519531, + code: "9006" + }, + { + x: -82.513252258301, + y: -2016.1943359375, + code: "9007" + }, + { + x: -111.77169799805, + y: -2131.8942871094, + code: "9008" + }, + { + x: -401.33639526367, + y: -2141.3444824219, + code: "9009" + }, + { + x: -581.68414306641, + y: -2153.1555175781, + code: "9010" + }, + { + x: -508.21328735352, + y: -2211.6374511719, + code: "9011" + }, + { + x: -432.40249633789, + y: -2189.2194824219, + code: "9012" + }, + { + x: -354.24099731445, + y: -2189.8400878906, + code: "9013" + }, + { + x: -284.30514526367, + y: -2220.5444335938, + code: "9014" + }, + { + x: -223.84916687012, + y: -2240.029296875, + code: "9015" + }, + { + x: -110.22423553467, + y: -2227.6540527344, + code: "9016" + }, + { + x: -13.152498245239, + y: -2228.2902832031, + code: "9017" + }, + { + x: -79.018424987793, + y: -2191.7026367188, + code: "9018" + }, + { + x: -10.2855052948, + y: -2171.6804199219, + code: "9019" + }, + { + x: 125.16636657715, + y: -2105.5888671875, + code: "9020" + }, + { + x: 125.44242095947, + y: -2155.1833496094, + code: "9021" + }, + { + x: 189.44230651855, + y: -2152.2485351563, + code: "9022" + }, + { + x: 134.2064666748, + y: -2217.1804199219, + code: "9023" + }, + { + x: 135.67269897461, + y: -2261.470703125, + code: "9024" + }, + { + x: 219.17179870605, + y: -2221.9514160156, + code: "9025" + }, + { + x: 299.72015380859, + y: -2211.375, + code: "9026" + }, + { + x: 267.52749633789, + y: -2170.0803222656, + code: "9027" + }, + { + x: -366.77319335938, + y: -1601.0847167969, + code: "9028" + }, + { + x: -351.75268554688, + y: -1568.6346435547, + code: "9029" + }, + { + x: -329.61773681641, + y: -1542.0874023438, + code: "9030" + }, + { + x: -317.55230712891, + y: -1515.5374755859, + code: "9031" + }, + { + x: -314.94671630859, + y: -1491.3485107422, + code: "9032" + }, + { + x: -314.65774536133, + y: -1465.9680175781, + code: "9033" + }, + { + x: -314.99819946289, + y: -1401.6596679688, + code: "9034" + }, + { + x: -318.24963378906, + y: -1349.7554931641, + code: "9035" + }, + { + x: -315.59759521484, + y: -1301.3970947266, + code: "9036" + }, + { + x: -222.04414367676, + y: -1279.5596923828, + code: "9037" + }, + { + x: -221.16809082031, + y: -1332.1346435547, + code: "9038" + }, + { + x: -225.03984069824, + y: -1369.3374023438, + code: "9039" + }, + { + x: -223.5772857666, + y: -1394.7319335938, + code: "9040" + }, + { + x: -143.6206817627, + y: -1279.6457519531, + code: "9041" + }, + { + x: -144.53955078125, + y: -1332.1846923828, + code: "9042" + }, + { + x: -58.668151855469, + y: -1296.7834472656, + code: "9043" + }, + { + x: -54.275856018066, + y: -1341.6610107422, + code: "9044" + }, + { + x: 2.6582078933716, + y: -1293.2971191406, + code: "9045" + }, + { + x: 25.372587203979, + y: -1341.7027587891, + code: "9046" + }, + { + x: 118.90602874756, + y: -1300.4305419922, + code: "9047" + }, + { + x: 139.26152038574, + y: -1345.3110351563, + code: "9048" + }, + { + x: 169.05590820313, + y: -1313.4749755859, + code: "9049" + }, + { + x: 182.32823181152, + y: -1281.0345458984, + code: "9050" + }, + { + x: 269.36267089844, + y: -1264.5220947266, + code: "9051" + }, + { + x: 328.66967773438, + y: -1277.5358886719, + code: "9052" + }, + { + x: 400.36538696289, + y: -1320.0499267578, + code: "9053" + }, + { + x: 467.93350219727, + y: -1294.66796875, + code: "9054" + }, + { + x: 461.69897460938, + y: -1327.1652832031, + code: "9055" + }, + { + x: 437.15036010742, + y: -1358.4846191406, + code: "9056" + }, + { + x: 456.33099365234, + y: -1382.1110839844, + code: "9057" + }, + { + x: 497.3212890625, + y: -1406.9416503906, + code: "9058" + }, + { + x: 497.59185791016, + y: -1353.8249511719, + code: "9059" + }, + { + x: 486.0364074707, + y: -1468.3637695313, + code: "9060" + }, + { + x: 561.10925292969, + y: -1605.8107910156, + code: "9061" + }, + { + x: 532.02807617188, + y: -1641.95703125, + code: "9062" + }, + { + x: 454.37530517578, + y: -1575.2985839844, + code: "9063" + }, + { + x: 475.89196777344, + y: -1511.5500488281, + code: "9064" + }, + { + x: 401.17672729492, + y: -1529.8985595703, + code: "9065" + }, + { + x: 363.94625854492, + y: -1456.7110595703, + code: "9066" + }, + { + x: 397.12634277344, + y: -1431.9426269531, + code: "9067" + }, + { + x: 330.79077148438, + y: -1417.8332519531, + code: "9068" + }, + { + x: 352.29205322266, + y: -1384.2041015625, + code: "9069" + }, + { + x: 264.00042724609, + y: -1344.7014160156, + code: "9070" + }, + { + x: 237.13723754883, + y: -1387.8402099609, + code: "9071" + }, + { + x: 93.363952636719, + y: -1409.0999755859, + code: "9072" + }, + { + x: 57.044925689697, + y: -1454.5513916016, + code: "9073" + }, + { + x: 20.694875717163, + y: -1403.2456054688, + code: "9074" + }, + { + x: 10.90746307373, + y: -1437.4860839844, + code: "9075" + }, + { + x: -40.752319335938, + y: -1401.4930419922, + code: "9076" + }, + { + x: -52.313407897949, + y: -1441.0485839844, + code: "9077" + }, + { + x: -113.44661712646, + y: -1419.9624023438, + code: "9078" + }, + { + x: -116.69929504395, + y: -1468.9930419922, + code: "9079" + }, + { + x: -155.96124267578, + y: -1441.2569580078, + code: "9080" + }, + { + x: -231.85336303711, + y: -1510.3624267578, + code: "9081" + }, + { + x: -170.21907043457, + y: -1542.2749023438, + code: "9082" + }, + { + x: -200.65257263184, + y: -1574.7651367188, + code: "9083" + }, + { + x: -214.57510375977, + y: -1620.2512207031, + code: "9084" + }, + { + x: -215.48867797852, + y: -1674.0151367188, + code: "9085" + }, + { + x: -187.46504211426, + y: -1731.8972167969, + code: "9086" + }, + { + x: -118.73623657227, + y: -1580.1986083984, + code: "9087" + }, + { + x: -147.97245788574, + y: -1617.9775390625, + code: "9088" + }, + { + x: -82.77734375, + y: -1615.6389160156, + code: "9089" + }, + { + x: -107.89018249512, + y: -1649.8861083984, + code: "9090" + }, + { + x: -130.62887573242, + y: -1685.9069824219, + code: "9091" + }, + { + x: -16.434553146362, + y: -1670.6027832031, + code: "9092" + }, + { + x: -102.92967224121, + y: -1804.6430664063, + code: "9093" + }, + { + x: -52.484455108643, + y: -1760.3791503906, + code: "9094" + }, + { + x: -38.371166229248, + y: -1865.0164794922, + code: "9095" + }, + { + x: -27.483112335205, + y: -1783.0012207031, + code: "9096" + }, + { + x: -17.173496246338, + y: -1886.9387207031, + code: "9097" + }, + { + x: 3.1609797477722, + y: -1805.4915771484, + code: "9098" + }, + { + x: 9.3448152542114, + y: -1910.5693359375, + code: "9099" + }, + { + x: 27.890850067139, + y: -1832.0930175781, + code: "9100" + }, + { + x: 47.030918121338, + y: -1930.6762695313, + code: "9101" + }, + { + x: 59.687953948975, + y: -1859.2763671875, + code: "9102" + }, + { + x: 85.914276123047, + y: -1978.5360107422, + code: "9103" + }, + { + x: 108.62252044678, + y: -2008.6540527344, + code: "9104" + }, + { + x: 139.58644104004, + y: -1971.5124511719, + code: "9105" + }, + { + x: 154.00888061523, + y: -1946.7583007813, + code: "9106" + }, + { + x: 137.76422119141, + y: -1922.5985107422, + code: "9107" + }, + { + x: 109.70868682861, + y: -1900.1694335938, + code: "9108" + }, + { + x: 86.381195068359, + y: -1822.8734130859, + code: "9109" + }, + { + x: 20.531059265137, + y: -1737.8999023438, + code: "9110" + }, + { + x: 125.27146148682, + y: -1781.5804443359, + code: "9111" + }, + { + x: 160.95896911621, + y: -1860.1069335938, + code: "9112" + }, + { + x: 205.51319885254, + y: -1877.2679443359, + code: "9113" + }, + { + x: 188.67405700684, + y: -1832.4387207031, + code: "9114" + }, + { + x: 270.400390625, + y: -1812.3804931641, + code: "9115" + }, + { + x: 296.07427978516, + y: -1784.06640625, + code: "9116" + }, + { + x: 321.7243347168, + y: -1755.7664794922, + code: "9117" + }, + { + x: 287.75616455078, + y: -1728.6472167969, + code: "9118" + }, + { + x: 254.39649963379, + y: -1755.8026123047, + code: "9119" + }, + { + x: 232.21168518066, + y: -1778.2803955078, + code: "9120" + }, + { + x: 179.36712646484, + y: -1731.6680908203, + code: "9121" + }, + { + x: 213.28810119629, + y: -1700.4151611328, + code: "9122" + }, + { + x: 236.56298828125, + y: -1672.70703125, + code: "9123" + }, + { + x: 194.93222045898, + y: -1640.8748779297, + code: "9124" + }, + { + x: 150.92175292969, + y: -1654.4763183594, + code: "9125" + }, + { + x: 115.18550872803, + y: -1679.8818359375, + code: "9126" + }, + { + x: 139.05323791504, + y: -1704.1013183594, + code: "9127" + }, + { + x: 177.12002563477, + y: -1681.1290283203, + code: "9128" + }, + { + x: 124.26740264893, + y: -1600.2818603516, + code: "9129" + }, + { + x: 92.077140808105, + y: -1578.4597167969, + code: "9130" + }, + { + x: 69.900650024414, + y: -1556.0500488281, + code: "9131" + }, + { + x: 43.629463195801, + y: -1594.4680175781, + code: "9132" + }, + { + x: -32.327224731445, + y: -1556.0760498047, + code: "9133" + }, + { + x: -62.70182800293, + y: -1518.9624023438, + code: "9134" + }, + { + x: -23.499725341797, + y: -1489.4859619141, + code: "9135" + }, + { + x: 12.798816680908, + y: -1521.9652099609, + code: "9136" + }, + { + x: 112.20829772949, + y: -1510.1943359375, + code: "9137" + }, + { + x: 141.41571044922, + y: -1531.4499511719, + code: "9138" + }, + { + x: 172.38650512695, + y: -1560.9638671875, + code: "9139" + }, + { + x: 213.37115478516, + y: -1538.5693359375, + code: "9140" + }, + { + x: 181.76721191406, + y: -1504.3637695313, + code: "9141" + }, + { + x: 153.11860656738, + y: -1473.7055664063, + code: "9142" + }, + { + x: 181.72525024414, + y: -1446.0069580078, + code: "9143" + }, + { + x: 222.1319732666, + y: -1474.9735107422, + code: "9144" + }, + { + x: 257.80902099609, + y: -1508.0555419922, + code: "9145" + }, + { + x: 302.36294555664, + y: -1466.7805175781, + code: "9146" + }, + { + x: 327.43359375, + y: -1572.4595947266, + code: "9147" + }, + { + x: 376.68545532227, + y: -1613.8193359375, + code: "9148" + }, + { + x: 264.19937133789, + y: -1599.6833496094, + code: "9149" + }, + { + x: 296.95776367188, + y: -1631.5750732422, + code: "9150" + }, + { + x: 336.20071411133, + y: -1661.7042236328, + code: "9151" + }, + { + x: 371.90850830078, + y: -1688.9027099609, + code: "9152" + }, + { + x: 408.19897460938, + y: -1652.3526611328, + code: "9153" + }, + { + x: 482.81744384766, + y: -1695.4899902344, + code: "9154" + }, + { + x: 444.13436889648, + y: -1715.5695800781, + code: "9155" + }, + { + x: 415.75253295898, + y: -1750.6276855469, + code: "9156" + }, + { + x: 381.80648803711, + y: -1806.7263183594, + code: "9157" + }, + { + x: 359.66192626953, + y: -1832.7221679688, + code: "9158" + }, + { + x: 337.51217651367, + y: -1857.5415039063, + code: "9159" + }, + { + x: 283.48712158203, + y: -1913.0360107422, + code: "9160" + }, + { + x: 257.18014526367, + y: -1937.8416748047, + code: "9161" + }, + { + x: 239.14413452148, + y: -1966.7734375, + code: "9162" + }, + { + x: 216.37110900879, + y: -1992.1818847656, + code: "9163" + }, + { + x: 196.4766998291, + y: -2023.4451904297, + code: "9164" + }, + { + x: 234.02917480469, + y: -2044.75, + code: "9165" + }, + { + x: 251.40965270996, + y: -2019.3680419922, + code: "9166" + }, + { + x: 277.07366943359, + y: -1992.8375244141, + code: "9167" + }, + { + x: 296.23071289063, + y: -1963.3359375, + code: "9168" + }, + { + x: 311.83898925781, + y: -1937.9681396484, + code: "9169" + }, + { + x: 362.85647583008, + y: -1890.7777099609, + code: "9170" + }, + { + x: 393.24688720703, + y: -1865.4180908203, + code: "9171" + }, + { + x: 421.23541259766, + y: -1838.8874511719, + code: "9172" + }, + { + x: 463.40255737305, + y: -1775.1500244141, + code: "9173" + }, + { + x: 464.87399291992, + y: -1739.7834472656, + code: "9174" + }, + { + x: 571.39288330078, + y: -1684.9041748047, + code: "9175" + }, + { + x: 543.89892578125, + y: -1736.8942871094, + code: "9176" + }, + { + x: 541.19067382813, + y: -1762.2819824219, + code: "9177" + }, + { + x: 542.03228759766, + y: -1794.7651367188, + code: "9178" + }, + { + x: 526.35394287109, + y: -1823.7244873047, + code: "9179" + }, + { + x: 530.18414306641, + y: -1853.2639160156, + code: "9180" + }, + { + x: 466.10235595703, + y: -1886.9458007813, + code: "9181" + }, + { + x: 432.15661621094, + y: -1916.4638671875, + code: "9182" + }, + { + x: 352.16525268555, + y: -1992.0555419922, + code: "9183" + }, + { + x: 296.36557006836, + y: -2062.3430175781, + code: "9184" + }, + { + x: 329.69763183594, + y: -2095.4055175781, + code: "9185" + }, + { + x: 431.13494873047, + y: -2068.9138183594, + code: "9186" + }, + { + x: 476.84338378906, + y: -1957.9775390625, + code: "9187" + }, + { + x: 524.31469726563, + y: -1937.3402099609, + code: "9188" + }, + { + x: 568.86346435547, + y: -1911.3776855469, + code: "9189" + }, + { + x: 601.60778808594, + y: -1886.6081542969, + code: "9190" + }, + { + x: 600.12127685547, + y: -1936.2330322266, + code: "9191" + }, + { + x: 569.69812011719, + y: -1959.2707519531, + code: "9192" + }, + { + x: 470.78228759766, + y: -1987.6180419922, + code: "9193" + }, + { + x: 548.95880126953, + y: -1988.240234375, + code: "9194" + }, + { + x: 509.10345458984, + y: -2015.9930419922, + code: "9195" + }, + { + x: 433.83679199219, + y: -2069.7150878906, + code: "9196" + }, + { + x: 384.50933837891, + y: -2129.9582519531, + code: "9197" + }, + { + x: 404.27166748047, + y: -2222.0832519531, + code: "9198" + }, + { + x: 470.06311035156, + y: -2186.6831054688, + code: "9199" + }, + { + x: 488.64047241211, + y: -2285.2763671875, + code: "9200" + }, + { + x: 550.28009033203, + y: -2390.9594726563, + code: "9201" + }, + { + x: 551.72241210938, + y: -2349.0900878906, + code: "9202" + }, + { + x: 553.7626953125, + y: -2314.2734375, + code: "9203" + }, + { + x: 551.09069824219, + y: -2248.7790527344, + code: "9204" + }, + { + x: 552.52258300781, + y: -2219.2861328125, + code: "9205" + }, + { + x: 560.46600341797, + y: -2189.7861328125, + code: "9206" + }, + { + x: 558.97125244141, + y: -2160.2861328125, + code: "9207" + }, + { + x: 559.83239746094, + y: -2131.3762207031, + code: "9208" + }, + { + x: 557.73120117188, + y: -2103.06640625, + code: "9209" + }, + { + x: 675.45660400391, + y: -2450.7734375, + code: "9210" + }, + { + x: 681.64501953125, + y: -2418.3347167969, + code: "9211" + }, + { + x: 686.61383056641, + y: -2390.6101074219, + code: "9212" + }, + { + x: 687.48236083984, + y: -2362.31640625, + code: "9213" + }, + { + x: 690.10327148438, + y: -2331.0654296875, + code: "9214" + }, + { + x: 698.06634521484, + y: -2294.5026855469, + code: "9215" + }, + { + x: 698.34210205078, + y: -2269.16796875, + code: "9216" + }, + { + x: 699.18249511719, + y: -2238.5056152344, + code: "9217" + }, + { + x: 703.57458496094, + y: -2207.85546875, + code: "9218" + }, + { + x: 703.25238037109, + y: -2178.9763183594, + code: "9219" + }, + { + x: 704.72296142578, + y: -2150.6665039063, + code: "9220" + }, + { + x: 706.17254638672, + y: -2125.3178710938, + code: "9221" + }, + { + x: 709.99371337891, + y: -2094.5502929688, + code: "9222" + }, + { + x: 717.91540527344, + y: -2035.6749267578, + code: "9223" + }, + { + x: 724.09515380859, + y: -2005.595703125, + code: "9224" + }, + { + x: 726.11364746094, + y: -1980.8083496094, + code: "9225" + }, + { + x: 731.1142578125, + y: -1946.6137695313, + code: "9226" + }, + { + x: 733.75372314453, + y: -1918.3166503906, + code: "9227" + }, + { + x: 742.89678955078, + y: -1889.4262695313, + code: "9228" + }, + { + x: 751.99627685547, + y: -1860.5263671875, + code: "9229" + }, + { + x: 757.55535888672, + y: -1835.16796875, + code: "9230" + }, + { + x: 766.69635009766, + y: -1808.6374511719, + code: "9231" + }, + { + x: 766.94219970703, + y: -1780.9069824219, + code: "9232" + }, + { + x: 779.58880615234, + y: -1710.7069091797, + code: "9233" + }, + { + x: 782.20367431641, + y: -1682.4166259766, + code: "9234" + }, + { + x: 793.11779785156, + y: -1654.1166992188, + code: "9235" + }, + { + x: 794.57348632813, + y: -1621.0943603516, + code: "9236" + }, + { + x: 800.15460205078, + y: -1594.5374755859, + code: "9237" + }, + { + x: 769.15734863281, + y: -1517.2236328125, + code: "9238" + }, + { + x: 757.63647460938, + y: -1492.4582519531, + code: "9239" + }, + { + x: 750.80926513672, + y: -1464.7569580078, + code: "9240" + }, + { + x: 759.35656738281, + y: -1407.5430908203, + code: "9241" + }, + { + x: 760.82312011719, + y: -1376.2651367188, + code: "9242" + }, + { + x: 756.37023925781, + y: -1330.2581787109, + code: "9243" + }, + { + x: 758.41387939453, + y: -1304.3277587891, + code: "9244" + }, + { + x: 760.4638671875, + y: -1271.2944335938, + code: "9245" + }, + { + x: 841.01965332031, + y: -1301.9943847656, + code: "9246" + }, + { + x: 900.31994628906, + y: -1251.2360839844, + code: "9247" + }, + { + x: 962.57122802734, + y: -1268.3680419922, + code: "9248" + }, + { + x: 916.81060791016, + y: -1304.9971923828, + code: "9249" + }, + { + x: 905.87719726563, + y: -1339.2360839844, + code: "9250" + }, + { + x: 869.23614501953, + y: -1366.6544189453, + code: "9251" + }, + { + x: 846.77093505859, + y: -1394.1931152344, + code: "9252" + }, + { + x: 930.86163330078, + y: -1485.1027832031, + code: "9253" + }, + { + x: 901.62854003906, + y: -1528.8305664063, + code: "9254" + }, + { + x: 932.58679199219, + y: -1561.9053955078, + code: "9255" + }, + { + x: 898.01599121094, + y: -1591.4638671875, + code: "9256" + }, + { + x: 913.63989257813, + y: -1631.0485839844, + code: "9257" + }, + { + x: 908.58026123047, + y: -1680.0430908203, + code: "9258" + }, + { + x: 908.25177001953, + y: -1726.0915527344, + code: "9259" + }, + { + x: 914.44543457031, + y: -1796.9332275391, + code: "9260" + }, + { + x: 875.14385986328, + y: -1819.970703125, + code: "9261" + }, + { + x: 913.17010498047, + y: -1844.7916259766, + code: "9262" + }, + { + x: 870.888671875, + y: -1868.0417480469, + code: "9263" + }, + { + x: 911.90606689453, + y: -1888.6846923828, + code: "9264" + }, + { + x: 856.70599365234, + y: -1910.9805908203, + code: "9265" + }, + { + x: 910.48345947266, + y: -1934.7833251953, + code: "9266" + }, + { + x: 849.00329589844, + y: -1950.0068359375, + code: "9267" + }, + { + x: 903.59759521484, + y: -1964.8068847656, + code: "9268" + }, + { + x: 842.453125, + y: -1985.509765625, + code: "9269" + }, + { + x: 900.58935546875, + y: -2003.2583007813, + code: "9270" + }, + { + x: 842.40466308594, + y: -2021.5987548828, + code: "9271" + }, + { + x: 896.99774169922, + y: -2044.6206054688, + code: "9272" + }, + { + x: 829.95080566406, + y: -2106.62890625, + code: "9273" + }, + { + x: 890.45043945313, + y: -2134.9833984375, + code: "9274" + }, + { + x: 827.58190917969, + y: -2155.8142089844, + code: "9275" + }, + { + x: 884.50866699219, + y: -2178.1303710938, + code: "9276" + }, + { + x: 825.17401123047, + y: -2192.6745605469, + code: "9277" + }, + { + x: 880.33807373047, + y: -2221.8735351563, + code: "9278" + }, + { + x: 817.43304443359, + y: -2269.1223144531, + code: "9279" + }, + { + x: 878.49090576172, + y: -2281.5456542969, + code: "9280" + }, + { + x: 809.67956542969, + y: -2294.5361328125, + code: "9281" + }, + { + x: 874.87359619141, + y: -2310.4873046875, + code: "9282" + }, + { + x: 813.75372314453, + y: -2327.0275878906, + code: "9283" + }, + { + x: 863.62548828125, + y: -2348.8903808594, + code: "9284" + }, + { + x: 805.45458984375, + y: -2355.9831542969, + code: "9285" + }, + { + x: 860.04772949219, + y: -2377.25, + code: "9286" + }, + { + x: 806.87121582031, + y: -2393.8037109375, + code: "9287" + }, + { + x: 801.77374267578, + y: -2427.5217285156, + code: "9288" + }, + { + x: 950.17541503906, + y: -2436.9929199219, + code: "9289" + }, + { + x: 994.12274169922, + y: -2416.9306640625, + code: "9290" + }, + { + x: 961.46490478516, + y: -2391.5678710938, + code: "9291" + }, + { + x: 1003.6517944336, + y: -2362.6762695313, + code: "9292" + }, + { + x: 964.39349365234, + y: -2337.3178710938, + code: "9293" + }, + { + x: 1010.0933837891, + y: -2314.3291015625, + code: "9294" + }, + { + x: 964.29998779297, + y: -2289.5583496094, + code: "9295" + }, + { + x: 1013.585144043, + y: -2265.3984375, + code: "9296" + }, + { + x: 964.84912109375, + y: -2245.3303222656, + code: "9297" + }, + { + x: 1012.9049682617, + y: -2221.7387695313, + code: "9298" + }, + { + x: 979.58270263672, + y: -2181.4865722656, + code: "9299" + }, + { + x: 1020.4531860352, + y: -2158.0944824219, + code: "9300" + }, + { + x: 979.57885742188, + y: -2133.8581542969, + code: "9301" + }, + { + x: 1023.3827514648, + y: -2115.6013183594, + code: "9302" + }, + { + x: 985.86437988281, + y: -2051.3095703125, + code: "9303" + }, + { + x: 1059.4138183594, + y: -2050.6486816406, + code: "9304" + }, + { + x: 1133.3771972656, + y: -2048.4389648438, + code: "9305" + }, + { + x: 1099.4060058594, + y: -2003.5888671875, + code: "9306" + }, + { + x: 992.85186767578, + y: -2015.4055175781, + code: "9307" + }, + { + x: 1004.9475708008, + y: -1976.4914550781, + code: "9308" + }, + { + x: 1080.1566162109, + y: -1966.4652099609, + code: "9309" + }, + { + x: 1001.9356689453, + y: -1938.7569580078, + code: "9310" + }, + { + x: 1068.3026123047, + y: -1934.0775146484, + code: "9311" + }, + { + x: 1003.0715942383, + y: -1870.3498535156, + code: "9312" + }, + { + x: 1054.6960449219, + y: -1853.2316894531, + code: "9313" + }, + { + x: 998.73413085938, + y: -1835.5299072266, + code: "9314" + }, + { + x: 1054.0369873047, + y: -1817.8415527344, + code: "9315" + }, + { + x: 996.44519042969, + y: -1804.2734375, + code: "9316" + }, + { + x: 1002.0046386719, + y: -1738.1887207031, + code: "9317" + }, + { + x: 1007.0152587891, + y: -1692.7485351563, + code: "9318" + }, + { + x: 1009.063659668, + y: -1639.0346679688, + code: "9319" + }, + { + x: 1007.5717163086, + y: -1587.1055908203, + code: "9320" + }, + { + x: 1007.8425292969, + y: -1538.1569824219, + code: "9321" + }, + { + x: 1009.8638305664, + y: -1490.3873291016, + code: "9322" + }, + { + x: 991.84326171875, + y: -1392.4138183594, + code: "9323" + }, + { + x: 1206.3765869141, + y: -1256.6513671875, + code: "9324" + }, + { + x: 1151.7459716797, + y: -1287.9846191406, + code: "9325" + }, + { + x: 1204.5270996094, + y: -1311.0207519531, + code: "9326" + }, + { + x: 1149.8963623047, + y: -1334.0708007813, + code: "9327" + }, + { + x: 1200.9064941406, + y: -1357.1208496094, + code: "9328" + }, + { + x: 1147.4772949219, + y: -1384.3026123047, + code: "9329" + }, + { + x: 1196.14453125, + y: -1406.1903076172, + code: "9330" + }, + { + x: 1140.3162841797, + y: -1481.7553710938, + code: "9331" + }, + { + x: 1221.4600830078, + y: -1483.5708007813, + code: "9332" + }, + { + x: 1153.2701416016, + y: -1523.1486816406, + code: "9333" + }, + { + x: 1230.2770996094, + y: -1527.8721923828, + code: "9334" + }, + { + x: 1164.4307861328, + y: -1565.0875244141, + code: "9335" + }, + { + x: 1237.6911621094, + y: -1575.8647460938, + code: "9336" + }, + { + x: 1162.5869140625, + y: -1613.5277099609, + code: "9337" + }, + { + x: 1262.0091552734, + y: -1637.7512207031, + code: "9338" + }, + { + x: 1227.4664306641, + y: -1736.3762207031, + code: "9339" + }, + { + x: 1288.5411376953, + y: -1704.5250244141, + code: "9340" + }, + { + x: 1351.3620605469, + y: -1743.5083007813, + code: "9341" + }, + { + x: 1282.580078125, + y: -1772.4735107422, + code: "9342" + }, + { + x: 1215.5510253906, + y: -1794.3403320313, + code: "9343" + }, + { + x: 1228.8289794922, + y: -1861.0512695313, + code: "9344" + }, + { + x: 1301.6967773438, + y: -1830.4056396484, + code: "9345" + }, + { + x: 1385.7624511719, + y: -1801.5263671875, + code: "9346" + }, + { + x: 1390.1739501953, + y: -1865.3000488281, + code: "9347" + }, + { + x: 1313.1165771484, + y: -1870.0721435547, + code: "9348" + }, + { + x: 1263.2192382813, + y: -1922.0444335938, + code: "9349" + }, + { + x: 1360.8887939453, + y: -1945.6610107422, + code: "9350" + }, + { + x: 1290.3082275391, + y: -2001.7761230469, + code: "9351" + }, + { + x: 1127.673828125, + y: -2132.865234375, + code: "9352" + }, + { + x: 1107.8725585938, + y: -2171.2678222656, + code: "9353" + }, + { + x: 1138.2448730469, + y: -2210.8486328125, + code: "9354" + }, + { + x: 1098.9436035156, + y: -2242.7248535156, + code: "9355" + }, + { + x: 1143.4632568359, + y: -2276.9858398438, + code: "9356" + }, + { + x: 1103.0340576172, + y: -2302.9584960938, + code: "9357" + }, + { + x: 1147.5634765625, + y: -2335.4653320313, + code: "9358" + }, + { + x: 1090.5855712891, + y: -2360.8818359375, + code: "9359" + }, + { + x: 1087.3000488281, + y: -2401.6291503906, + code: "9360" + }, + { + x: 1175.5441894531, + y: -2396.927734375, + code: "9361" + }, + { + x: 1205.8970947266, + y: -2355.6303710938, + code: "9362" + }, + { + x: 1227.3927001953, + y: -2301.9345703125, + code: "9363" + }, + { + x: 1199.8991699219, + y: -2245.8735351563, + code: "9364" + }, + { + x: 1180.0726318359, + y: -2176.2470703125, + code: "9365" + }, + { + x: 1306.0710449219, + y: -2080.625, + code: "9366" + }, + { + x: 1348.8416748047, + y: -2168.0109863281, + code: "9367" + }, + { + x: 1380.3765869141, + y: -2258.9526367188, + code: "9368" + }, + { + x: 1390.6770019531, + y: -2358.1665039063, + code: "9369" + }, + { + x: 1366.7409667969, + y: -2466.8110351563, + code: "9370" + }, + { + x: 1296.7493896484, + y: -2558.3432617188, + code: "9371" + }, + { + x: 1413.8663330078, + y: -2606.1623535156, + code: "9372" + }, + { + x: 1594.7663574219, + y: -2508.2138671875, + code: "9373" + }, + { + x: 1583.8277587891, + y: -2363.6318359375, + code: "9374" + }, + { + x: 1603.5710449219, + y: -2279.240234375, + code: "9375" + }, + { + x: 1614.4672851563, + y: -2189.5275878906, + code: "9376" + }, + { + x: 1540.9575195313, + y: -2138.7861328125, + code: "9377" + }, + { + x: 1599.6800537109, + y: -2038.4526367188, + code: "9378" + }, + { + x: 1484.8383789063, + y: -1946.4165039063, + code: "9379" + }, + { + x: 1661.1246337891, + y: -1895.2449951172, + code: "9380" + }, + { + x: 1486.3830566406, + y: -1781.7891845703, + code: "9381" + }, + { + x: 1592.4521484375, + y: -1723.3624267578, + code: "9382" + }, + { + x: 1699.5831298828, + y: -1697.4276123047, + code: "9383" + }, + { + x: 1725.2248535156, + y: -1630.7484130859, + code: "9384" + }, + { + x: 1454.5555419922, + y: -1683.2845458984, + code: "9385" + }, + { + x: 1714.5651855469, + y: -1546.9458007813, + code: "9386" + }, + { + x: 1733.7318115234, + y: -1469.6234130859, + code: "9387" + }, + { + x: 1584.0625, + y: -1536.9415283203, + code: "9388" + }, + { + x: 1781.4957275391, + y: -1350.4221191406, + code: "9389" + }, + { + x: 1938.7570800781, + y: -1018.7138671875, + code: "9390" + }, + { + x: -1021.8845825195, + y: -1994.0374755859, + code: "10000" + }, + { + x: -946.05133056641, + y: -2059.5708007813, + code: "10001" + }, + { + x: -846.64013671875, + y: -2153.4541015625, + code: "10002" + }, + { + x: -720.03704833984, + y: -2267.4235839844, + code: "10003" + }, + { + x: -567.19012451172, + y: -2297.6831054688, + code: "10005" + }, + { + x: -643.64276123047, + y: -2397.4567871094, + code: "10006" + }, + { + x: -710.05786132813, + y: -2500.2082519531, + code: "10007" + }, + { + x: -788.90386962891, + y: -2397.5417480469, + code: "10008" + }, + { + x: -778.62176513672, + y: -2611.2302246094, + code: "10009" + }, + { + x: -848.00964355469, + y: -2760, + code: "10010" + }, + { + x: -873.72888183594, + y: -2863.2985839844, + code: "10011" + }, + { + x: -949.60260009766, + y: -3003.7858886719, + code: "10012" + }, + { + x: -1184.2764892578, + y: -3463.6401367188, + code: "10013" + }, + { + x: -1284.3541259766, + y: -3403.44140625, + code: "10014" + }, + { + x: -1358.4816894531, + y: -3354.45703125, + code: "10015" + }, + { + x: -1407.7902832031, + y: -3296.6528320313, + code: "10016" + }, + { + x: -1471.8472900391, + y: -3266.0051269531, + code: "10017" + }, + { + x: -1573.0844726563, + y: -3227.0913085938, + code: "10018" + }, + { + x: -1573.0844726563, + y: -3227.0913085938, + code: "10019" + }, + { + x: -1930.2440185547, + y: -3038.2138671875, + code: "10020" + }, + { + x: -1804.8181152344, + y: -2797.4165039063, + code: "10021" + }, + { + x: -1332.3444824219, + y: -2632.7375488281, + code: "10022" + }, + { + x: -1237.0220947266, + y: -2800.9790039063, + code: "10023" + }, + { + x: -1070.2985839844, + y: -2798.6389160156, + code: "10024" + }, + { + x: -941.36663818359, + y: -2652.2802734375, + code: "10025" + }, + { + x: -1019.6137084961, + y: -2617.4733886719, + code: "10026" + }, + { + x: -1037.0651855469, + y: -2457.5346679688, + code: "10027" + }, + { + x: -1207.3972167969, + y: -2458.1403808594, + code: "10028" + }, + { + x: -1280.8916015625, + y: -2363.7055664063, + code: "10029" + }, + { + x: -1156.0582275391, + y: -2324.7915039063, + code: "10030" + }, + { + x: -1142.8206787109, + y: -2122.3347167969, + code: "10031" + }, + { + x: -1141.9665527344, + y: -2022.0026855469, + code: "10032" + }, + { + x: -1057.8874511719, + y: -2146.0083007813, + code: "10033" + }, + { + x: -1086.5305175781, + y: -2231.6403808594, + code: "10034" + }, + { + x: -984.72900390625, + y: -2211.5805664063, + code: "10035" + }, + { + x: -1057.0612792969, + y: -2364.4816894531, + code: "10036" + }, + { + x: -964.13317871094, + y: -2296.6179199219, + code: "10037" + }, + { + x: -903.05792236328, + y: -2382.240234375, + code: "10038" + }, + { + x: -917.56365966797, + y: -2530.4096679688, + code: "10039" + }, + { + x: -474.59829711914, + y: -2845.0678710938, + code: "10040" + }, + { + x: -504.41088867188, + y: -2782.5302734375, + code: "10041" + }, + { + x: -424.00668334961, + y: -2731.7861328125, + code: "10042" + }, + { + x: -459.76351928711, + y: -2650.931640625, + code: "10043" + }, + { + x: -352.66604614258, + y: -2647.4084472656, + code: "10044" + }, + { + x: -297.56530761719, + y: -2684.6904296875, + code: "10045" + }, + { + x: -209.89566040039, + y: -2661.62890625, + code: "10046" + }, + { + x: -236.75959777832, + y: -2585.5043945313, + code: "10047" + }, + { + x: -244.77053833008, + y: -2511.7653808594, + code: "10048" + }, + { + x: -301.76354980469, + y: -2463.3969726563, + code: "10049" + }, + { + x: -169.87484741211, + y: -2423.2609863281, + code: "10050" + }, + { + x: -145.40510559082, + y: -2464.0290527344, + code: "10051" + }, + { + x: -74.323204040527, + y: -2423.9111328125, + code: "10052" + }, + { + x: -114.78554534912, + y: -2489.470703125, + code: "10053" + }, + { + x: -12.978828430176, + y: -2471.2014160156, + code: "10054" + }, + { + x: 54.585052490234, + y: -2498.4028320313, + code: "10055" + }, + { + x: 56.023921966553, + y: -2579.3178710938, + code: "10056" + }, + { + x: -133.77590942383, + y: -2585.8427734375, + code: "10057" + }, + { + x: -124.0620880127, + y: -2680.87890625, + code: "10058" + }, + { + x: -47.660713195801, + y: -2703.9208984375, + code: "10059" + }, + { + x: 60.614250183105, + y: -2704.5400390625, + code: "10060" + }, + { + x: 151.79632568359, + y: -2609.5153808594, + code: "10061" + }, + { + x: 218.74485778809, + y: -2508.0222167969, + code: "10062" + }, + { + x: 216.63217163086, + y: -2449.0222167969, + code: "10063" + }, + { + x: 232.24067687988, + y: -2581.2719726563, + code: "10064" + }, + { + x: 319.8544921875, + y: -2603.1403808594, + code: "10065" + }, + { + x: 343.10870361328, + y: -2727.7387695313, + code: "10066" + }, + { + x: 342.80514526367, + y: -2806.2565917969, + code: "10067" + }, + { + x: 222.08653259277, + y: -2809.841796875, + code: "10068" + }, + { + x: 139.70875549316, + y: -2845.6511230469, + code: "10069" + }, + { + x: 140.58364868164, + y: -2956.08203125, + code: "10070" + }, + { + x: 142.61405944824, + y: -3027.5231933594, + code: "10071" + }, + { + x: 136.99057006836, + y: -3082.4460449219, + code: "10072" + }, + { + x: 134.88229370117, + y: -3140.8874511719, + code: "10073" + }, + { + x: 134.55319213867, + y: -3196.9763183594, + code: "10074" + }, + { + x: 137.20489501953, + y: -3256.5334472656, + code: "10075" + }, + { + x: 136.90292358398, + y: -3309.1843261719, + code: "10076" + }, + { + x: 231.04737854004, + y: -3296.2138671875, + code: "10077" + }, + { + x: 231.29327392578, + y: -3237.2219238281, + code: "10078" + }, + { + x: 233.31416320801, + y: -3179.9929199219, + code: "10079" + }, + { + x: 220.00987243652, + y: -3124.4958496094, + code: "10080" + }, + { + x: 253.93916320801, + y: -3047.2236328125, + code: "10081" + }, + { + x: 240.0265045166, + y: -2994.1252441406, + code: "10082" + }, + { + x: 253.2794342041, + y: -2944.5668945313, + code: "10083" + }, + { + x: 501.31994628906, + y: -2587.4873046875, + code: "10085" + }, + { + x: 501.59371948242, + y: -2646.5278320313, + code: "10086" + }, + { + x: 621.66955566406, + y: -2626.48046875, + code: "10087" + }, + { + x: 657.95031738281, + y: -2702.6457519531, + code: "10088" + }, + { + x: 557.25573730469, + y: -2723.8996582031, + code: "10089" + }, + { + x: 480.21716308594, + y: -2771.1220703125, + code: "10090" + }, + { + x: 548.96545410156, + y: -2798.8928222656, + code: "10091" + }, + { + x: 620.66687011719, + y: -2840.8093261719, + code: "10092" + }, + { + x: 486.93087768555, + y: -2918.7470703125, + code: "10093" + }, + { + x: 477.15866088867, + y: -2961.25, + code: "10094" + }, + { + x: 581.92266845703, + y: -2960.0693359375, + code: "10095" + }, + { + x: 475.35305786133, + y: -3007.3217773438, + code: "10096" + }, + { + x: 581.89324951172, + y: -3002.6276855469, + code: "10097" + }, + { + x: 473.53244018555, + y: -3084.1081542969, + code: "10098" + }, + { + x: 564.69610595703, + y: -3063.4899902344, + code: "10099" + }, + { + x: 549.59582519531, + y: -3117.8054199219, + code: "10100" + }, + { + x: 548.07312011719, + y: -3252.4333496094, + code: "10101" + }, + { + x: 761.43371582031, + y: -3197.5541992188, + code: "10102" + }, + { + x: 780.36627197266, + y: -3267.2524414063, + code: "10103" + }, + { + x: 858.76013183594, + y: -3309.2094726563, + code: "10104" + }, + { + x: 983.59204101563, + y: -3308.0690917969, + code: "10105" + }, + { + x: 1113.1137695313, + y: -3305.1486816406, + code: "10106" + }, + { + x: 1216.6917724609, + y: -3325.2189941406, + code: "10107" + }, + { + x: 1218.1235351563, + y: -3249.6943359375, + code: "10108" + }, + { + x: 1114.5041503906, + y: -3259.1442871094, + code: "10109" + }, + { + x: 983.85168457031, + y: -3255.2136230469, + code: "10110" + }, + { + x: 894.91137695313, + y: -3256.23046875, + code: "10111" + }, + { + x: 845.85693359375, + y: -3202.8271484375, + code: "10112" + }, + { + x: 937.34619140625, + y: -3203.740234375, + code: "10113" + }, + { + x: 1026.1749267578, + y: -3202.5693359375, + code: "10114" + }, + { + x: 1127.9708251953, + y: -3201.4191894531, + code: "10115" + }, + { + x: 1218.5554199219, + y: -3197.3176269531, + code: "10116" + }, + { + x: 1218.8428955078, + y: -3125.3359375, + code: "10117" + }, + { + x: 1130.5513916016, + y: -3150.1416015625, + code: "10118" + }, + { + x: 1029.3150634766, + y: -3148.3669433594, + code: "10119" + }, + { + x: 935.14862060547, + y: -3147.8098144531, + code: "10120" + }, + { + x: 845.08093261719, + y: -3150.8015136719, + code: "10121" + }, + { + x: 846.52368164063, + y: -3091.5949707031, + code: "10122" + }, + { + x: 937.10565185547, + y: -3094.2111816406, + code: "10123" + }, + { + x: 1029.4763183594, + y: -3095.4301757813, + code: "10124" + }, + { + x: 1127.7114257813, + y: -3093.1330566406, + code: "10125" + }, + { + x: 1141.5694580078, + y: -3041.7458496094, + code: "10126" + }, + { + x: 1032.0513916016, + y: -3041.75, + code: "10127" + }, + { + x: 936.71813964844, + y: -3043.4118652344, + code: "10128" + }, + { + x: 847.27087402344, + y: -3042.9594726563, + code: "10129" + }, + { + x: 796.18920898438, + y: -2985.1528320313, + code: "10130" + }, + { + x: 936.33923339844, + y: -2988.7416992188, + code: "10131" + }, + { + x: 1031.6276855469, + y: -2989.3403320313, + code: "10132" + }, + { + x: 1140.5041503906, + y: -2988.7595214844, + code: "10133" + }, + { + x: 1249.4041748047, + y: -2968.1401367188, + code: "10134" + }, + { + x: 1141.6721191406, + y: -2930.9624023438, + code: "10135" + }, + { + x: 1032.1513671875, + y: -2929.2290039063, + code: "10136" + }, + { + x: 936.22802734375, + y: -2931.6108398438, + code: "10137" + }, + { + x: 833.19458007813, + y: -2920.4348144531, + code: "10138" + }, + { + x: 867.67919921875, + y: -2876.1791992188, + code: "10139" + }, + { + x: 1049.1584472656, + y: -2876.1999511719, + code: "10140" + }, + { + x: 1644.1221923828, + y: 6456.0561523438, + code: "1000" + }, + { + x: 1538.3503417969, + y: 6344.6381835938, + code: "1001" + }, + { + x: 1579.3702392578, + y: 6591.4409179688, + code: "1002" + }, + { + x: 1409.5551757813, + y: 6563.380859375, + code: "1003" + }, + { + x: 525.22381591797, + y: 6591.1264648438, + code: "1004" + }, + { + x: 664.33813476563, + y: 6472.9379882813, + code: "1005" + }, + { + x: 529.42224121094, + y: 6483.48828125, + code: "1006" + }, + { + x: 529.42248535156, + y: 6483.48828125, + code: "1007" + }, + { + x: 264.91348266602, + y: 6651.58203125, + code: "1008" + }, + { + x: 350.6750793457, + y: 6493.5786132813, + code: "1009" + }, + { + x: 268.71212768555, + y: 6608.3237304688, + code: "1010" + }, + { + x: 251.9838104248, + y: 6486.3271484375, + code: "1011" + }, + { + x: 162.81225585938, + y: 6609.9672851563, + code: "1012" + }, + { + x: 159.21286010742, + y: 6470.6127929688, + code: "1013" + }, + { + x: 94.202827453613, + y: 6532.0102539063, + code: "1014" + }, + { + x: 123.64725494385, + y: 6432.8974609375, + code: "1015" + }, + { + x: 58.179302215576, + y: 6489.2016601563, + code: "1016" + }, + { + x: 94.797012329102, + y: 6396.873046875, + code: "1017" + }, + { + x: 17.470808029175, + y: 6448.9428710938, + code: "1018" + }, + { + x: 51.979454040527, + y: 6359.1142578125, + code: "1019" + }, + { + x: -23.21159362793, + y: 6411.6162109375, + code: "1020" + }, + { + x: 7.8913064002991, + y: 6316.7319335938, + code: "1021" + }, + { + x: -64.347145080566, + y: 6370.0634765625, + code: "1022" + }, + { + x: -39.561515808105, + y: 6268.4052734375, + code: "1023" + }, + { + x: -99.09156036377, + y: 6333.6215820313, + code: "1024" + }, + { + x: -82.781867980957, + y: 6226.4506835938, + code: "1025" + }, + { + x: -148.220703125, + y: 6284.8950195313, + code: "1026" + }, + { + x: -133.62596130371, + y: 6179.8168945313, + code: "1027" + }, + { + x: -190.1768951416, + y: 6245.0219726563, + code: "1028" + }, + { + x: -174.72891235352, + y: 6134.8852539063, + code: "1029" + }, + { + x: -230.4298248291, + y: 6202.61328125, + code: "1030" + }, + { + x: -217.51998901367, + y: 6094.6030273438, + code: "1031" + }, + { + x: -279.58258056641, + y: 6155.5864257813, + code: "1032" + }, + { + x: -267.09341430664, + y: 6047.9760742188, + code: "1033" + }, + { + x: -330.22689819336, + y: 6108.1186523438, + code: "1034" + }, + { + x: -307.57904052734, + y: 6003.4912109375, + code: "1035" + }, + { + x: -378.52648925781, + y: 6057.66015625, + code: "1036" + }, + { + x: -352.06726074219, + y: 5955.1591796875, + code: "1037" + }, + { + x: -469.18984985352, + y: 6007.6665039063, + code: "1038" + }, + { + x: -469.39916992188, + y: 6099.9770507813, + code: "1039" + }, + { + x: -392.09533691406, + y: 6090.6328125, + code: "1040" + }, + { + x: -433.38018798828, + y: 6151.5864257813, + code: "1041" + }, + { + x: -346.1640625, + y: 6137.7934570313, + code: "1042" + }, + { + x: -374.97473144531, + y: 6208.701171875, + code: "1043" + }, + { + x: -305.74212646484, + y: 6179.0537109375, + code: "1044" + }, + { + x: -310.18420410156, + y: 6285.7768554688, + code: "1045" + }, + { + x: -254.49468994141, + y: 6231.5395507813, + code: "1046" + }, + { + x: -275.02786254883, + y: 6317.8974609375, + code: "1047" + }, + { + x: -210.02728271484, + y: 6272.1098632813, + code: "1048" + }, + { + x: -242.01275634766, + y: 6353.8388671875, + code: "1049" + }, + { + x: -175.75666809082, + y: 6312.71875, + code: "1050" + }, + { + x: -196.32781982422, + y: 6388.9331054688, + code: "1051" + }, + { + x: -123.28033447266, + y: 6359.677734375, + code: "1052" + }, + { + x: -167.09519958496, + y: 6425.7084960938, + code: "1053" + }, + { + x: -85.186561584473, + y: 6396.4775390625, + code: "1054" + }, + { + x: -119.70399475098, + y: 6479.458984375, + code: "1055" + }, + { + x: -42.021728515625, + y: 6441.3334960938, + code: "1056" + }, + { + x: -76.130386352539, + y: 6520.498046875, + code: "1057" + }, + { + x: -4.3509998321533, + y: 6476.8276367188, + code: "1058" + }, + { + x: -37.633438110352, + y: 6558.9624023438, + code: "1059" + }, + { + x: 34.14892578125, + y: 6519.5629882813, + code: "1060" + }, + { + x: 12.325073242188, + y: 6597.4770507813, + code: "1061" + }, + { + x: 74.358093261719, + y: 6555.9448242188, + code: "1062" + }, + { + x: 86.009437561035, + y: 6652.0385742188, + code: "1063" + }, + { + x: 10.838283538818, + y: 6674.4462890625, + code: "1064" + }, + { + x: -58.855964660645, + y: 6644.7534179688, + code: "1065" + }, + { + x: -112.46115112305, + y: 6602.3979492188, + code: "1066" + }, + { + x: -165.63864135742, + y: 6555.3393554688, + code: "1067" + }, + { + x: -270.03433227539, + y: 6632.380859375, + code: "1068" + }, + { + x: -201.63911437988, + y: 6511.2241210938, + code: "1069" + }, + { + x: -234.45983886719, + y: 6465.0366210938, + code: "1070" + }, + { + x: -273.66256713867, + y: 6420.53125, + code: "1071" + }, + { + x: -334.03851318359, + y: 6390.0073242188, + code: "1072" + }, + { + x: -386.79467773438, + y: 6351.9189453125, + code: "1073" + }, + { + x: -429.35076904297, + y: 6311.615234375, + code: "1074" + }, + { + x: -451.35699462891, + y: 6268.455078125, + code: "1075" + }, + { + x: -452.24588012695, + y: 6208.68359375, + code: "1076" + }, + { + x: -625.66784667969, + y: 6126.9111328125, + code: "1077" + }, + { + x: -568.72412109375, + y: 5962.5751953125, + code: "1078" + }, + { + x: -663.3935546875, + y: 5785.9438476563, + code: "1079" + }, + { + x: -745.76141357422, + y: 5593.6225585938, + code: "1080" + }, + { + x: -549.91040039063, + y: 5539.8134765625, + code: "1081" + }, + { + x: -521.32379150391, + y: 5301.9467773438, + code: "1082" + }, + { + x: -866.71606445313, + y: 5274.794921875, + code: "1083" + }, + { + x: -933.44134521484, + y: 5172.6826171875, + code: "1084" + }, + { + x: -1107.71484375, + y: 4918.1157226563, + code: "1085" + }, + { + x: -475.41387939453, + y: 4956.7563476563, + code: "1086" + }, + { + x: 460.43829345703, + y: 5615.6508789063, + code: "1087" + }, + { + x: -110.91479492188, + y: 4656.4223632813, + code: "1088" + }, + { + x: -133.98173522949, + y: 4332.919921875, + code: "1089" + }, + { + x: -257.10409545898, + y: 4196.37890625, + code: "1090" + }, + { + x: -238.30830383301, + y: 4471.0419921875, + code: "1091" + }, + { + x: -371.33514404297, + y: 4337.6025390625, + code: "1092" + }, + { + x: -447.29046630859, + y: 4500.8354492188, + code: "1093" + }, + { + x: -605.73547363281, + y: 4384.0766601563, + code: "1094" + }, + { + x: -648.34130859375, + y: 4479.708984375, + code: "1095" + }, + { + x: -837.50177001953, + y: 4377.8969726563, + code: "1096" + }, + { + x: -845.03680419922, + y: 4481.4077148438, + code: "1097" + }, + { + x: -1145.6888427734, + y: 4329.6235351563, + code: "1098" + }, + { + x: -1209.3537597656, + y: 4432.23046875, + code: "1099" + }, + { + x: -1674.9997558594, + y: 4365.5014648438, + code: "1100" + }, + { + x: -1623.6866455078, + y: 4518.2045898438, + code: "1101" + }, + { + x: -1918.1656494141, + y: 4536.6293945313, + code: "1102" + }, + { + x: -1742.2661132813, + y: 4626.1162109375, + code: "1103" + }, + { + x: -2160.5085449219, + y: 4566.4223632813, + code: "1104" + }, + { + x: -2372.5200195313, + y: 4271.5224609375, + code: "1105" + }, + { + x: 2170.171875, + y: -639.21948242188, + code: "9391" + }, + { + x: 2319.8759765625, + y: -512.19512939453, + code: "9392" + }, + { + x: 2502.6103515625, + y: -386.83917236328, + code: "9393" + }, + { + x: 2582.0139160156, + y: -645.29943847656, + code: "9394" + }, + { + x: 2790.5947265625, + y: -753.72619628906, + code: "9395" + } +]; + +// src/utils/postal/getPostal.ts +async function getPostal(playerPosition) { + const postals = await getPostalCodes(); + let nearestPoint = null; + let minDistance = null; + for (const point of postals) { + const distance = Math.sqrt( + (point.x - playerPosition.x) ** 2 + (point.y - playerPosition.y) ** 2 + ); + if (minDistance === null || distance < minDistance) { + nearestPoint = point; + minDistance = distance; + } + } + return nearestPoint ? nearestPoint.code : null; +} +async function getPostalCodes() { + var _a, _b; + try { + return (_b = (_a = exports["sna-postals"])["readPostalCodes"]) == null ? void 0 : _b.call(_a); + } catch (error) { + console.error(error); + return postals_default; + } +} + +// integrations/sync/server/flows/traffic-stop.ts +var usePostal = GetConvar("snailycad_use_postal", "false") === "true"; +RegisterCommand( + "sn-traffic-stop" /* TrafficStop */, + async (source2, description) => { + CancelEvent(); + const { data } = await cadRequest({ + method: "POST", + path: "/user?includeActiveUnit=true", + headers: { + userApiToken: getPlayerApiToken(source2) + } + }); + if (!(data == null ? void 0 : data.id)) { + emitNet("chat:addMessage", source2, { + args: [prependSnailyCAD("Please make sure you're authenticated. Use: ^5/sn-auth^7.")] + }); + return; + } + if (!data.unit) { + emitNet("chat:addMessage", source2, { + args: [ + prependSnailyCAD( + "No active unit found. Go on-duty first in the SnailyCAD web interface." + ) + ] + }); + return; + } + if (!description.length) { + emitNet("chat:addMessage", source2, { + args: [prependSnailyCAD("Must provide a description for the traffic stop.")] + }); + return; + } + const name = GetPlayerName(source2); + emitNet("sna-sync:request-traffic-stop-flow" /* RequestTrafficStopFlow */, source2, { + unitId: data.unit.id, + source: source2, + description, + name + }); + }, + false +); +onNet( + "sna-sync:on-traffic-stop-client-position" /* OnTrafficStopClientPosition */, + async (data) => { + CancelEvent(); + const postal = usePostal ? await getPostal(data.position) : null; + const { data: updatedCall } = await cadRequest({ + method: "POST", + path: "/911-calls", + isFromDispatch: false, + data: { + name: data.name, + location: data.streetName, + description: data.description.join(" "), + postal, + gtaMapPosition: { + x: data.position.x, + y: data.position.y, + z: data.position.z, + heading: data.position.heading + }, + assignedUnits: [{ id: data.unitId, isPrimary: true }] + }, + headers: { + userApiToken: getPlayerApiToken(data.source) + } + }); + if (!(updatedCall == null ? void 0 : updatedCall.id)) { + emitNet("chat:addMessage", data.source, { + args: [prependSnailyCAD("An error occurred while attaching you to the call.")] + }); + return; + } + emitNet("chat:addMessage", data.source, { + args: [ + prependSnailyCAD( + `Successfully created a traffic stop call and assigned you to the call with the case number: ^5#${updatedCall.caseNumber}^7.` + ) + ] + }); + } +); + +// integrations/sync/server/server.ts +function prependSnailyCAD(text) { + return `^8^*[SnailyCAD]:^7^r ${text}`; +} +function getPlayerApiToken(source2) { + const identifiers = getPlayerIds(source2, "object"); + const userLicense = identifiers.license; + const apiToken = GetResourceKvpString(`snailycad:${userLicense}:token`); + return apiToken; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + getPlayerApiToken, + prependSnailyCAD +}); +/*! Bundled license information: + +undici/lib/fetch/body.js: + (*! formdata-polyfill. MIT License. Jimmy Wärting *) + +undici/lib/websocket/frame.js: + (*! ws. MIT License. Einar Otto Stangvik *) +*/ diff --git a/resources/[ss]/ss-garage/.gitattributes b/resources/[ss]/ss-garage/.gitattributes new file mode 100644 index 0000000..dfe0770 --- /dev/null +++ b/resources/[ss]/ss-garage/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/resources/[ss]/ss-garage/README.md b/resources/[ss]/ss-garage/README.md new file mode 100644 index 0000000..8e02e7d --- /dev/null +++ b/resources/[ss]/ss-garage/README.md @@ -0,0 +1,80 @@ +

    About Us

    +We're a team with experience in FiveM and UI development, we've played FiveM for thousands of hours, and have a clear understanding of the players needs. That caused us to start Simplified Studios. + +[Simplified Studios Discord](https://discord.gg/KucTZ2nvET) is where you can find all of our updates, new scripts and maybe some sneak peaks if you're lucky! + +[Simplified Studios Tebex](https://simplified-studios.tebex.io/) is where you can buy our paid scripts! + +# Installation + +This script is really just plug n play, unless you want to use the Renewed Phone, then you need to follow the instructions below. +If you want pictures on the garages, you need to take pictures rename them as they are called in the config and put them into the html/img folder. + +# Use of Renewed Phone + +if you're using the default qb-phone you dont need to do anything, just plug n play. +if you're using Renewed Phone, you need to navigate to server/garage.lua and replace the current Callback "qb-phone:server:GetGarageVehicles" with this: + +```lua +QBCore.Functions.CreateCallback('qb-phone:server:GetGarageVehicles', function(source, cb) + local Player = QBCore.Functions.GetPlayer(source) + local Vehicles = {} + local vehdata + local result = exports.oxmysql:executeSync('SELECT * FROM player_vehicles WHERE citizenid = ?', {Player.PlayerData.citizenid}) + local garages = exports['ss-garage']:GetGarages() + if result[1] then + for _, v in pairs(result) do + local VehicleData = QBCore.Shared.Vehicles[v.vehicle] + local VehicleGarage = "None" + local enginePercent = round(v.engine / 10, 0) + local bodyPercent = round(v.body / 10, 0) + if v.garage then + if garages[v.garage] then + VehicleGarage = garages[v.garage]["label"] + else + VehicleGarage = v.garage + end + end + + local VehicleState = "In" + if v.state == 0 then + VehicleState = "Out" + elseif v.state == 2 then + VehicleState = "Impounded" + end + + if VehicleData["brand"] then + vehdata = { + fullname = VehicleData["brand"] .. " " .. VehicleData["name"], + brand = VehicleData["brand"], + model = VehicleData["name"], + plate = v.plate, + garage = VehicleGarage, + state = VehicleState, + fuel = v.fuel, + engine = enginePercent, + body = bodyPercent, + paymentsleft = v.paymentsleft + } + else + vehdata = { + fullname = VehicleData["name"], + brand = VehicleData["name"], + model = VehicleData["name"], + plate = v.plate, + garage = VehicleGarage, + state = VehicleState, + fuel = v.fuel, + engine = enginePercent, + body = bodyPercent, + paymentsleft = v.paymentsleft + } + end + Vehicles[#Vehicles+1] = vehdata + end + cb(Vehicles) + else + cb(nil) + end +end) +``` diff --git a/resources/[ss]/ss-garage/client/cl_functions.lua b/resources/[ss]/ss-garage/client/cl_functions.lua new file mode 100644 index 0000000..396bd17 --- /dev/null +++ b/resources/[ss]/ss-garage/client/cl_functions.lua @@ -0,0 +1,313 @@ +local QBCore = exports['qb-core']:GetCoreObject() +local garageZones = {} + +function GetSpawnPoint(garage) + local location = nil + for k,v in pairs(Config.Garages[garage].spawnPoint) do + local isOccupied = IsPositionOccupied( v.x, v.y, v.z, 5.0, false, true, false, false, false, 0, false ) + if not isOccupied then + location = v + break + end + end + if not location then + QBCore.Functions.Notify(Lang:t('error.vehicle_occupied'), 'error') + end + return location +end + +function doCarDamage(currentVehicle, stats, props) + local engine = stats.engine + 0.0 + local body = stats.body + 0.0 + SetVehicleEngineHealth(currentVehicle, engine) + SetVehicleBodyHealth(currentVehicle, body) + if not next(props) then return end + if props.doorStatus then + for k, v in pairs(props.doorStatus) do + if v then SetVehicleDoorBroken(currentVehicle, tonumber(k), true) end + end + end + if props.tireBurstState then + for k, v in pairs(props.tireBurstState) do + if v then SetVehicleTyreBurst(currentVehicle, tonumber(k), true) end + end + end + -- Buggy, så slået fra. + -- if props.windowStatus then + -- for k, v in pairs(props.windowStatus) do + -- if not v then SmashVehicleWindow(currentVehicle, tonumber(k)) end + -- end + -- end +end + +local function CreateBlips(setloc) + local Garage = AddBlipForCoord(setloc.takeVehicle.x, setloc.takeVehicle.y, setloc.takeVehicle.z) + SetBlipSprite(Garage, setloc.blipNumber) + SetBlipDisplay(Garage, 4) + SetBlipScale(Garage, 0.60) + SetBlipAsShortRange(Garage, true) + SetBlipColour(Garage, setloc.blipColor) + BeginTextCommandSetBlipName('STRING') + AddTextComponentSubstringPlayerName(setloc.blipName) + EndTextCommandSetBlipName(Garage) +end + +function CheckPlayers(vehicle) + for i = -1, 5, 1 do + local seat = GetPedInVehicleSeat(vehicle, i) + if seat then + TaskLeaveVehicle(seat, vehicle, 0) + end + end + Wait(1500) + QBCore.Functions.DeleteVehicle(vehicle) +end + +function IsVehicleAllowed(classList, vehicle) + for _, class in ipairs(classList) do + if GetVehicleClass(vehicle) == class then + return true + end + end + return false +end + +function DepositVehicle(veh, data) + local plate = QBCore.Functions.GetPlate(veh) + QBCore.Functions.TriggerCallback('qb-garages:server:canDeposit', function(canDeposit) + if canDeposit then + local bodyDamage = math.ceil(GetVehicleBodyHealth(veh)) + local engineDamage = math.ceil(GetVehicleEngineHealth(veh)) + local totalFuel = exports[Config.FuelSystem]:GetFuel(veh) + TriggerServerEvent('qb-mechanicjob:server:SaveVehicleProps', QBCore.Functions.GetVehicleProperties(veh)) + TriggerServerEvent('qb-garages:server:updateVehicleStats', plate, totalFuel, engineDamage, bodyDamage) + CheckPlayers(veh) + if plate then TriggerServerEvent('qb-garages:server:UpdateOutsideVehicle', plate, nil) end + QBCore.Functions.Notify(Lang:t('success.vehicle_parked'), 'success', 4500) + else + QBCore.Functions.Notify(Lang:t('error.not_owned'), 'error', 3500) + end + end, plate, data.type, data.indexgarage, 1) +end + +function CreateZone(index, garage, zoneType) + local zone = CircleZone:Create(garage.takeVehicle, 10.0, { + name = zoneType .. '_' .. index, + debugPoly = false, + data = { + indexgarage = index, + type = garage.type, + category = garage.category + } + }) + return zone +end + +function CreateBlipsZones() + PlayerData = QBCore.Functions.GetPlayerData() + PlayerGang = PlayerData.gang + PlayerJob = PlayerData.job + + for index, garage in pairs(Config.Garages) do + local zone + if garage.showBlip then + CreateBlips(garage) + end + if garage.type == 'job' and (PlayerJob.name == garage.job or PlayerJob.type == garage.jobType) then + zone = CreateZone(index, garage, 'job') + elseif garage.type == 'gang' and PlayerGang.name == garage.job then + zone = CreateZone(index, garage, 'gang') + elseif garage.type == 'depot' then + zone = CreateZone(index, garage, 'depot') + elseif garage.type == 'public' then + zone = CreateZone(index, garage, 'public') + end + + if zone then + garageZones[#garageZones + 1] = zone + end + end + + local comboZone = ComboZone:Create(garageZones, { name = 'garageCombo', debugPoly = false }) + + comboZone:onPlayerInOut(function(isPointInside, _, zone) + if isPointInside then + listenForKey = true + currentZone = zone + CreateThread(function() + while listenForKey do + Wait(0) + if IsControlJustReleased(0, 38) then + if GetVehiclePedIsUsing(PlayerPedId()) ~= 0 then + if zone.data.type == 'depot' then return end + local currentVehicle = GetVehiclePedIsUsing(PlayerPedId()) + if not IsVehicleAllowed(zone.data.category, currentVehicle) then + QBCore.Functions.Notify(Lang:t('error.not_correct_type'), 'error', 3500) + return + end + DepositVehicle(currentVehicle, zone.data) + else + TriggerEvent('ss-garage:client:openGarage') + end + end + end + end) + + local displayText = Lang:t('info.car_e') + if zone.data.vehicle == 'sea' then + displayText = Lang:t('info.sea_e') + elseif zone.data.vehicle == 'air' then + displayText = Lang:t('info.air_e') + elseif zone.data.vehicle == 'rig' then + displayText = Lang:t('info.rig_e') + elseif zone.data.type == 'depot' then + displayText = Lang:t('info.depot_e') + end + exports['qb-core']:DrawText(displayText, 'top') + else + listenForKey = false + currentZone = nil + exports['qb-core']:HideText() + end + end) +end + +local houseGarageZones = {} +local listenForKeyHouse = false +local houseComboZones = nil + +function CreateHouseZone(index, garage, zoneType) + local houseZone = CircleZone:Create(garage.takeVehicle, 5.0, { + name = zoneType .. '_' .. index, + debugPoly = false, + data = { + indexgarage = index, + type = zoneType, + label = garage.label + } + }) + + if houseZone then + houseGarageZones[#houseGarageZones + 1] = houseZone + + if not houseComboZones then + houseComboZones = ComboZone:Create(houseGarageZones, { name = 'houseComboZones', debugPoly = false }) + else + houseComboZones:AddZone(houseZone) + end + end + + houseComboZones:onPlayerInOut(function(isPointInside, _, zone) + if isPointInside then + listenForKeyHouse = true + currentZone = zone + CreateThread(function() + while listenForKeyHouse do + Wait(0) + if IsControlJustReleased(0, 38) then + if GetVehiclePedIsUsing(PlayerPedId()) ~= 0 then + local currentVehicle = GetVehiclePedIsUsing(PlayerPedId()) + DepositVehicle(currentVehicle, zone.data) + else + TriggerEvent('ss-garage:client:openGarage') + end + end + end + end) + exports['qb-core']:DrawText(Lang:t('info.house_garage'), 'top') + else + listenForKeyHouse = false + currentZone = nil + exports['qb-core']:HideText() + end + end) +end + +local function ZoneExists(zoneName) + for _, zone in ipairs(houseGarageZones) do + if zone.name == zoneName then + return true + end + end + return false +end + +local function RemoveHouseZone(zoneName) + local removedZone = houseComboZones:RemoveZone(zoneName) + if removedZone then + removedZone:destroy() + end + for index, zone in ipairs(houseGarageZones) do + if zone.name == zoneName then + table.remove(houseGarageZones, index) + break + end + end +end + +RegisterNetEvent('qb-garages:client:setHouseGarage', function(house, hasKey) -- event sent periodically from housing + if not house then return end + local formattedHouseName = string.lower(house) + local zoneName = 'house_' .. formattedHouseName + if Config.Garages[formattedHouseName] then + if hasKey and not ZoneExists(zoneName) then + CreateHouseZone(formattedHouseName, Config.Garages[formattedHouseName], 'house') + elseif not hasKey and ZoneExists(zoneName) then + RemoveHouseZone(zoneName) + end + end + TriggerServerEvent('ss-garage:server:setHouseGarages', Config.Garages) +end) + +RegisterNetEvent('qb-garages:client:houseGarageConfig', function(houseGarages) + for _, garageConfig in pairs(houseGarages) do + local formattedHouseName = _ + if garageConfig.takeVehicle and garageConfig.takeVehicle.x and garageConfig.takeVehicle.y and garageConfig.takeVehicle.z and garageConfig.takeVehicle.w then + Config.Garages[formattedHouseName] = { + takeVehicle = vector3(garageConfig.takeVehicle.x, garageConfig.takeVehicle.y, garageConfig.takeVehicle.z), + spawnPoint = { + vector4(garageConfig.takeVehicle.x, garageConfig.takeVehicle.y, garageConfig.takeVehicle.z, garageConfig.takeVehicle.w) + }, + label = garageConfig.label, + type = 'house', + } + end + end + TriggerServerEvent('ss-garage:server:setHouseGarages', Config.Garages) +end) + +RegisterNetEvent('qb-garages:client:addHouseGarage', function(house, garageInfo) -- event from housing on garage creation + local formattedHouseName = string.lower(house) + Config.Garages[formattedHouseName] = { + takeVehicle = vector3(garageInfo.takeVehicle.x, garageInfo.takeVehicle.y, garageInfo.takeVehicle.z), + spawnPoint = { + vector4(garageInfo.takeVehicle.x, garageInfo.takeVehicle.y, garageInfo.takeVehicle.z, garageInfo.takeVehicle.w) + }, + label = garageInfo.label, + type = 'house', + } + TriggerServerEvent('ss-garage:server:setHouseGarages', Config.Garages) +end) + +RegisterNetEvent('qb-garages:client:removeHouseGarage', function(house) + Config.Garages[house] = nil +end) + +-- Handlers + +AddEventHandler('QBCore:Client:OnPlayerLoaded', function() + CreateBlipsZones() +end) + +AddEventHandler('onResourceStart', function(res) + if res ~= GetCurrentResourceName() then return end + CreateBlipsZones() +end) + +RegisterNetEvent('QBCore:Client:OnGangUpdate', function(gang) + PlayerGang = gang +end) + +RegisterNetEvent('QBCore:Client:OnJobUpdate', function(job) + PlayerJob = job +end) \ No newline at end of file diff --git a/resources/[ss]/ss-garage/client/cl_main.lua b/resources/[ss]/ss-garage/client/cl_main.lua new file mode 100644 index 0000000..dafdffc --- /dev/null +++ b/resources/[ss]/ss-garage/client/cl_main.lua @@ -0,0 +1,65 @@ +local QBCore = exports['qb-core']:GetCoreObject() + +RegisterNetEvent('ss-garage:client:openGarage', function() + QBCore.Functions.TriggerCallback('ss-garage:server:GetVehicles', function(vehicles) + if not vehicles then QBCore.Functions.Notify('Du har ingen køretøjer i denne garage.', 'error') return end + SendNUIMessage({ + type = "open", + vehicles = vehicles, + garages = Config.Garages, + garageindex = currentZone.data.indexgarage, + }) + SetNuiFocus(true, true) + end, currentZone.data.indexgarage, currentZone.data.type, currentZone.data.category) +end) + +RegisterNUICallback('takeOut', function(data, cb) + local dataveh = data.vehicle + local location = GetSpawnPoint(currentZone.data.indexgarage) + if not location then return end + + if dataveh.depotprice ~= 0 then + local Player = QBCore.Functions.GetPlayerData() + local cash = Player.money["cash"] + local bank = Player.money["bank"] + + if cash >= dataveh.depotprice then + Player.Functions.RemoveMoney("cash", dataveh.depotprice) + QBCore.Functions.Notify('Du betalte gebyret kontant', 'success', 4500) + elseif bank >= dataveh.depotprice then + Player.Functions.RemoveMoney("bank", dataveh.depotprice) + QBCore.Functions.Notify('Gebyret blev betalt gennem banken!', 'success', 4500) + else + QBCore.Functions.Notify('Du har ikke råd...', 'error', 3500) + return + end + end + + QBCore.Functions.TriggerCallback('ss-garage:server:SpawnVehicle', function(success, netid, properties, plate, fuel, engine, body) + while not NetworkDoesNetworkIdExist(netid) do Wait(10) end + local veh = NetworkGetEntityFromNetworkId(netid) + QBCore.Functions.SetVehicleProperties(veh, properties) + exports[Config.FuelSystem]:SetFuel(veh, fuel) + doCarDamage(veh, {engine = engine, fuel = fuel, body = body}, properties) + TriggerEvent('vehiclekeys:client:SetOwner', plate) + end, dataveh.plate, dataveh.spawn, location) + SetNuiFocus(false, false) + cb('ok') +end) + +RegisterNUICallback('transfer', function(data, cb) + TriggerServerEvent('ss-garage:server:TransferVehicle', data) + SetNuiFocus(false, false) + cb('ok') +end) + +RegisterNUICallback('swap', function(data, cb) + TriggerServerEvent('ss-garage:server:SwapVehicle', data) + SetNuiFocus(false, false) + cb('ok') +end) + +RegisterNUICallback('close', function(data, cb) + SetNuiFocus(false, false) + cb('ok') +end) \ No newline at end of file diff --git a/resources/[ss]/ss-garage/config.lua b/resources/[ss]/ss-garage/config.lua new file mode 100644 index 0000000..96bbe62 --- /dev/null +++ b/resources/[ss]/ss-garage/config.lua @@ -0,0 +1,610 @@ +Config = {} +Config.realisticGarage = true -- If true, people can only take out vehicles the place they parked them. +Config.ShouldTeleport = true -- If true, people will be teleported to the vehicle when they take it out. +Config.FuelSystem = 'qb-fuel' +Config.VehicleClass = { + all = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 }, + car = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 18, 22 }, + air = { 15, 16 }, + sea = { 14 }, + rig = { 10, 11, 17, 19, 20 } +} + +Config.Garages = { + motelgarage = { + label = 'Motel Garage', + takeVehicle = vector3(274.29, -334.15, 44.92), + spawnPoint = { + vector4(265.96, -332.3, 44.51, 250.68), + vector4(282.883, -342.1992, 44.2761, 250.8604), + vector4(267.5406, -328.8379, 44.2761, 250.7557), + vector4(269.149, -325.8365, 44.2763, 67.0302), + vector4(269.6346, -322.39, 44.2762, 249.4603), + vector4(271.4303, -319.1182, 44.2765, 244.1053), + vector4(283.509, -323.7081, 44.2763, 70.6249), + vector4(282.0807, -327.1404, 44.2763, 75.4733), + vector4(280.4306, -330.3371, 44.2763, 62.2022), + vector4(279.1444, -333.3873, 44.2763, 69.1845), + vector4(278.8283, -336.8015, 44.2758, 69.7977), + vector4(277.2846, -340.1966, 44.2764, 67.612), + vector4(294.4673, -346.4664, 44.2763, 69.6834), + vector4(295.1735, -342.9712, 44.2762, 68.7405), + vector4(296.5222, -339.7621, 44.276, 70.7631), + vector4(297.9995, -336.6969, 44.2759, 70.5789), + vector4(299.3056, -333.4106, 44.2764, 70.6955), + vector4(300.1339, -330.0648, 44.2764, 70.6679), + }, + showBlip = true, + blipName = 'Garage', + blipNumber = 357, + blipColor = 3, + type = 'public', -- public, gang, job, depot + canTransfer = true, + category = Config.VehicleClass['car'] + }, + casinogarage = { + label = 'Kasino Garage', + takeVehicle = vector3(883.96, -4.71, 78.76), + spawnPoint = { + vector4(895.39, -4.75, 78.35, 146.85), + }, + showBlip = true, + blipName = 'Garage', + blipNumber = 357, + blipColor = 3, + type = 'public', + canTransfer = true, + category = Config.VehicleClass['car'] + }, + sapcounsel = { + label = 'San Andreas Garage', + takeVehicle = vector3(-330.01, -780.33, 33.96), + spawnPoint = { + vector4(-341.57, -767.45, 33.56, 92.61), + vector4(-357.4557, -775.9738, 33.3235, 270.8601), + vector4(-356.9517, -770.8321, 33.3236, 89.8937), + vector4(-357.679, -767.6159, 33.3235, 270.2125), + vector4(-357.679, -767.6159, 33.3235, 270.2125), + vector4(-342.1111, -760.3303, 33.3249, 270.4968), + vector4(-337.5381, -751.2196, 33.324, 357.0646), + vector4(-357.6219, -753.699, 33.324, 270.6099), + vector4(-331.7151, -750.8432, 33.3236, 182.1149), + vector4(-323.2357, -752.1731, 33.3236, 333.9358), + vector4(-317.3772, -754.2914, 33.3236, 158.9068), + vector4(-308.8079, -757.314, 33.3236, 337.8231), + vector4(-302.6512, -742.9934, 33.3204, 339.1781), + vector4(-302.6133, -759.8962, 33.3238, 342.1106), + vector4(-296.9796, -744.9661, 33.3198, 340.7576), + vector4(-307.0268, -772.5587, 33.3199, 339.7787), + vector4(-314.5116, -770.5553, 33.3195, 180.3153), + }, + showBlip = true, + blipName = 'Garage', + blipNumber = 357, + blipColor = 3, + type = 'public', + canTransfer = true, + category = Config.VehicleClass['car'] + }, + spanishave = { + label = 'Spanish Ave Garage', + takeVehicle = vector3(-1160.86, -741.41, 19.63), + spawnPoint = { + vector4(-1145.2, -745.42, 19.26, 108.22) + }, + showBlip = true, + blipName = 'Garage', + blipNumber = 357, + blipColor = 3, + type = 'public', + canTransfer = true, + category = Config.VehicleClass['car'] + }, + caears24 = { + label = 'Caears 24 Garage', + takeVehicle = vector3(69.84, 12.6, 68.96), + spawnPoint = { + vector4(60.8, 17.54, 68.82, 339.7), + }, + showBlip = true, + blipName = 'Garage', + blipNumber = 357, + blipColor = 3, + type = 'public', + canTransfer = true, + category = Config.VehicleClass['car'] + }, + caears242 = { + label = 'Caears 24 Garage', + takeVehicle = vector3(-453.7, -786.78, 30.56), + spawnPoint = { + vector4(-472.39, -787.71, 30.14, 180.52), + vector4(-467.3271, -794.2883, 29.9037, 271.1952), + vector4(-460.5847, -797.3, 29.9009, 270.1559), + vector4(-457.2117, -780.4339, 29.917, 272.5331), + vector4(-457.2724, -774.8185, 29.9175, 92.8342), + vector4(-465.1874, -774.9702, 29.9173, 90.0228), + vector4(-465.6922, -780.3431, 29.9172, 270.9347), + vector4(-477.4666, -787.4562, 29.9184, 271.7519), + }, + showBlip = true, + blipName = 'Garage', + blipNumber = 357, + blipColor = 3, + type = 'public', + canTransfer = true, + category = Config.VehicleClass['car'] + }, + lagunapi = { + label = 'Laguna Garage', + takeVehicle = vector3(364.37, 297.83, 103.49), + spawnPoint = { + vector4(375.09, 294.66, 102.86, 164.04) + }, + showBlip = true, + blipName = 'Garage', + blipNumber = 357, + blipColor = 3, + type = 'public', + canTransfer = true, + category = Config.VehicleClass['car'] + }, + airportp = { + label = 'Lufthavn Garage', + takeVehicle = vector3(-773.12, -2033.04, 8.88), + spawnPoint = { + vector4(-779.77, -2040.18, 8.47, 315.34) + }, + showBlip = true, + blipName = 'Garage', + blipNumber = 357, + blipColor = 3, + type = 'public', + canTransfer = true, + category = Config.VehicleClass['car'] + }, + beachp = { + label = 'Strand Garage', + takeVehicle = vector3(-1185.32, -1500.64, 4.38), + spawnPoint = { + vector4(-1188.14, -1487.95, 3.97, 124.06) + }, + showBlip = true, + blipName = 'Garage', + blipNumber = 357, + blipColor = 3, + type = 'public', + canTransfer = true, + category = Config.VehicleClass['car'] + }, + themotorhotel = { + label = 'The Motor Hotel Garage', + takeVehicle = vector3(1137.77, 2663.54, 37.9), + spawnPoint = { + vector4(1127.7, 2647.84, 37.58, 1.41) + }, + showBlip = true, + blipName = 'Garage', + blipNumber = 357, + blipColor = 3, + type = 'public', + canTransfer = true, + category = Config.VehicleClass['car'] + }, + liqourparking = { + label = 'Liqour Garage', + takeVehicle = vector3(883.99, 3649.67, 32.87), + spawnPoint = { + vector4(898.38, 3649.41, 32.36, 90.75) + }, + showBlip = true, + blipName = 'Garage', + blipNumber = 357, + blipColor = 3, + type = 'public', + canTransfer = true, + category = Config.VehicleClass['car'] + }, + shoreparking = { + label = 'Shore Garage', + takeVehicle = vector3(1737.03, 3718.88, 34.05), + spawnPoint = { + vector4(1725.4, 3716.78, 34.15, 20.54) + }, + showBlip = true, + blipName = 'Garage', + blipNumber = 357, + blipColor = 3, + type = 'public', + canTransfer = true, + category = Config.VehicleClass['car'] + }, + haanparking = { + label = 'Bell Farms Garage', + takeVehicle = vector3(76.88, 6397.3, 31.23), + spawnPoint = { + vector4(62.15, 6403.41, 30.81, 211.38) + }, + showBlip = true, + blipName = 'Garage', + blipNumber = 357, + blipColor = 3, + type = 'public', + canTransfer = false, + category = Config.VehicleClass['car'] + }, + dumbogarage = { + label = 'Dumbo Private Garage', + takeVehicle = vector3(165.75, -3227.2, 5.89), + spawnPoint = { + vector4(168.34, -3236.1, 5.43, 272.05) + }, + showBlip = true, + blipName = 'Garage', + blipNumber = 357, + blipColor = 3, + type = 'public', + canTransfer = false, + category = Config.VehicleClass['car'] + }, + pillboxgarage = { + label = 'Pillbox Garage', + takeVehicle = vector3(213.2, -796.05, 30.86), + spawnPoint = { + vector4(208.0369,-795.8985,30.3507,249.2093), + vector4(210.226, -791.0077, 30.3061, 248.5806), + vector4(211.5416, -786.0048, 30.2899, 248.165), + vector4(213.4844, -780.8046, 30.2643, 248.5822), + vector4(215.5396, -775.9241, 30.2391, 249.4368), + vector4(217.0861, -770.852, 30.2283, 249.9718), + vector4(219.1092, -765.7935, 30.2166, 249.7753), + vector4(216.5972, -801.837, 30.3747, 69.672), + vector4(218.286, -796.6944, 30.3539, 68.0749), + vector4(220.107, -791.6907, 30.3425, 69.9591), + vector4(222.7271, -786.7191, 30.3557, 69.189), + vector4(223.9891, -781.738, 30.1123, 67.8247), + vector4(225.7642, -776.7175, 30.1225, 69.919), + vector4(227.3384, -771.6263, 30.1372, 68.7111), + vector4(220.683, -809.4442, 30.0114, 249.1702), + vector4(222.1926, -804.1495, 30.0272, 250.0585), + vector4(223.7662, -799.1116, 30.0173, 248.7341), + vector4(225.7113, -794.1168, 30.023, 250.1617), + vector4(227.6714, -789.1185, 30.0382, 249.4263), + vector4(229.8159, -784.0559, 30.0515, 249.9496), + vector4(231.3116, -778.8309, 30.0669, 251.3097), + vector4(233.2657, -773.8463, 30.0939, 248.8269), + vector4(234.9788, -800.2876, 29.8276, 68.0544), + vector4(236.8822, -795.0956, 29.8564, 68.6202), + vector4(238.6287, -790.1068, 29.8856, 69.3068), + vector4(240.3504, -785.0618, 29.9364, 68.9169), + vector4(242.1495, -779.8129, 29.9797, 67.5336), + vector4(243.9969, -774.7357, 30.0432, 69.2771), + }, + showBlip = true, + blipName = 'Garage', + blipNumber = 357, + blipColor = 3, + type = 'public', + canTransfer = true, + category = Config.VehicleClass['car'] + }, + grapeseedgarage = { + label = 'Grapeseed Garage', + takeVehicle = vector3(2552.68, 4671.8, 33.95), + spawnPoint = { + vector4(2550.17, 4681.96, 33.81, 17.05) + }, + showBlip = true, + blipName = 'Garage', + blipNumber = 357, + blipColor = 3, + type = 'public', + canTransfer = true, + category = Config.VehicleClass['car'] + }, + depotLot = { + label = 'Depot Lot', + takeVehicle = vector3(401.76, -1632.57, 29.29), + spawnPoint = { + vector4(396.55, -1643.93, 28.88, 321.91) + }, + showBlip = true, + blipName = 'Depot Lot', + blipNumber = 68, + blipColor = 3, + type = 'depot', + canTransfer = false, + category = Config.VehicleClass['car'] + }, + ballas = { + label = 'Ballas', + takeVehicle = vector3(87.51, -1969.1, 20.75), + spawnPoint = { + vector4(93.78, -1961.73, 20.34, 319.11) + }, + showBlip = false, + blipName = 'Ballas', + blipNumber = 357, + blipColor = 3, + type = 'gang', + canTransfer = false, + category = Config.VehicleClass['car'], --car, air, sea, rig + job = 'ballas', + jobType = 'ballas' + }, + families = { + label = 'Families', + takeVehicle = vector3(-23.89, -1436.03, 30.65), + spawnPoint = { + vector4(-25.47, -1445.76, 30.24, 178.5) + }, + showBlip = false, + blipName = 'Families', + blipNumber = 357, + blipColor = 3, + type = 'gang', + canTransfer = false, + category = Config.VehicleClass['car'], --car, air, sea, rig + job = 'families', + jobType = 'families' + }, + lostmc = { + label = 'Lost MC', + takeVehicle = vector3(985.83, -138.14, 73.09), + spawnPoint = { + vector4(977.65, -133.02, 73.34, 59.39) + }, + showBlip = false, + blipName = 'Lost MC', + blipNumber = 357, + blipColor = 3, + type = 'gang', + canTransfer = false, + category = Config.VehicleClass['car'], --car, air, sea, rig + job = 'lostmc', + jobType = 'lostmc' + }, + cartel = { + label = 'Cartel', + takeVehicle = vector3(1411.67, 1117.8, 114.84), + spawnPoint = { + vector4(1403.01, 1118.25, 114.84, 88.69) + }, + showBlip = false, + blipName = 'Cartel', + blipNumber = 357, + blipColor = 3, + type = 'gang', + canTransfer = false, + category = Config.VehicleClass['car'], + job = 'cartel', + jobType = 'cartel' + }, + police = { + label = 'Police', + takeVehicle = vector3(462.83, -1019.52, 28.1), + spawnPoint = { + vector4(446.16, -1025.79, 28.23, 6.59) + }, + showBlip = false, + blipName = 'Police', + blipNumber = 357, + blipColor = 3, + type = 'job', + canTransfer = false, + category = Config.VehicleClass['car'], --car, air, sea, rig + job = 'police', + jobType = 'leo' + }, + intairport = { + label = 'Airport Hangar', + takeVehicle = vector3(-979.06, -2995.48, 13.95), + spawnPoint = { + vector4(-998.37, -2985.01, 13.95, 61.09) + }, + showBlip = true, + blipName = 'Hangar', + blipNumber = 360, + blipColor = 3, + type = 'public', + canTransfer = false, + category = Config.VehicleClass['air'] + }, + higginsheli = { + label = 'Higgins Helitours', + takeVehicle = vector3(-722.15, -1472.79, 5.0), + spawnPoint = { + vector4(-745.22, -1468.72, 5.39, 319.84), + vector4(-724.36, -1443.61, 5.39, 135.78) + }, + showBlip = true, + blipName = 'Hangar', + blipNumber = 360, + blipColor = 3, + type = 'public', + canTransfer = false, + category = Config.VehicleClass['air'] + }, + airsshores = { + label = 'Sandy Shores Hangar', + takeVehicle = vector3(1737.89, 3288.13, 41.14), + spawnPoint = { + vector4(1742.83, 3266.83, 41.24, 102.64) + }, + showBlip = true, + blipName = 'Hangar', + blipNumber = 360, + blipColor = 3, + type = 'public', + canTransfer = false, + category = Config.VehicleClass['air'] + }, + airzancudo = { + label = 'Fort Zancudo Hangar', + takeVehicle = vector3(-1828.25, 2975.44, 32.81), + spawnPoint = { + vector4(-1828.25, 2975.44, 32.81, 57.24) + }, + showBlip = true, + blipName = 'Hangar', + blipNumber = 360, + blipColor = 3, + type = 'public', + canTransfer = false, + category = Config.VehicleClass['air'] + }, + airdepot = { + label = 'Air Depot', + takeVehicle = vector3(-1270.01, -3377.53, 14.33), + spawnPoint = { + vector4(-1270.01, -3377.53, 14.33, 329.25) + }, + showBlip = true, + blipName = 'Air Depot', + blipNumber = 359, + blipColor = 3, + type = 'depot', + canTransfer = false, + category = Config.VehicleClass['air'] + }, + lsymc = { + label = 'LSYMC Boathouse', + takeVehicle = vector3(-785.95, -1497.84, -0.09), + spawnPoint = { + vector4(-796.64, -1502.6, -0.09, 111.49) + }, + showBlip = true, + blipName = 'Bådhus', + blipNumber = 356, + blipColor = 3, + type = 'public', + canTransfer = false, + category = Config.VehicleClass['sea'] + }, + paleto = { + label = 'Paleto Boathouse', + takeVehicle = vector3(-278.21, 6638.13, 7.55), + spawnPoint = { + vector4(-289.2, 6637.96, 1.01, 45.5) + }, + showBlip = true, + blipName = 'Bådhus', + blipNumber = 356, + blipColor = 3, + type = 'public', + canTransfer = false, + category = Config.VehicleClass['sea'] + }, + millars = { + label = 'Millars Boathouse', + takeVehicle = vector3(1298.56, 4212.42, 33.25), + spawnPoint = { + vector4(1297.82, 4209.61, 30.12, 253.5) + }, + showBlip = true, + blipName = 'Bådhus', + blipNumber = 356, + blipColor = 3, + type = 'public', + canTransfer = false, + category = Config.VehicleClass['sea'] + }, + seadepot = { + label = 'LSYMC Depot', + takeVehicle = vector3(-742.95, -1407.58, 5.5), + spawnPoint = { + vector4(-729.77, -1355.49, 1.19, 142.5) + }, + showBlip = true, + blipName = 'LSYMC Depot', + blipNumber = 356, + blipColor = 3, + type = 'depot', + canTransfer = false, + category = Config.VehicleClass['sea'] + }, + rigdepot = { + label = 'Big Rig Depot', + takeVehicle = vector3(2334.42, 3118.62, 48.2), + spawnPoint = { + vector4(2324.57, 3117.79, 48.21, 4.05) + }, + showBlip = true, + blipName = 'Big Rig Depot', + blipNumber = 68, + blipColor = 2, + type = 'depot', + canTransfer = false, + category = Config.VehicleClass['rig'] + }, + dumborigparking = { + label = 'Dumbo Big Rig Parking', + takeVehicle = vector3(161.23, -3188.73, 5.97), + spawnPoint = { + vector4(167.0, -3203.89, 5.94, 271.27) + }, + showBlip = true, + blipName = 'Big Rig Parking', + blipNumber = 357, + blipColor = 2, + type = 'public', + canTransfer = false, + category = Config.VehicleClass['rig'] + }, + popsrigparking = { + label = 'Pop\'s Big Rig Parking', + takeVehicle = vector3(137.67, 6632.99, 31.67), + spawnPoint = { + vector4(127.69, 6605.84, 31.93, 223.67) + }, + showBlip = true, + blipName = 'Big Rig Parking', + blipNumber = 357, + blipColor = 2, + type = 'public', + canTransfer = false, + category = Config.VehicleClass['rig'] + }, + ronsrigparking = { + label = 'Ron\'s Big Rig Parking', + takeVehicle = vector3(-2529.37, 2342.67, 33.06), + spawnPoint = { + vector4(-2521.61, 2326.45, 33.13, 88.7) + }, + showBlip = true, + blipName = 'Big Rig Parking', + blipNumber = 357, + blipColor = 2, + type = 'public', + canTransfer = false, + category = Config.VehicleClass['rig'] + }, + ronsrigparking2 = { + label = 'Ron\'s Big Rig Parking', + takeVehicle = vector3(2561.67, 476.68, 108.49), + spawnPoint = { + vector4(2561.67, 476.68, 108.49, 177.86) + }, + showBlip = true, + blipName = 'Big Rig Parking', + blipNumber = 357, + blipColor = 2, + type = 'public', + canTransfer = false, + category = Config.VehicleClass['rig'] + }, + ronsrigparking3 = { + label = 'Ron\'s Big Rig Parking', + takeVehicle = vector3(-41.24, -2550.63, 6.01), + spawnPoint = { + vector4(-39.39, -2527.81, 6.08, 326.18) + }, + showBlip = true, + blipName = 'Big Rig Parking', + blipNumber = 357, + blipColor = 2, + type = 'public', + canTransfer = false, + category = Config.VehicleClass['rig'] + }, +} \ No newline at end of file diff --git a/resources/[ss]/ss-garage/fxmanifest.lua b/resources/[ss]/ss-garage/fxmanifest.lua new file mode 100644 index 0000000..52d7fc9 --- /dev/null +++ b/resources/[ss]/ss-garage/fxmanifest.lua @@ -0,0 +1,35 @@ +fx_version 'cerulean' +game 'gta5' +lua54 'yes' +description 'Simplified Studios Garage' +version '1.2.0' + +ui_page 'html/index.html' + +shared_scripts { + '@qb-core/shared/locale.lua', + 'locales/en.lua', + 'locales/*.lua', + 'config.lua', +} + +client_scripts { + '@PolyZone/client.lua', + '@PolyZone/CircleZone.lua', + '@PolyZone/ComboZone.lua', + 'client/cl_functions.lua', + 'client/cl_main.lua', +} + +server_scripts { + 'server/sv_main.lua', + 'server/sv_functions.lua', +} + +files { + 'html/img/*.png', + 'html/img/*.jpg', + 'html/index.html', + 'html/style.css', + 'html/script.js', +} \ No newline at end of file diff --git a/resources/[ss]/ss-garage/html/img/caears24.png b/resources/[ss]/ss-garage/html/img/caears24.png new file mode 100644 index 0000000000000000000000000000000000000000..58f6c14561440e4232e60f6a53a2a1522fb97f07 GIT binary patch literal 338342 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

    PXKz*8QGTN<*k$~S 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

    j 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

    BqJ|DP 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%0DG3QOwQI-cj|Vx6F9t4(ozN@U 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