@stablyai/playwright-test 2.0.6 → 2.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/.pnpm/sisteransi@1.0.5/node_modules/sisteransi/src/index.js","../../../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js","../../../node_modules/.pnpm/isbinaryfile@5.0.7/node_modules/isbinaryfile/lib/index.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/constants.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/buffer-util.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/limiter.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/permessage-deflate.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/validation.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/receiver.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/sender.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/event-target.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/extension.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/websocket.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/stream.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/subprotocol.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/websocket-server.js","../../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js","../../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js","../../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js","../../../node_modules/.pnpm/which@2.0.2/node_modules/which/which.js","../../../node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js","../../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/resolveCommand.js","../../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/escape.js","../../../node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js","../../../node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js","../../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/readShebang.js","../../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/parse.js","../../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/enoent.js","../../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/index.js","../../../node_modules/.pnpm/merge-stream@2.0.0/node_modules/merge-stream/index.js","../../../node_modules/.pnpm/java-properties@1.0.2/node_modules/java-properties/dist-node/index.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/appveyor.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/lib/utils.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/azure-pipelines.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/bamboo.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/bitbucket.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/bitrise.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/buddy.js","../../../node_modules/.pnpm/execa@8.0.1/node_modules/execa/index.js","../../../node_modules/.pnpm/strip-final-newline@3.0.0/node_modules/strip-final-newline/index.js","../../../node_modules/.pnpm/npm-run-path@5.3.0/node_modules/npm-run-path/index.js","../../../node_modules/.pnpm/path-key@4.0.0/node_modules/path-key/index.js","../../../node_modules/.pnpm/mimic-fn@4.0.0/node_modules/mimic-fn/index.js","../../../node_modules/.pnpm/onetime@6.0.0/node_modules/onetime/index.js","../../../node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/error.js","../../../node_modules/.pnpm/human-signals@5.0.0/node_modules/human-signals/build/src/main.js","../../../node_modules/.pnpm/human-signals@5.0.0/node_modules/human-signals/build/src/realtime.js","../../../node_modules/.pnpm/human-signals@5.0.0/node_modules/human-signals/build/src/signals.js","../../../node_modules/.pnpm/human-signals@5.0.0/node_modules/human-signals/build/src/core.js","../../../node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/stdio.js","../../../node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/kill.js","../../../node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/src/signals.ts","../../../node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/src/index.ts","../../../node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/pipe.js","../../../node_modules/.pnpm/is-stream@3.0.0/node_modules/is-stream/index.js","../../../node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/stream.js","../../../node_modules/.pnpm/get-stream@8.0.1/node_modules/get-stream/source/contents.js","../../../node_modules/.pnpm/get-stream@8.0.1/node_modules/get-stream/source/utils.js","../../../node_modules/.pnpm/get-stream@8.0.1/node_modules/get-stream/source/array-buffer.js","../../../node_modules/.pnpm/get-stream@8.0.1/node_modules/get-stream/source/buffer.js","../../../node_modules/.pnpm/get-stream@8.0.1/node_modules/get-stream/source/string.js","../../../node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/promise.js","../../../node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/command.js","../../../node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/verbose.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/lib/git.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/buildkite.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/circleci.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/cirrus.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/cloudflare-pages.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/codebuild.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/codefresh.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/codeship.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/drone.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/git.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/github.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/gitlab.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/jenkins.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/netlify.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/puppet.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/sail.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/screwdriver.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/scrutinizer.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/semaphore.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/shippable.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/teamcity.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/travis.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/vela.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/vercel.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/wercker.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/woodpecker.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/jetbrains-space.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/index.js","../../ci-run-id/src/index.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/node_modules/.pnpm/ansi-regex@6.1.0/node_modules/ansi-regex/index.js","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/node_modules/.pnpm/strip-ansi@7.1.0/node_modules/strip-ansi/index.js","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/node_modules/.pnpm/eastasianwidth@0.2.0/node_modules/eastasianwidth/eastasianwidth.js","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/node_modules/.pnpm/emoji-regex@9.2.2/node_modules/emoji-regex/index.js","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/node_modules/.pnpm/string-width@5.1.2/node_modules/string-width/index.js","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/node_modules/.pnpm/ansi-styles@6.2.1/node_modules/ansi-styles/index.js","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/node_modules/.pnpm/wrap-ansi@8.1.0/node_modules/wrap-ansi/index.js","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/utils/settings.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/utils/string.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/utils/index.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/prompt.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/confirm.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/group-multiselect.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/multi-select.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/password.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/select.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/select-key.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/text.ts","../../../node_modules/.pnpm/@clack+prompts@0.11.0/node_modules/node_modules/.pnpm/is-unicode-supported@1.3.0/node_modules/is-unicode-supported/index.js","../../../node_modules/.pnpm/@clack+prompts@0.11.0/node_modules/@clack/prompts/src/index.ts","../../playwright-reporter/dist/index.mjs","../../playwright-trace-scrubber/src/scrub-trace.ts","../../../node_modules/.pnpm/fflate@0.8.2/node_modules/fflate/esm/index.mjs","../../playwright-trace-scrubber/src/filter-sensitive-values.ts","../../playwright-trace-scrubber/src/scrubbers/files.ts","../../../node_modules/.pnpm/ts-pattern@5.9.0/node_modules/ts-pattern/src/internals/symbols.ts","../../../node_modules/.pnpm/ts-pattern@5.9.0/node_modules/ts-pattern/src/internals/helpers.ts","../../../node_modules/.pnpm/ts-pattern@5.9.0/node_modules/ts-pattern/src/is-matching.ts","../../../node_modules/.pnpm/ts-pattern@5.9.0/node_modules/ts-pattern/src/patterns.ts","../../../node_modules/.pnpm/ts-pattern@5.9.0/node_modules/ts-pattern/src/errors.ts","../../../node_modules/.pnpm/ts-pattern@5.9.0/node_modules/ts-pattern/src/match.ts","../../playwright-trace-scrubber/src/scrubbers/primitives.ts","../../playwright-trace-scrubber/src/scrubbers/events.ts","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/wrapper.mjs","../../../node_modules/.pnpm/is-network-error@1.3.0/node_modules/is-network-error/index.js","../../../node_modules/.pnpm/p-retry@7.1.1/node_modules/p-retry/index.js","../src/reporter.ts"],"sourcesContent":["'use strict';\n\nconst ESC = '\\x1B';\nconst CSI = `${ESC}[`;\nconst beep = '\\u0007';\n\nconst cursor = {\n to(x, y) {\n if (!y) return `${CSI}${x + 1}G`;\n return `${CSI}${y + 1};${x + 1}H`;\n },\n move(x, y) {\n let ret = '';\n\n if (x < 0) ret += `${CSI}${-x}D`;\n else if (x > 0) ret += `${CSI}${x}C`;\n\n if (y < 0) ret += `${CSI}${-y}A`;\n else if (y > 0) ret += `${CSI}${y}B`;\n\n return ret;\n },\n up: (count = 1) => `${CSI}${count}A`,\n down: (count = 1) => `${CSI}${count}B`,\n forward: (count = 1) => `${CSI}${count}C`,\n backward: (count = 1) => `${CSI}${count}D`,\n nextLine: (count = 1) => `${CSI}E`.repeat(count),\n prevLine: (count = 1) => `${CSI}F`.repeat(count),\n left: `${CSI}G`,\n hide: `${CSI}?25l`,\n show: `${CSI}?25h`,\n save: `${ESC}7`,\n restore: `${ESC}8`\n}\n\nconst scroll = {\n up: (count = 1) => `${CSI}S`.repeat(count),\n down: (count = 1) => `${CSI}T`.repeat(count)\n}\n\nconst erase = {\n screen: `${CSI}2J`,\n up: (count = 1) => `${CSI}1J`.repeat(count),\n down: (count = 1) => `${CSI}J`.repeat(count),\n line: `${CSI}2K`,\n lineEnd: `${CSI}K`,\n lineStart: `${CSI}1K`,\n lines(count) {\n let clear = '';\n for (let i = 0; i < count; i++)\n clear += this.line + (i < count - 1 ? cursor.up() : '');\n if (count)\n clear += cursor.left;\n return clear;\n }\n}\n\nmodule.exports = { cursor, scroll, erase, beep };\n","let p = process || {}, argv = p.argv || [], env = p.env || {}\nlet isColorSupported =\n\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI)\n\nlet formatter = (open, close, replace = open) =>\n\tinput => {\n\t\tlet string = \"\" + input, index = string.indexOf(close, open.length)\n\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t}\n\nlet replaceClose = (string, close, replace, index) => {\n\tlet result = \"\", cursor = 0\n\tdo {\n\t\tresult += string.substring(cursor, index) + replace\n\t\tcursor = index + close.length\n\t\tindex = string.indexOf(close, cursor)\n\t} while (~index)\n\treturn result + string.substring(cursor)\n}\n\nlet createColors = (enabled = isColorSupported) => {\n\tlet f = enabled ? formatter : () => String\n\treturn {\n\t\tisColorSupported: enabled,\n\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t}\n}\n\nmodule.exports = createColors()\nmodule.exports.createColors = createColors\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isBinaryFileSync = exports.isBinaryFile = void 0;\nconst fs = require(\"fs\");\nconst util_1 = require(\"util\");\nconst statAsync = (0, util_1.promisify)(fs.stat);\nconst openAsync = (0, util_1.promisify)(fs.open);\nconst closeAsync = (0, util_1.promisify)(fs.close);\nconst MAX_BYTES = 512;\nconst UTF8_BOUNDARY_RESERVE = 3;\n// A very basic non-exception raising reader. Read bytes and\n// at the end use hasError() to check whether this worked.\nclass Reader {\n fileBuffer;\n size;\n offset;\n error;\n constructor(fileBuffer, size) {\n this.fileBuffer = fileBuffer;\n this.size = size;\n this.offset = 0;\n this.error = false;\n }\n hasError() {\n return this.error;\n }\n nextByte() {\n if (this.offset === this.size || this.hasError()) {\n this.error = true;\n return 0xff;\n }\n return this.fileBuffer[this.offset++];\n }\n next(len) {\n const n = new Array();\n for (let i = 0; i < len; i++) {\n // Stop reading if an error occurred\n if (this.error) {\n return n;\n }\n n[i] = this.nextByte();\n }\n return n;\n }\n}\n// Read a Google Protobuf var(iable)int from the buffer.\nfunction readProtoVarInt(reader) {\n let idx = 0;\n let varInt = 0;\n while (!reader.hasError()) {\n const b = reader.nextByte();\n varInt = varInt | ((b & 0x7f) << (7 * idx));\n if ((b & 0x80) === 0) {\n break;\n }\n if (idx >= 10) {\n // Varint can be between 1 and 10 bytes. This is too large.\n reader.error = true;\n break;\n }\n idx++;\n }\n return varInt;\n}\n// Attempt to taste a full Google Protobuf message.\nfunction readProtoMessage(reader) {\n const varInt = readProtoVarInt(reader);\n const wireType = varInt & 0x7;\n switch (wireType) {\n case 0:\n readProtoVarInt(reader);\n return true;\n case 1:\n reader.next(8);\n return true;\n case 2:\n const len = readProtoVarInt(reader);\n reader.next(len);\n return true;\n case 5:\n reader.next(4);\n return true;\n }\n return false;\n}\n// Check whether this seems to be a valid protobuf file.\nfunction isBinaryProto(fileBuffer, totalBytes) {\n const reader = new Reader(fileBuffer, totalBytes);\n let numMessages = 0;\n while (true) {\n // Definitely not a valid protobuf\n if (!readProtoMessage(reader) && !reader.hasError()) {\n return false;\n }\n // Short read?\n if (reader.hasError()) {\n break;\n }\n numMessages++;\n }\n return numMessages > 0;\n}\nasync function isBinaryFile(file, size) {\n if (isString(file)) {\n const stat = await statAsync(file);\n isStatFile(stat);\n const fileDescriptor = await openAsync(file, 'r');\n const allocBuffer = Buffer.alloc(MAX_BYTES + UTF8_BOUNDARY_RESERVE);\n // Read the file with no encoding for raw buffer access.\n // NB: something is severely wrong with promisify, had to construct my own Promise\n return new Promise((fulfill, reject) => {\n fs.read(fileDescriptor, allocBuffer, 0, MAX_BYTES + UTF8_BOUNDARY_RESERVE, 0, (err, bytesRead, _) => {\n closeAsync(fileDescriptor);\n if (err) {\n reject(err);\n }\n else {\n try {\n fulfill(isBinaryCheck(allocBuffer, bytesRead));\n }\n catch (error) {\n reject(error);\n }\n }\n });\n });\n }\n else {\n if (size === undefined) {\n size = file.length;\n }\n return isBinaryCheck(file, size);\n }\n}\nexports.isBinaryFile = isBinaryFile;\nfunction isBinaryFileSync(file, size) {\n if (isString(file)) {\n const stat = fs.statSync(file);\n isStatFile(stat);\n const fileDescriptor = fs.openSync(file, 'r');\n const allocBuffer = Buffer.alloc(MAX_BYTES + UTF8_BOUNDARY_RESERVE);\n const bytesRead = fs.readSync(fileDescriptor, allocBuffer, 0, MAX_BYTES + UTF8_BOUNDARY_RESERVE, 0);\n fs.closeSync(fileDescriptor);\n return isBinaryCheck(allocBuffer, bytesRead);\n }\n else {\n if (size === undefined) {\n size = file.length;\n }\n return isBinaryCheck(file, size);\n }\n}\nexports.isBinaryFileSync = isBinaryFileSync;\nfunction isBinaryCheck(fileBuffer, bytesRead) {\n // empty file. no clue what it is.\n if (bytesRead === 0) {\n return false;\n }\n let suspiciousBytes = 0;\n const totalBytes = Math.min(bytesRead, MAX_BYTES + UTF8_BOUNDARY_RESERVE);\n const scanBytes = Math.min(totalBytes, MAX_BYTES);\n // UTF-8 BOM\n if (bytesRead >= 3 && fileBuffer[0] === 0xef && fileBuffer[1] === 0xbb && fileBuffer[2] === 0xbf) {\n return false;\n }\n // UTF-32 BOM\n if (bytesRead >= 4 &&\n fileBuffer[0] === 0x00 &&\n fileBuffer[1] === 0x00 &&\n fileBuffer[2] === 0xfe &&\n fileBuffer[3] === 0xff) {\n return false;\n }\n // UTF-32 LE BOM\n if (bytesRead >= 4 &&\n fileBuffer[0] === 0xff &&\n fileBuffer[1] === 0xfe &&\n fileBuffer[2] === 0x00 &&\n fileBuffer[3] === 0x00) {\n return false;\n }\n // GB BOM\n if (bytesRead >= 4 &&\n fileBuffer[0] === 0x84 &&\n fileBuffer[1] === 0x31 &&\n fileBuffer[2] === 0x95 &&\n fileBuffer[3] === 0x33) {\n return false;\n }\n if (totalBytes >= 5 && fileBuffer.slice(0, 5).toString() === '%PDF-') {\n /* PDF. This is binary. */\n return true;\n }\n // UTF-16 BE BOM\n if (bytesRead >= 2 && fileBuffer[0] === 0xfe && fileBuffer[1] === 0xff) {\n return false;\n }\n // UTF-16 LE BOM\n if (bytesRead >= 2 && fileBuffer[0] === 0xff && fileBuffer[1] === 0xfe) {\n return false;\n }\n for (let i = 0; i < scanBytes; i++) {\n if (fileBuffer[i] === 0) {\n // NULL byte--it's binary!\n return true;\n }\n else if ((fileBuffer[i] < 7 || fileBuffer[i] > 14) && (fileBuffer[i] < 32 || fileBuffer[i] > 127)) {\n // UTF-8 detection\n if (fileBuffer[i] >= 0xc0 && fileBuffer[i] <= 0xdf && i + 1 < totalBytes) {\n i++;\n if (fileBuffer[i] >= 0x80 && fileBuffer[i] <= 0xbf) {\n continue;\n }\n }\n else if (fileBuffer[i] >= 0xe0 && fileBuffer[i] <= 0xef && i + 2 < totalBytes) {\n i++;\n if (fileBuffer[i] >= 0x80 && fileBuffer[i] <= 0xbf && fileBuffer[i + 1] >= 0x80 && fileBuffer[i + 1] <= 0xbf) {\n i++;\n continue;\n }\n }\n else if (fileBuffer[i] >= 0xf0 && fileBuffer[i] <= 0xf7 && i + 3 < totalBytes) {\n i++;\n if (fileBuffer[i] >= 0x80 &&\n fileBuffer[i] <= 0xbf &&\n fileBuffer[i + 1] >= 0x80 &&\n fileBuffer[i + 1] <= 0xbf &&\n fileBuffer[i + 2] >= 0x80 &&\n fileBuffer[i + 2] <= 0xbf) {\n i += 2;\n continue;\n }\n }\n suspiciousBytes++;\n // Read at least 32 fileBuffer before making a decision\n if (i >= 32 && (suspiciousBytes * 100) / scanBytes > 10) {\n return true;\n }\n }\n }\n if ((suspiciousBytes * 100) / scanBytes > 10) {\n return true;\n }\n if (suspiciousBytes > 1 && isBinaryProto(fileBuffer, scanBytes)) {\n return true;\n }\n return false;\n}\nfunction isString(x) {\n return typeof x === 'string';\n}\nfunction isStatFile(stat) {\n if (!stat.isFile()) {\n throw new Error(`Path provided was not a file!`);\n }\n}\n","'use strict';\n\nconst BINARY_TYPES = ['nodebuffer', 'arraybuffer', 'fragments'];\nconst hasBlob = typeof Blob !== 'undefined';\n\nif (hasBlob) BINARY_TYPES.push('blob');\n\nmodule.exports = {\n BINARY_TYPES,\n EMPTY_BUFFER: Buffer.alloc(0),\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n hasBlob,\n kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),\n kListener: Symbol('kListener'),\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n NOOP: () => {}\n};\n","'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) {\n return new FastBuffer(target.buffer, target.byteOffset, offset);\n }\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.length === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = new FastBuffer(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\nmodule.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n};\n\n/* istanbul ignore else */\nif (!process.env.WS_NO_BUFFER_UTIL) {\n try {\n const bufferUtil = require('bufferutil');\n\n module.exports.mask = function (source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bufferUtil.mask(source, mask, output, offset, length);\n };\n\n module.exports.unmask = function (buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bufferUtil.unmask(buffer, mask);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n","'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n","'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed if context takeover is disabled\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n * @param {Boolean} [isServer=false] Create the instance in either server or\n * client mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(options, isServer, maxPayload) {\n this._maxPayload = maxPayload | 0;\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._isServer = !!isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) {\n data = new FastBuffer(data.buffer, data.byteOffset, data.length - 4);\n }\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n\n //\n // The choice to employ `zlib.reset()` over `zlib.close()` is dictated by the\n // fact that in Node.js versions prior to 13.10.0, the callback for\n // `zlib.flush()` is not called if `zlib.close()` is used. Utilizing\n // `zlib.reset()` ensures that either the callback is invoked or an error is\n // emitted.\n //\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n\n if (this[kError]) {\n this[kCallback](this[kError]);\n return;\n }\n\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n","'use strict';\n\nconst { isUtf8 } = require('buffer');\n\nconst { hasBlob } = require('./constants');\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Determines whether a value is a `Blob`.\n *\n * @param {*} value The value to be tested\n * @return {Boolean} `true` if `value` is a `Blob`, else `false`\n * @private\n */\nfunction isBlob(value) {\n return (\n hasBlob &&\n typeof value === 'object' &&\n typeof value.arrayBuffer === 'function' &&\n typeof value.type === 'string' &&\n typeof value.stream === 'function' &&\n (value[Symbol.toStringTag] === 'Blob' ||\n value[Symbol.toStringTag] === 'File')\n );\n}\n\nmodule.exports = {\n isBlob,\n isValidStatusCode,\n isValidUTF8: _isValidUTF8,\n tokenChars\n};\n\nif (isUtf8) {\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf);\n };\n} /* istanbul ignore else */ else if (!process.env.WS_NO_UTF_8_VALIDATE) {\n try {\n const isValidUTF8 = require('utf-8-validate');\n\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n","'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst FastBuffer = Buffer[Symbol.species];\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\nconst DEFER_EVENT = 6;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {Object} [options] Options object\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {String} [options.binaryType=nodebuffer] The type for binary data\n * @param {Object} [options.extensions] An object containing the negotiated\n * extensions\n * @param {Boolean} [options.isServer=false] Specifies whether to operate in\n * client or server mode\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n */\n constructor(options = {}) {\n super();\n\n this._allowSynchronousEvents =\n options.allowSynchronousEvents !== undefined\n ? options.allowSynchronousEvents\n : true;\n this._binaryType = options.binaryType || BINARY_TYPES[0];\n this._extensions = options.extensions || {};\n this._isServer = !!options.isServer;\n this._maxPayload = options.maxPayload | 0;\n this._skipUTF8Validation = !!options.skipUTF8Validation;\n this[kWebSocket] = undefined;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragments = [];\n\n this._errored = false;\n this._loop = false;\n this._state = GET_INFO;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n\n return new FastBuffer(buf.buffer, buf.byteOffset, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n this.getInfo(cb);\n break;\n case GET_PAYLOAD_LENGTH_16:\n this.getPayloadLength16(cb);\n break;\n case GET_PAYLOAD_LENGTH_64:\n this.getPayloadLength64(cb);\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n this.getData(cb);\n break;\n case INFLATING:\n case DEFER_EVENT:\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n if (!this._errored) cb();\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @param {Function} cb Callback\n * @private\n */\n getInfo(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n const error = this.createError(\n RangeError,\n 'RSV2 and RSV3 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_2_3'\n );\n\n cb(error);\n return;\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fragmented) {\n const error = this.createError(\n RangeError,\n 'invalid opcode 0',\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n const error = this.createError(\n RangeError,\n 'FIN must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_FIN'\n );\n\n cb(error);\n return;\n }\n\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (\n this._payloadLength > 0x7d ||\n (this._opcode === 0x08 && this._payloadLength === 1)\n ) {\n const error = this.createError(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n } else {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n } else if (this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength16(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength64(cb) {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n const error = this.createError(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n this.haveLength(cb);\n }\n\n /**\n * Payload length has been read.\n *\n * @param {Function} cb Callback\n * @private\n */\n haveLength(cb) {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n\n if (\n this._masked &&\n (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0\n ) {\n unmask(data, this._mask);\n }\n }\n\n if (this._opcode > 0x07) {\n this.controlMessage(data, cb);\n return;\n }\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its length is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n this.dataMessage(cb);\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._fragments.push(buf);\n }\n\n this.dataMessage(cb);\n if (this._state === GET_INFO) this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @param {Function} cb Callback\n * @private\n */\n dataMessage(cb) {\n if (!this._fin) {\n this._state = GET_INFO;\n return;\n }\n\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else if (this._binaryType === 'blob') {\n data = new Blob(fragments);\n } else {\n data = fragments;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit('message', data, true);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', data, true);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n if (this._state === INFLATING || this._allowSynchronousEvents) {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data, cb) {\n if (this._opcode === 0x08) {\n if (data.length === 0) {\n this._loop = false;\n this.emit('conclude', 1005, EMPTY_BUFFER);\n this.end();\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n const error = this.createError(\n RangeError,\n `invalid status code ${code}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CLOSE_CODE'\n );\n\n cb(error);\n return;\n }\n\n const buf = new FastBuffer(\n data.buffer,\n data.byteOffset + 2,\n data.length - 2\n );\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n this._loop = false;\n this.emit('conclude', code, buf);\n this.end();\n }\n\n this._state = GET_INFO;\n return;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n\n /**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\n createError(ErrorCtor, message, prefix, statusCode, errorCode) {\n this._loop = false;\n this._errored = true;\n\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, this.createError);\n err.code = errorCode;\n err[kStatusCode] = statusCode;\n return err;\n }\n}\n\nmodule.exports = Receiver;\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex\" }] */\n\n'use strict';\n\nconst { Duplex } = require('stream');\nconst { randomFillSync } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER, kWebSocket, NOOP } = require('./constants');\nconst { isBlob, isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst kByteLength = Symbol('kByteLength');\nconst maskBuffer = Buffer.alloc(4);\nconst RANDOM_POOL_SIZE = 8 * 1024;\nlet randomPool;\nlet randomPoolPointer = RANDOM_POOL_SIZE;\n\nconst DEFAULT = 0;\nconst DEFLATING = 1;\nconst GET_BLOB_DATA = 2;\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {Duplex} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Function} [generateMask] The function used to generate the masking\n * key\n */\n constructor(socket, extensions, generateMask) {\n this._extensions = extensions || {};\n\n if (generateMask) {\n this._generateMask = generateMask;\n this._maskBuffer = Buffer.alloc(4);\n }\n\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._queue = [];\n this._state = DEFAULT;\n this.onerror = NOOP;\n this[kWebSocket] = undefined;\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {(Buffer|String)} data The data to frame\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {(Buffer|String)[]} The framed data\n * @public\n */\n static frame(data, options) {\n let mask;\n let merge = false;\n let offset = 2;\n let skipMasking = false;\n\n if (options.mask) {\n mask = options.maskBuffer || maskBuffer;\n\n if (options.generateMask) {\n options.generateMask(mask);\n } else {\n if (randomPoolPointer === RANDOM_POOL_SIZE) {\n /* istanbul ignore else */\n if (randomPool === undefined) {\n //\n // This is lazily initialized because server-sent frames must not\n // be masked so it may never be used.\n //\n randomPool = Buffer.alloc(RANDOM_POOL_SIZE);\n }\n\n randomFillSync(randomPool, 0, RANDOM_POOL_SIZE);\n randomPoolPointer = 0;\n }\n\n mask[0] = randomPool[randomPoolPointer++];\n mask[1] = randomPool[randomPoolPointer++];\n mask[2] = randomPool[randomPoolPointer++];\n mask[3] = randomPool[randomPoolPointer++];\n }\n\n skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;\n offset = 6;\n }\n\n let dataLength;\n\n if (typeof data === 'string') {\n if (\n (!options.mask || skipMasking) &&\n options[kByteLength] !== undefined\n ) {\n dataLength = options[kByteLength];\n } else {\n data = Buffer.from(data);\n dataLength = data.length;\n }\n } else {\n dataLength = data.length;\n merge = options.mask && options.readOnly && !skipMasking;\n }\n\n let payloadLength = dataLength;\n\n if (dataLength >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (dataLength > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(dataLength, 2);\n } else if (payloadLength === 127) {\n target[2] = target[3] = 0;\n target.writeUIntBE(dataLength, 4, 6);\n }\n\n if (!options.mask) return [target, data];\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (skipMasking) return [target, data];\n\n if (merge) {\n applyMask(data, mask, target, offset, dataLength);\n return [target];\n }\n\n applyMask(data, mask, data, 0, dataLength);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {(String|Buffer)} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || !data.length) {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n\n if (typeof data === 'string') {\n buf.write(data, 2);\n } else {\n buf.set(data, 2);\n }\n }\n\n const options = {\n [kByteLength]: buf.length,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x08,\n readOnly: false,\n rsv1: false\n };\n\n if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, buf, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(buf, options), cb);\n }\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x09,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x0a,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (\n rsv1 &&\n perMessageDeflate &&\n perMessageDeflate.params[\n perMessageDeflate._isServer\n ? 'server_no_context_takeover'\n : 'client_no_context_takeover'\n ]\n ) {\n rsv1 = byteLength >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n const opts = {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, this._compress, opts, cb]);\n } else {\n this.getBlobData(data, this._compress, opts, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, this._compress, opts, cb]);\n } else {\n this.dispatch(data, this._compress, opts, cb);\n }\n }\n\n /**\n * Gets the contents of a blob as binary data.\n *\n * @param {Blob} blob The blob\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * the data\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n getBlobData(blob, compress, options, cb) {\n this._bufferedBytes += options[kByteLength];\n this._state = GET_BLOB_DATA;\n\n blob\n .arrayBuffer()\n .then((arrayBuffer) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while the blob was being read'\n );\n\n //\n // `callCallbacks` is called in the next tick to ensure that errors\n // that might be thrown in the callbacks behave like errors thrown\n // outside the promise chain.\n //\n process.nextTick(callCallbacks, this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n const data = toBuffer(arrayBuffer);\n\n if (!compress) {\n this._state = DEFAULT;\n this.sendFrame(Sender.frame(data, options), cb);\n this.dequeue();\n } else {\n this.dispatch(data, compress, options, cb);\n }\n })\n .catch((err) => {\n //\n // `onError` is called in the next tick for the same reason that\n // `callCallbacks` above is.\n //\n process.nextTick(onError, this, err, cb);\n });\n }\n\n /**\n * Dispatches a message.\n *\n * @param {(Buffer|String)} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += options[kByteLength];\n this._state = DEFLATING;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n callCallbacks(this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n this._state = DEFAULT;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (this._state === DEFAULT && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[3][kByteLength];\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[3][kByteLength];\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {(Buffer | String)[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n\n/**\n * Calls queued callbacks with an error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error to call the callbacks with\n * @param {Function} [cb] The first callback\n * @private\n */\nfunction callCallbacks(sender, err, cb) {\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < sender._queue.length; i++) {\n const params = sender._queue[i];\n const callback = params[params.length - 1];\n\n if (typeof callback === 'function') callback(err);\n }\n}\n\n/**\n * Handles a `Sender` error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error\n * @param {Function} [cb] The first pending callback\n * @private\n */\nfunction onError(sender, err, cb) {\n callCallbacks(sender, err, cb);\n sender.onerror(err);\n}\n","'use strict';\n\nconst { kForOnEventAttribute, kListener } = require('./constants');\n\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @throws {TypeError} If the `type` argument is not specified\n */\n constructor(type) {\n this[kTarget] = null;\n this[kType] = type;\n }\n\n /**\n * @type {*}\n */\n get target() {\n return this[kTarget];\n }\n\n /**\n * @type {String}\n */\n get type() {\n return this[kType];\n }\n}\n\nObject.defineProperty(Event.prototype, 'target', { enumerable: true });\nObject.defineProperty(Event.prototype, 'type', { enumerable: true });\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {Number} [options.code=0] The status code explaining why the\n * connection was closed\n * @param {String} [options.reason=''] A human-readable string explaining why\n * the connection was closed\n * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n * connection was cleanly closed\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kCode] = options.code === undefined ? 0 : options.code;\n this[kReason] = options.reason === undefined ? '' : options.reason;\n this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n }\n\n /**\n * @type {Number}\n */\n get code() {\n return this[kCode];\n }\n\n /**\n * @type {String}\n */\n get reason() {\n return this[kReason];\n }\n\n /**\n * @type {Boolean}\n */\n get wasClean() {\n return this[kWasClean];\n }\n}\n\nObject.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.error=null] The error that generated this event\n * @param {String} [options.message=''] The error message\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kError] = options.error === undefined ? null : options.error;\n this[kMessage] = options.message === undefined ? '' : options.message;\n }\n\n /**\n * @type {*}\n */\n get error() {\n return this[kError];\n }\n\n /**\n * @type {String}\n */\n get message() {\n return this[kMessage];\n }\n}\n\nObject.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });\nObject.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.data=null] The message content\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kData] = options.data === undefined ? null : options.data;\n }\n\n /**\n * @type {*}\n */\n get data() {\n return this[kData];\n }\n}\n\nObject.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {(Function|Object)} handler The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, handler, options = {}) {\n for (const listener of this.listeners(type)) {\n if (\n !options[kForOnEventAttribute] &&\n listener[kListener] === handler &&\n !listener[kForOnEventAttribute]\n ) {\n return;\n }\n }\n\n let wrapper;\n\n if (type === 'message') {\n wrapper = function onMessage(data, isBinary) {\n const event = new MessageEvent('message', {\n data: isBinary ? data : data.toString()\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'close') {\n wrapper = function onClose(code, message) {\n const event = new CloseEvent('close', {\n code,\n reason: message.toString(),\n wasClean: this._closeFrameReceived && this._closeFrameSent\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'error') {\n wrapper = function onError(error) {\n const event = new ErrorEvent('error', {\n error,\n message: error.message\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'open') {\n wrapper = function onOpen() {\n const event = new Event('open');\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else {\n return;\n }\n\n wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n wrapper[kListener] = handler;\n\n if (options.once) {\n this.once(type, wrapper);\n } else {\n this.on(type, wrapper);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {(Function|Object)} handler The listener to remove\n * @public\n */\n removeEventListener(type, handler) {\n for (const listener of this.listeners(type)) {\n if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n this.removeListener(type, listener);\n break;\n }\n }\n }\n};\n\nmodule.exports = {\n CloseEvent,\n ErrorEvent,\n Event,\n EventTarget,\n MessageEvent\n};\n\n/**\n * Call an event listener\n *\n * @param {(Function|Object)} listener The listener to call\n * @param {*} thisArg The value to use as `this`` when calling the listener\n * @param {Event} event The event to pass to the listener\n * @private\n */\nfunction callListener(listener, thisArg, event) {\n if (typeof listener === 'object' && listener.handleEvent) {\n listener.handleEvent.call(listener, event);\n } else {\n listener.call(thisArg, event);\n }\n}\n","'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let code = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes || code === 0x20 || code === 0x09) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex|Readable$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { Duplex, Readable } = require('stream');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst { isBlob } = require('./validation');\n\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n GUID,\n kForOnEventAttribute,\n kListener,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst {\n EventTarget: { addEventListener, removeEventListener }\n} = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst closeTimeout = 30 * 1000;\nconst kAborted = Symbol('kAborted');\nconst protocolVersions = [8, 13];\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst subprotocolRegex = /^[!#$%&'*+\\-.0-9A-Z^_`|a-z~]+$/;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = EMPTY_BUFFER;\n this._closeTimer = null;\n this._errorEmitted = false;\n this._extensions = {};\n this._paused = false;\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (protocols === undefined) {\n protocols = [];\n } else if (!Array.isArray(protocols)) {\n if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = [];\n } else {\n protocols = [protocols];\n }\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._autoPong = options.autoPong;\n this._isServer = true;\n }\n }\n\n /**\n * For historical reasons, the custom \"nodebuffer\" type is used by the default\n * instead of \"blob\".\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {Boolean}\n */\n get isPaused() {\n return this._paused;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onclose() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onerror() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onopen() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onmessage() {\n return null;\n }\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Object} options Options object\n * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.maxPayload=0] The maximum allowed message size\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\n setSocket(socket, head, options) {\n const receiver = new Receiver({\n allowSynchronousEvents: options.allowSynchronousEvents,\n binaryType: this.binaryType,\n extensions: this._extensions,\n isServer: this._isServer,\n maxPayload: options.maxPayload,\n skipUTF8Validation: options.skipUTF8Validation\n });\n\n const sender = new Sender(socket, this._extensions, options.generateMask);\n\n this._receiver = receiver;\n this._sender = sender;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n sender[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n sender.onerror = senderOnError;\n\n //\n // These methods may not be available if `socket` is just a `Duplex`.\n //\n if (socket.setTimeout) socket.setTimeout(0);\n if (socket.setNoDelay) socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {(String|Buffer)} [data] The reason why the connection is\n * closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (\n this._closeFrameSent &&\n (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n ) {\n this._socket.end();\n }\n\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n\n if (\n this._closeFrameReceived ||\n this._receiver._writableState.errorEmitted\n ) {\n this._socket.end();\n }\n });\n\n setCloseTimer(this);\n }\n\n /**\n * Pause the socket.\n *\n * @public\n */\n pause() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = true;\n this._socket.pause();\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Resume the socket.\n *\n * @public\n */\n resume() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = false;\n if (!this._receiver._writableState.needDrain) this._socket.resume();\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'isPaused',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n enumerable: true,\n get() {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) return listener[kListener];\n }\n\n return null;\n },\n set(handler) {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) {\n this.removeListener(method, listener);\n break;\n }\n }\n\n if (typeof handler !== 'function') return;\n\n this.addEventListener(method, handler, {\n [kForOnEventAttribute]: true\n });\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {Array} protocols The subprotocols\n * @param {Object} [options] Connection options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether any\n * of the `'message'`, `'ping'`, and `'pong'` events can be emitted multiple\n * times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Function} [options.finishRequest] A function which can be used to\n * customize the headers of each http request before it is sent\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n allowSynchronousEvents: true,\n autoPong: true,\n protocolVersion: protocolVersions[1],\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: 'GET',\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n websocket._autoPong = opts.autoPong;\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n } else {\n try {\n parsedUrl = new URL(address);\n } catch (e) {\n throw new SyntaxError(`Invalid URL: ${address}`);\n }\n }\n\n if (parsedUrl.protocol === 'http:') {\n parsedUrl.protocol = 'ws:';\n } else if (parsedUrl.protocol === 'https:') {\n parsedUrl.protocol = 'wss:';\n }\n\n websocket._url = parsedUrl.href;\n\n const isSecure = parsedUrl.protocol === 'wss:';\n const isIpcUrl = parsedUrl.protocol === 'ws+unix:';\n let invalidUrlMessage;\n\n if (parsedUrl.protocol !== 'ws:' && !isSecure && !isIpcUrl) {\n invalidUrlMessage =\n 'The URL\\'s protocol must be one of \"ws:\", \"wss:\", ' +\n '\"http:\", \"https:\", or \"ws+unix:\"';\n } else if (isIpcUrl && !parsedUrl.pathname) {\n invalidUrlMessage = \"The URL's pathname is empty\";\n } else if (parsedUrl.hash) {\n invalidUrlMessage = 'The URL contains a fragment identifier';\n }\n\n if (invalidUrlMessage) {\n const err = new SyntaxError(invalidUrlMessage);\n\n if (websocket._redirects === 0) {\n throw err;\n } else {\n emitErrorAndClose(websocket, err);\n return;\n }\n }\n\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const request = isSecure ? https.request : http.request;\n const protocolSet = new Set();\n let perMessageDeflate;\n\n opts.createConnection =\n opts.createConnection || (isSecure ? tlsConnect : netConnect);\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n ...opts.headers,\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket'\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate(\n opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},\n false,\n opts.maxPayload\n );\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols.length) {\n for (const protocol of protocols) {\n if (\n typeof protocol !== 'string' ||\n !subprotocolRegex.test(protocol) ||\n protocolSet.has(protocol)\n ) {\n throw new SyntaxError(\n 'An invalid or duplicated subprotocol was specified'\n );\n }\n\n protocolSet.add(protocol);\n }\n\n opts.headers['Sec-WebSocket-Protocol'] = protocols.join(',');\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isIpcUrl) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n let req;\n\n if (opts.followRedirects) {\n if (websocket._redirects === 0) {\n websocket._originalIpc = isIpcUrl;\n websocket._originalSecure = isSecure;\n websocket._originalHostOrSocketPath = isIpcUrl\n ? opts.socketPath\n : parsedUrl.host;\n\n const headers = options && options.headers;\n\n //\n // Shallow copy the user provided options so that headers can be changed\n // without mutating the original object.\n //\n options = { ...options, headers: {} };\n\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n options.headers[key.toLowerCase()] = value;\n }\n }\n } else if (websocket.listenerCount('redirect') === 0) {\n const isSameHost = isIpcUrl\n ? websocket._originalIpc\n ? opts.socketPath === websocket._originalHostOrSocketPath\n : false\n : websocket._originalIpc\n ? false\n : parsedUrl.host === websocket._originalHostOrSocketPath;\n\n if (!isSameHost || (websocket._originalSecure && !isSecure)) {\n //\n // Match curl 7.77.0 behavior and drop the following headers. These\n // headers are also dropped when following a redirect to a subdomain.\n //\n delete opts.headers.authorization;\n delete opts.headers.cookie;\n\n if (!isSameHost) delete opts.headers.host;\n\n opts.auth = undefined;\n }\n }\n\n //\n // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n // If the `Authorization` header is set, then there is nothing to do as it\n // will take precedence.\n //\n if (opts.auth && !options.headers.authorization) {\n options.headers.authorization =\n 'Basic ' + Buffer.from(opts.auth).toString('base64');\n }\n\n req = websocket._req = request(opts);\n\n if (websocket._redirects) {\n //\n // Unlike what is done for the `'upgrade'` event, no early exit is\n // triggered here if the user calls `websocket.close()` or\n // `websocket.terminate()` from a listener of the `'redirect'` event. This\n // is because the user can also call `request.destroy()` with an error\n // before calling `websocket.close()` or `websocket.terminate()` and this\n // would result in an error being emitted on the `request` object with no\n // `'error'` event listeners attached.\n //\n websocket.emit('redirect', websocket.url, req);\n }\n } else {\n req = websocket._req = request(opts);\n }\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req[kAborted]) return;\n\n req = websocket._req = null;\n emitErrorAndClose(websocket, err);\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n let addr;\n\n try {\n addr = new URL(location, address);\n } catch (e) {\n const err = new SyntaxError(`Invalid URL: ${location}`);\n emitErrorAndClose(websocket, err);\n return;\n }\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the\n // `'upgrade'` event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n const upgrade = res.headers.upgrade;\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n abortHandshake(websocket, socket, 'Invalid Upgrade header');\n return;\n }\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n let protError;\n\n if (serverProt !== undefined) {\n if (!protocolSet.size) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (!protocolSet.has(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n } else if (protocolSet.size) {\n protError = 'Server sent no subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n if (secWebSocketExtensions !== undefined) {\n if (!perMessageDeflate) {\n const message =\n 'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n 'was requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n let extensions;\n\n try {\n extensions = parse(secWebSocketExtensions);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n const extensionNames = Object.keys(extensions);\n\n if (\n extensionNames.length !== 1 ||\n extensionNames[0] !== PerMessageDeflate.extensionName\n ) {\n const message = 'Server indicated an extension that was not requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n try {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n\n websocket.setSocket(socket, head, {\n allowSynchronousEvents: opts.allowSynchronousEvents,\n generateMask: opts.generateMask,\n maxPayload: opts.maxPayload,\n skipUTF8Validation: opts.skipUTF8Validation\n });\n });\n\n if (opts.finishRequest) {\n opts.finishRequest(req, websocket);\n } else {\n req.end();\n }\n}\n\n/**\n * Emit the `'error'` and `'close'` events.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n websocket._readyState = WebSocket.CLOSING;\n //\n // The following assignment is practically useless and is done only for\n // consistency.\n //\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n * abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream[kAborted] = true;\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n process.nextTick(emitErrorAndClose, websocket, err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = isBlob(data) ? data.size : toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n process.nextTick(cb, err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {Buffer} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (websocket._socket[kWebSocket] === undefined) return;\n\n websocket._socket.removeListener('data', socketOnData);\n process.nextTick(resume, websocket._socket);\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n const websocket = this[kWebSocket];\n\n if (!websocket.isPaused) websocket._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket._socket[kWebSocket] !== undefined) {\n websocket._socket.removeListener('data', socketOnData);\n\n //\n // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n // https://github.com/websockets/ws/issues/1940.\n //\n process.nextTick(resume, websocket._socket);\n\n websocket.close(err[kStatusCode]);\n }\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {Buffer|ArrayBuffer|Buffer[])} data The message\n * @param {Boolean} isBinary Specifies whether the message is binary or not\n * @private\n */\nfunction receiverOnMessage(data, isBinary) {\n this[kWebSocket].emit('message', data, isBinary);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n stream.resume();\n}\n\n/**\n * The `Sender` error event handler.\n *\n * @param {Error} The error\n * @private\n */\nfunction senderOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket.readyState === WebSocket.CLOSED) return;\n if (websocket.readyState === WebSocket.OPEN) {\n websocket._readyState = WebSocket.CLOSING;\n setCloseTimer(websocket);\n }\n\n //\n // `socket.end()` is used instead of `socket.destroy()` to allow the other\n // peer to finish sending queued data. There is no need to set a timer here\n // because `CLOSING` means that it is already set or not needed.\n //\n this._socket.end();\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * Set a timer to destroy the underlying raw socket of a WebSocket.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @private\n */\nfunction setCloseTimer(websocket) {\n websocket._closeTimer = setTimeout(\n websocket._socket.destroy.bind(websocket._socket),\n closeTimeout\n );\n}\n\n/**\n * The listener of the socket `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('data', socketOnData);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n let chunk;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written and `readable.read()`\n // will return `null`. If instead, the socket is paused, any possible buffered\n // data will be read as a single chunk.\n //\n if (\n !this._readableState.endEmitted &&\n !websocket._closeFrameReceived &&\n !websocket._receiver._writableState.errorEmitted &&\n (chunk = websocket._socket.read()) !== null\n ) {\n websocket._receiver.write(chunk);\n }\n\n websocket._receiver.end();\n\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the socket `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the socket `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the socket `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^WebSocket$\" }] */\n'use strict';\n\nconst WebSocket = require('./websocket');\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let terminateOnDestroy = true;\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg, isBinary) {\n const data =\n !isBinary && duplex._readableState.objectMode ? msg.toString() : msg;\n\n if (!duplex.push(data)) ws.pause();\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n //\n // - If the `'error'` event is emitted before the `'open'` event, then\n // `ws.terminate()` is a noop as no socket is assigned.\n // - Otherwise, the error is re-emitted by the listener of the `'error'`\n // event of the `Receiver` object. The listener already closes the\n // connection by calling `ws.close()`. This allows a close frame to be\n // sent to the other peer. If `ws.terminate()` is called right after this,\n // then the close frame might not be sent.\n terminateOnDestroy = false;\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n\n if (terminateOnDestroy) ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (ws.isPaused) ws.resume();\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n","'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.\n *\n * @param {String} header The field value of the header\n * @return {Set} The subprotocol names\n * @public\n */\nfunction parse(header) {\n const protocols = new Set();\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (i; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n\n const protocol = header.slice(start, end);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n\n if (start === -1 || end !== -1) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n const protocol = header.slice(start, i);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n return protocols;\n}\n\nmodule.exports = { parse };\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst http = require('http');\nconst { Duplex } = require('stream');\nconst { createHash } = require('crypto');\n\nconst extension = require('./extension');\nconst PerMessageDeflate = require('./permessage-deflate');\nconst subprotocol = require('./subprotocol');\nconst WebSocket = require('./websocket');\nconst { GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n * server to use\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket`\n * class to use. It must be the `WebSocket` class or class that extends it\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n allowSynchronousEvents: true,\n autoPong: true,\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n WebSocket,\n ...options\n };\n\n if (\n (options.port == null && !options.server && !options.noServer) ||\n (options.port != null && (options.server || options.noServer)) ||\n (options.server && options.noServer)\n ) {\n throw new TypeError(\n 'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n 'must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = http.createServer((req, res) => {\n const body = http.STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) {\n this.clients = new Set();\n this._shouldEmitClose = false;\n }\n\n this.options = options;\n this._state = RUNNING;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Stop the server from accepting new connections and emit the `'close'` event\n * when all existing connections are closed.\n *\n * @param {Function} [cb] A one-time listener for the `'close'` event\n * @public\n */\n close(cb) {\n if (this._state === CLOSED) {\n if (cb) {\n this.once('close', () => {\n cb(new Error('The server is not running'));\n });\n }\n\n process.nextTick(emitClose, this);\n return;\n }\n\n if (cb) this.once('close', cb);\n\n if (this._state === CLOSING) return;\n this._state = CLOSING;\n\n if (this.options.noServer || this.options.server) {\n if (this._server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n }\n\n if (this.clients) {\n if (!this.clients.size) {\n process.nextTick(emitClose, this);\n } else {\n this._shouldEmitClose = true;\n }\n } else {\n process.nextTick(emitClose, this);\n }\n } else {\n const server = this._server;\n\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // The HTTP/S server was created internally. Close it, and rely on its\n // `'close'` event.\n //\n server.close(() => {\n emitClose(this);\n });\n }\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key = req.headers['sec-websocket-key'];\n const upgrade = req.headers.upgrade;\n const version = +req.headers['sec-websocket-version'];\n\n if (req.method !== 'GET') {\n const message = 'Invalid HTTP method';\n abortHandshakeOrEmitwsClientError(this, req, socket, 405, message);\n return;\n }\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n const message = 'Invalid Upgrade header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (key === undefined || !keyRegex.test(key)) {\n const message = 'Missing or invalid Sec-WebSocket-Key header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (version !== 13 && version !== 8) {\n const message = 'Missing or invalid Sec-WebSocket-Version header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message, {\n 'Sec-WebSocket-Version': '13, 8'\n });\n return;\n }\n\n if (!this.shouldHandle(req)) {\n abortHandshake(socket, 400);\n return;\n }\n\n const secWebSocketProtocol = req.headers['sec-websocket-protocol'];\n let protocols = new Set();\n\n if (secWebSocketProtocol !== undefined) {\n try {\n protocols = subprotocol.parse(secWebSocketProtocol);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Protocol header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n const secWebSocketExtensions = req.headers['sec-websocket-extensions'];\n const extensions = {};\n\n if (\n this.options.perMessageDeflate &&\n secWebSocketExtensions !== undefined\n ) {\n const perMessageDeflate = new PerMessageDeflate(\n this.options.perMessageDeflate,\n true,\n this.options.maxPayload\n );\n\n try {\n const offers = extension.parse(secWebSocketExtensions);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n const message =\n 'Invalid or unacceptable Sec-WebSocket-Extensions header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(\n extensions,\n key,\n protocols,\n req,\n socket,\n head,\n cb\n );\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(extensions, key, protocols, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {Object} extensions The accepted extensions\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Set} protocols The subprotocols\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(extensions, key, protocols, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new this.options.WebSocket(null, undefined, this.options);\n\n if (protocols.size) {\n //\n // Optionally call external protocol selection handler.\n //\n const protocol = this.options.handleProtocols\n ? this.options.handleProtocols(protocols, req)\n : protocols.values().next().value;\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = extension.format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, {\n allowSynchronousEvents: this.options.allowSynchronousEvents,\n maxPayload: this.options.maxPayload,\n skipUTF8Validation: this.options.skipUTF8Validation\n });\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => {\n this.clients.delete(ws);\n\n if (this._shouldEmitClose && !this.clients.size) {\n process.nextTick(emitClose, this);\n }\n });\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of <event, listener>\n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.<String, Function>} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server._state = CLOSED;\n server.emit('close');\n}\n\n/**\n * Handle socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n //\n // The socket is writable unless the user destroyed or ended it before calling\n // `server.handleUpgrade()` or in the `verifyClient` function, which is a user\n // error. Handling this does not make much sense as the worst that can happen\n // is that some of the data written by the user might be discarded due to the\n // call to `socket.end()` below, which triggers an `'error'` event that in\n // turn causes the socket to be destroyed.\n //\n message = message || http.STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.once('finish', socket.destroy);\n\n socket.end(\n `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n}\n\n/**\n * Emit a `'wsClientError'` event on a `WebSocketServer` if there is at least\n * one listener for it, otherwise call `abortHandshake()`.\n *\n * @param {WebSocketServer} server The WebSocket server\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} message The HTTP response body\n * @param {Object} [headers] The HTTP response headers\n * @private\n */\nfunction abortHandshakeOrEmitwsClientError(\n server,\n req,\n socket,\n code,\n message,\n headers\n) {\n if (server.listenerCount('wsClientError')) {\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError);\n\n server.emit('wsClientError', err, socket, req);\n } else {\n abortHandshake(socket, code, message, headers);\n }\n}\n","module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n var pathext = options.pathExt !== undefined ?\n options.pathExt : process.env.PATHEXT\n\n if (!pathext) {\n return true\n }\n\n pathext = pathext.split(';')\n if (pathext.indexOf('') !== -1) {\n return true\n }\n for (var i = 0; i < pathext.length; i++) {\n var p = pathext[i].toLowerCase()\n if (p && path.substr(-p.length).toLowerCase() === p) {\n return true\n }\n }\n return false\n}\n\nfunction checkStat (stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) {\n return false\n }\n return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, path, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), path, options)\n}\n","module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n var mod = stat.mode\n var uid = stat.uid\n var gid = stat.gid\n\n var myUid = options.uid !== undefined ?\n options.uid : process.getuid && process.getuid()\n var myGid = options.gid !== undefined ?\n options.gid : process.getgid && process.getgid()\n\n var u = parseInt('100', 8)\n var g = parseInt('010', 8)\n var o = parseInt('001', 8)\n var ug = u | g\n\n var ret = (mod & o) ||\n (mod & g) && gid === myGid ||\n (mod & u) && uid === myUid ||\n (mod & ug) && myUid === 0\n\n return ret\n}\n","var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n core = require('./windows.js')\n} else {\n core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n if (!cb) {\n if (typeof Promise !== 'function') {\n throw new TypeError('callback not provided')\n }\n\n return new Promise(function (resolve, reject) {\n isexe(path, options || {}, function (er, is) {\n if (er) {\n reject(er)\n } else {\n resolve(is)\n }\n })\n })\n }\n\n core(path, options || {}, function (er, is) {\n // ignore EACCES because that just means we aren't allowed to run it\n if (er) {\n if (er.code === 'EACCES' || options && options.ignoreErrors) {\n er = null\n is = false\n }\n }\n cb(er, is)\n })\n}\n\nfunction sync (path, options) {\n // my kingdom for a filtered catch\n try {\n return core.sync(path, options || {})\n } catch (er) {\n if (options && options.ignoreErrors || er.code === 'EACCES') {\n return false\n } else {\n throw er\n }\n }\n}\n","const isWindows = process.platform === 'win32' ||\n process.env.OSTYPE === 'cygwin' ||\n process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n const colon = opt.colon || COLON\n\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n : (\n [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(opt.path || process.env.PATH ||\n /* istanbul ignore next: very unusual */ '').split(colon),\n ]\n )\n const pathExtExe = isWindows\n ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n : ''\n const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n pathExt.unshift('')\n }\n\n return {\n pathEnv,\n pathExt,\n pathExtExe,\n }\n}\n\nconst which = (cmd, opt, cb) => {\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (!opt)\n opt = {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n const step = i => new Promise((resolve, reject) => {\n if (i === pathEnv.length)\n return opt.all && found.length ? resolve(found)\n : reject(getNotFoundError(cmd))\n\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n resolve(subStep(p, i, 0))\n })\n\n const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n if (ii === pathExt.length)\n return resolve(step(i + 1))\n const ext = pathExt[ii]\n isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n if (!er && is) {\n if (opt.all)\n found.push(p + ext)\n else\n return resolve(p + ext)\n }\n return resolve(subStep(p, i, ii + 1))\n })\n })\n\n return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n opt = opt || {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (let i = 0; i < pathEnv.length; i ++) {\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n for (let j = 0; j < pathExt.length; j ++) {\n const cur = p + pathExt[j]\n try {\n const is = isexe.sync(cur, { pathExt: pathExtExe })\n if (is) {\n if (opt.all)\n found.push(cur)\n else\n return cur\n }\n } catch (ex) {}\n }\n }\n\n if (opt.all && found.length)\n return found\n\n if (opt.nothrow)\n return null\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n","'use strict';\n\nconst pathKey = (options = {}) => {\n\tconst environment = options.env || process.env;\n\tconst platform = options.platform || process.platform;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(environment).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n};\n\nmodule.exports = pathKey;\n// TODO: Remove this for the next major release\nmodule.exports.default = pathKey;\n","'use strict';\n\nconst path = require('path');\nconst which = require('which');\nconst getPathKey = require('path-key');\n\nfunction resolveCommandAttempt(parsed, withoutPathExt) {\n const env = parsed.options.env || process.env;\n const cwd = process.cwd();\n const hasCustomCwd = parsed.options.cwd != null;\n // Worker threads do not have process.chdir()\n const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled;\n\n // If a custom `cwd` was specified, we need to change the process cwd\n // because `which` will do stat calls but does not support a custom cwd\n if (shouldSwitchCwd) {\n try {\n process.chdir(parsed.options.cwd);\n } catch (err) {\n /* Empty */\n }\n }\n\n let resolved;\n\n try {\n resolved = which.sync(parsed.command, {\n path: env[getPathKey({ env })],\n pathExt: withoutPathExt ? path.delimiter : undefined,\n });\n } catch (e) {\n /* Empty */\n } finally {\n if (shouldSwitchCwd) {\n process.chdir(cwd);\n }\n }\n\n // If we successfully resolved, ensure that an absolute path is returned\n // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it\n if (resolved) {\n resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved);\n }\n\n return resolved;\n}\n\nfunction resolveCommand(parsed) {\n return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);\n}\n\nmodule.exports = resolveCommand;\n","'use strict';\n\n// See http://www.robvanderwoude.com/escapechars.php\nconst metaCharsRegExp = /([()\\][%!^\"`<>&|;, *?])/g;\n\nfunction escapeCommand(arg) {\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n return arg;\n}\n\nfunction escapeArgument(arg, doubleEscapeMetaChars) {\n // Convert to string\n arg = `${arg}`;\n\n // Algorithm below is based on https://qntm.org/cmd\n // It's slightly altered to disable JS backtracking to avoid hanging on specially crafted input\n // Please see https://github.com/moxystudio/node-cross-spawn/pull/160 for more information\n\n // Sequence of backslashes followed by a double quote:\n // double up all the backslashes and escape the double quote\n arg = arg.replace(/(?=(\\\\+?)?)\\1\"/g, '$1$1\\\\\"');\n\n // Sequence of backslashes followed by the end of the string\n // (which will become a double quote later):\n // double up all the backslashes\n arg = arg.replace(/(?=(\\\\+?)?)\\1$/, '$1$1');\n\n // All other backslashes occur literally\n\n // Quote the whole thing:\n arg = `\"${arg}\"`;\n\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n // Double escape meta chars if necessary\n if (doubleEscapeMetaChars) {\n arg = arg.replace(metaCharsRegExp, '^$1');\n }\n\n return arg;\n}\n\nmodule.exports.command = escapeCommand;\nmodule.exports.argument = escapeArgument;\n","'use strict';\nmodule.exports = /^#!(.*)/;\n","'use strict';\nconst shebangRegex = require('shebang-regex');\n\nmodule.exports = (string = '') => {\n\tconst match = string.match(shebangRegex);\n\n\tif (!match) {\n\t\treturn null;\n\t}\n\n\tconst [path, argument] = match[0].replace(/#! ?/, '').split(' ');\n\tconst binary = path.split('/').pop();\n\n\tif (binary === 'env') {\n\t\treturn argument;\n\t}\n\n\treturn argument ? `${binary} ${argument}` : binary;\n};\n","'use strict';\n\nconst fs = require('fs');\nconst shebangCommand = require('shebang-command');\n\nfunction readShebang(command) {\n // Read the first 150 bytes from the file\n const size = 150;\n const buffer = Buffer.alloc(size);\n\n let fd;\n\n try {\n fd = fs.openSync(command, 'r');\n fs.readSync(fd, buffer, 0, size, 0);\n fs.closeSync(fd);\n } catch (e) { /* Empty */ }\n\n // Attempt to extract shebang (null is returned if not a shebang)\n return shebangCommand(buffer.toString());\n}\n\nmodule.exports = readShebang;\n","'use strict';\n\nconst path = require('path');\nconst resolveCommand = require('./util/resolveCommand');\nconst escape = require('./util/escape');\nconst readShebang = require('./util/readShebang');\n\nconst isWin = process.platform === 'win32';\nconst isExecutableRegExp = /\\.(?:com|exe)$/i;\nconst isCmdShimRegExp = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\n\nfunction detectShebang(parsed) {\n parsed.file = resolveCommand(parsed);\n\n const shebang = parsed.file && readShebang(parsed.file);\n\n if (shebang) {\n parsed.args.unshift(parsed.file);\n parsed.command = shebang;\n\n return resolveCommand(parsed);\n }\n\n return parsed.file;\n}\n\nfunction parseNonShell(parsed) {\n if (!isWin) {\n return parsed;\n }\n\n // Detect & add support for shebangs\n const commandFile = detectShebang(parsed);\n\n // We don't need a shell if the command filename is an executable\n const needsShell = !isExecutableRegExp.test(commandFile);\n\n // If a shell is required, use cmd.exe and take care of escaping everything correctly\n // Note that `forceShell` is an hidden option used only in tests\n if (parsed.options.forceShell || needsShell) {\n // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/`\n // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument\n // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called,\n // we need to double escape them\n const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);\n\n // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\\bar)\n // This is necessary otherwise it will always fail with ENOENT in those cases\n parsed.command = path.normalize(parsed.command);\n\n // Escape command & arguments\n parsed.command = escape.command(parsed.command);\n parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));\n\n const shellCommand = [parsed.command].concat(parsed.args).join(' ');\n\n parsed.args = ['/d', '/s', '/c', `\"${shellCommand}\"`];\n parsed.command = process.env.comspec || 'cmd.exe';\n parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped\n }\n\n return parsed;\n}\n\nfunction parse(command, args, options) {\n // Normalize arguments, similar to nodejs\n if (args && !Array.isArray(args)) {\n options = args;\n args = null;\n }\n\n args = args ? args.slice(0) : []; // Clone array to avoid changing the original\n options = Object.assign({}, options); // Clone object to avoid changing the original\n\n // Build our parsed object\n const parsed = {\n command,\n args,\n options,\n file: undefined,\n original: {\n command,\n args,\n },\n };\n\n // Delegate further parsing to shell or non-shell\n return options.shell ? parsed : parseNonShell(parsed);\n}\n\nmodule.exports = parse;\n","'use strict';\n\nconst isWin = process.platform === 'win32';\n\nfunction notFoundError(original, syscall) {\n return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {\n code: 'ENOENT',\n errno: 'ENOENT',\n syscall: `${syscall} ${original.command}`,\n path: original.command,\n spawnargs: original.args,\n });\n}\n\nfunction hookChildProcess(cp, parsed) {\n if (!isWin) {\n return;\n }\n\n const originalEmit = cp.emit;\n\n cp.emit = function (name, arg1) {\n // If emitting \"exit\" event and exit code is 1, we need to check if\n // the command exists and emit an \"error\" instead\n // See https://github.com/IndigoUnited/node-cross-spawn/issues/16\n if (name === 'exit') {\n const err = verifyENOENT(arg1, parsed);\n\n if (err) {\n return originalEmit.call(cp, 'error', err);\n }\n }\n\n return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params\n };\n}\n\nfunction verifyENOENT(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawn');\n }\n\n return null;\n}\n\nfunction verifyENOENTSync(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawnSync');\n }\n\n return null;\n}\n\nmodule.exports = {\n hookChildProcess,\n verifyENOENT,\n verifyENOENTSync,\n notFoundError,\n};\n","'use strict';\n\nconst cp = require('child_process');\nconst parse = require('./lib/parse');\nconst enoent = require('./lib/enoent');\n\nfunction spawn(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\n\n // Hook into child process \"exit\" event to emit an error if the command\n // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n enoent.hookChildProcess(spawned, parsed);\n\n return spawned;\n}\n\nfunction spawnSync(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);\n\n // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);\n\n return result;\n}\n\nmodule.exports = spawn;\nmodule.exports.spawn = spawn;\nmodule.exports.sync = spawnSync;\n\nmodule.exports._parse = parse;\nmodule.exports._enoent = enoent;\n","'use strict';\n\nconst { PassThrough } = require('stream');\n\nmodule.exports = function (/*streams...*/) {\n var sources = []\n var output = new PassThrough({objectMode: true})\n\n output.setMaxListeners(0)\n\n output.add = add\n output.isEmpty = isEmpty\n\n output.on('unpipe', remove)\n\n Array.prototype.slice.call(arguments).forEach(add)\n\n return output\n\n function add (source) {\n if (Array.isArray(source)) {\n source.forEach(add)\n return this\n }\n\n sources.push(source);\n source.once('end', remove.bind(null, source))\n source.once('error', output.emit.bind(output, 'error'))\n source.pipe(output, {end: false})\n return this\n }\n\n function isEmpty () {\n return sources.length == 0;\n }\n\n function remove (source) {\n sources = sources.filter(function (it) { return it !== source })\n if (!sources.length && output.readable) { output.end() }\n }\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.of = exports.PropertiesFile = void 0;\n\nvar _fs = _interopRequireDefault(require(\"fs\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n/*\r\n * properties\r\n *\r\n * Copyright (c) 2013 Matt Steele\r\n * Licensed under the MIT license.\r\n */\n\n\nclass PropertiesFile {\n constructor(...args) {\n this.objs = {};\n\n if (args.length) {\n this.of.apply(this, args);\n }\n }\n\n makeKeys(line) {\n if (line && line.indexOf('#') !== 0) {\n //let splitIndex = line.indexOf('=');\n let separatorPositions = ['=', ':'].map(sep => {\n return line.indexOf(sep);\n }).filter(index => {\n return index > -1;\n });\n let splitIndex = Math.min(...separatorPositions);\n let key = line.substring(0, splitIndex).trim();\n let value = line.substring(splitIndex + 1).trim(); // if keys already exists ...\n\n if (this.objs.hasOwnProperty(key)) {\n // if it is already an Array\n if (Array.isArray(this.objs[key])) {\n // just push the new value\n this.objs[key].push(value);\n } else {\n // transform the value into Array\n let oldValue = this.objs[key];\n this.objs[key] = [oldValue, value];\n }\n } else {\n // the key does not exists\n const escapedValue = value.replace(/\"/g, '\\\\\"') // escape \"\n .replace(/\\\\:/g, ':') // remove \\ before :\n .replace(/\\\\=/g, '='); // remove \\ before =\n\n this.objs[key] = unescape(JSON.parse('\"' + escapedValue + '\"'));\n }\n }\n }\n\n addFile(file) {\n let data = _fs.default.readFileSync(file, 'utf-8');\n\n let items = data.split(/\\r?\\n/);\n let me = this;\n\n for (let i = 0; i < items.length; i++) {\n let line = items[i];\n\n while (line.substring(line.length - 1) === '\\\\') {\n line = line.slice(0, -1);\n let nextLine = items[i + 1];\n line = line + nextLine.trim();\n i++;\n }\n\n me.makeKeys(line);\n }\n }\n\n of(...args) {\n for (let i = 0; i < args.length; i++) {\n this.addFile(args[i]);\n }\n }\n\n get(key, defaultValue) {\n if (this.objs.hasOwnProperty(key)) {\n if (Array.isArray(this.objs[key])) {\n let ret = [];\n\n for (let i = 0; i < this.objs[key].length; i++) {\n ret[i] = this.interpolate(this.objs[key][i]);\n }\n\n return ret;\n } else {\n return typeof this.objs[key] === 'undefined' ? '' : this.interpolate(this.objs[key]);\n }\n }\n\n return defaultValue;\n }\n\n getLast(key, defaultValue) {\n if (this.objs.hasOwnProperty(key)) {\n if (Array.isArray(this.objs[key])) {\n var lg = this.objs[key].length;\n return this.interpolate(this.objs[key][lg - 1]);\n } else {\n return typeof this.objs[key] === 'undefined' ? '' : this.interpolate(this.objs[key]);\n }\n }\n\n return defaultValue;\n }\n\n getFirst(key, defaultValue) {\n if (this.objs.hasOwnProperty(key)) {\n if (Array.isArray(this.objs[key])) {\n return this.interpolate(this.objs[key][0]);\n } else {\n return typeof this.objs[key] === 'undefined' ? '' : this.interpolate(this.objs[key]);\n }\n }\n\n return defaultValue;\n }\n\n getInt(key, defaultIntValue) {\n let val = this.getLast(key);\n\n if (!val) {\n return defaultIntValue;\n } else {\n return parseInt(val, 10);\n }\n }\n\n getFloat(key, defaultFloatValue) {\n let val = this.getLast(key);\n\n if (!val) {\n return defaultFloatValue;\n } else {\n return parseFloat(val);\n }\n }\n\n getBoolean(key, defaultBooleanValue) {\n function parseBool(b) {\n return !/^(false|0)$/i.test(b) && !!b;\n }\n\n let val = this.getLast(key);\n\n if (!val) {\n return defaultBooleanValue || false;\n } else {\n return parseBool(val);\n }\n }\n\n set(key, value) {\n this.objs[key] = value;\n }\n\n interpolate(s) {\n let me = this;\n return s.replace(/\\\\\\\\/g, '\\\\').replace(/\\$\\{([A-Za-z0-9\\.\\-\\_]*)\\}/g, function (match) {\n return me.getLast(match.substring(2, match.length - 1));\n });\n }\n\n getKeys() {\n let keys = [];\n\n for (let key in this.objs) {\n keys.push(key);\n }\n\n return keys;\n }\n\n getMatchingKeys(matchstr) {\n let keys = [];\n\n for (let key in this.objs) {\n if (key.search(matchstr) !== -1) {\n keys.push(key);\n }\n }\n\n return keys;\n }\n\n reset() {\n this.objs = {};\n }\n\n} // Retain 'of' from v1 for backward compatibility\n\n\nexports.PropertiesFile = PropertiesFile;\n\nlet of = function of(...args) {\n let globalFile = new PropertiesFile();\n globalFile.of.apply(globalFile, args);\n return globalFile;\n};\n\nexports.of = of;\n","// https://www.appveyor.com/docs/environment-variables\n\nexport default {\n detect({ env }) {\n return Boolean(env.APPVEYOR);\n },\n configuration({ env }) {\n const pr = env.APPVEYOR_PULL_REQUEST_NUMBER;\n const isPr = Boolean(pr);\n\n return {\n name: \"Appveyor\",\n service: \"appveyor\",\n commit: env.APPVEYOR_REPO_COMMIT,\n tag: env.APPVEYOR_REPO_TAG_NAME,\n build: env.APPVEYOR_BUILD_NUMBER,\n buildUrl: `https://ci.appveyor.com/project/${env.APPVEYOR_PROJECT_SLUG}/build/${env.APPVEYOR_BUILD_VERSION}`,\n branch: env.APPVEYOR_REPO_BRANCH,\n job: env.APPVEYOR_JOB_NUMBER,\n jobUrl: `https://ci.appveyor.com/project/${env.APPVEYOR_PROJECT_SLUG}/build/job/${env.APPVEYOR_JOB_ID}`,\n pr,\n isPr,\n prBranch: env.APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH,\n slug: env.APPVEYOR_REPO_NAME,\n root: env.APPVEYOR_BUILD_FOLDER,\n };\n },\n};\n","export function prNumber(pr) {\n return (/\\d+(?!.*\\d+)/.exec(pr) || [])[0];\n}\n\nexport function parseBranch(branch) {\n return branch\n ? /^(?:refs\\/heads\\/)?(?<branch>.+)$/i.exec(branch)[1]\n : undefined;\n}\n","// https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables\n// The docs indicate that SYSTEM_PULLREQUEST_SOURCEBRANCH and SYSTEM_PULLREQUEST_TARGETBRANCH are in the long format (e.g `refs/heads/master`) however tests show they are both in the short format (e.g. `master`)\nimport { parseBranch } from \"../lib/utils.js\";\n\nexport default {\n detect({ env }) {\n return Boolean(env.BUILD_BUILDURI);\n },\n configuration({ env }) {\n const pr = env.SYSTEM_PULLREQUEST_PULLREQUESTID;\n const isPr = Boolean(pr);\n\n return {\n name: \"Azure Pipelines\",\n service: \"azurePipelines\",\n commit: env.BUILD_SOURCEVERSION,\n build: env.BUILD_BUILDNUMBER,\n branch: parseBranch(\n isPr ? env.SYSTEM_PULLREQUEST_TARGETBRANCH : env.BUILD_SOURCEBRANCH,\n ),\n pr,\n isPr,\n prBranch: parseBranch(\n isPr ? env.SYSTEM_PULLREQUEST_SOURCEBRANCH : undefined,\n ),\n root: env.BUILD_REPOSITORY_LOCALPATH,\n };\n },\n};\n","// https://confluence.atlassian.com/bamboo/bamboo-variables-289277087.html\n\nexport default {\n detect({ env }) {\n return Boolean(env.bamboo_agentId);\n },\n configuration({ env }) {\n return {\n name: \"Bamboo\",\n service: \"bamboo\",\n commit: env.bamboo_planRepository_1_revision,\n build: env.bamboo_buildNumber,\n buildUrl: env.bamboo_buildResultsUrl,\n branch: env.bamboo_planRepository_1_branchName,\n job: env.bamboo_buildKey,\n root: env.bamboo_build_working_directory,\n };\n },\n};\n","// https://confluence.atlassian.com/bitbucket/environment-variables-794502608.html\n\nexport default {\n detect({ env }) {\n return Boolean(env.BITBUCKET_BUILD_NUMBER);\n },\n configuration({ env }) {\n return {\n name: \"Bitbucket Pipelines\",\n service: \"bitbucket\",\n commit: env.BITBUCKET_COMMIT,\n tag: env.BITBUCKET_TAG,\n build: env.BITBUCKET_BUILD_NUMBER,\n buildUrl: `https://bitbucket.org/${env.BITBUCKET_REPO_FULL_NAME}/addon/pipelines/home#!/results/${env.BITBUCKET_BUILD_NUMBER}`,\n branch: env.BITBUCKET_BRANCH,\n slug: env.BITBUCKET_REPO_FULL_NAME,\n root: env.BITBUCKET_CLONE_DIR,\n };\n },\n};\n","// https://devcenter.bitrise.io/builds/available-environment-variables/#exposed-by-bitriseio\n\nexport default {\n detect({ env }) {\n return Boolean(env.BITRISE_IO);\n },\n configuration({ env }) {\n const pr =\n env.BITRISE_PULL_REQUEST === \"false\"\n ? undefined\n : env.BITRISE_PULL_REQUEST;\n const isPr = Boolean(pr);\n\n return {\n name: \"Bitrise\",\n service: \"bitrise\",\n commit: env.BITRISE_GIT_COMMIT,\n tag: env.BITRISE_GIT_TAG,\n build: env.BITRISE_BUILD_NUMBER,\n buildUrl: env.BITRISE_BUILD_URL,\n branch: isPr ? env.BITRISEIO_GIT_BRANCH_DEST : env.BITRISE_GIT_BRANCH,\n pr,\n isPr,\n prBranch: isPr ? env.BITRISE_GIT_BRANCH : undefined,\n slug: env.BITRISE_APP_SLUG,\n };\n },\n};\n","// https://buddy.works/knowledge/deployments/how-use-environment-variables#default-environment-variables\n\nimport { prNumber } from \"../lib/utils.js\";\n\nexport default {\n detect({ env }) {\n return Boolean(env.BUDDY_WORKSPACE_ID);\n },\n configuration({ env }) {\n const pr = prNumber(env.BUDDY_EXECUTION_PULL_REQUEST_ID);\n const isPr = Boolean(pr);\n\n return {\n name: \"Buddy\",\n service: \"buddy\",\n commit: env.BUDDY_EXECUTION_REVISION,\n tag: env.BUDDY_EXECUTION_TAG,\n build: env.BUDDY_EXECUTION_ID,\n buildUrl: env.BUDDY_EXECUTION_URL,\n branch: isPr\n ? env.BUDDY_EXECUTION_PULL_REQUEST_HEAD_BRANCH\n : env.BUDDY_EXECUTION_BRANCH,\n pr,\n isPr,\n slug: env.BUDDY_REPO_SLUG,\n };\n },\n};\n","import {Buffer} from 'node:buffer';\nimport path from 'node:path';\nimport childProcess from 'node:child_process';\nimport process from 'node:process';\nimport crossSpawn from 'cross-spawn';\nimport stripFinalNewline from 'strip-final-newline';\nimport {npmRunPathEnv} from 'npm-run-path';\nimport onetime from 'onetime';\nimport {makeError} from './lib/error.js';\nimport {normalizeStdio, normalizeStdioNode} from './lib/stdio.js';\nimport {spawnedKill, spawnedCancel, setupTimeout, validateTimeout, setExitHandler} from './lib/kill.js';\nimport {addPipeMethods} from './lib/pipe.js';\nimport {handleInput, getSpawnedResult, makeAllStream, handleInputSync} from './lib/stream.js';\nimport {mergePromise, getSpawnedPromise} from './lib/promise.js';\nimport {joinCommand, parseCommand, parseTemplates, getEscapedCommand} from './lib/command.js';\nimport {logCommand, verboseDefault} from './lib/verbose.js';\n\nconst DEFAULT_MAX_BUFFER = 1000 * 1000 * 100;\n\nconst getEnv = ({env: envOption, extendEnv, preferLocal, localDir, execPath}) => {\n\tconst env = extendEnv ? {...process.env, ...envOption} : envOption;\n\n\tif (preferLocal) {\n\t\treturn npmRunPathEnv({env, cwd: localDir, execPath});\n\t}\n\n\treturn env;\n};\n\nconst handleArguments = (file, args, options = {}) => {\n\tconst parsed = crossSpawn._parse(file, args, options);\n\tfile = parsed.command;\n\targs = parsed.args;\n\toptions = parsed.options;\n\n\toptions = {\n\t\tmaxBuffer: DEFAULT_MAX_BUFFER,\n\t\tbuffer: true,\n\t\tstripFinalNewline: true,\n\t\textendEnv: true,\n\t\tpreferLocal: false,\n\t\tlocalDir: options.cwd || process.cwd(),\n\t\texecPath: process.execPath,\n\t\tencoding: 'utf8',\n\t\treject: true,\n\t\tcleanup: true,\n\t\tall: false,\n\t\twindowsHide: true,\n\t\tverbose: verboseDefault,\n\t\t...options,\n\t};\n\n\toptions.env = getEnv(options);\n\n\toptions.stdio = normalizeStdio(options);\n\n\tif (process.platform === 'win32' && path.basename(file, '.exe') === 'cmd') {\n\t\t// #116\n\t\targs.unshift('/q');\n\t}\n\n\treturn {file, args, options, parsed};\n};\n\nconst handleOutput = (options, value, error) => {\n\tif (typeof value !== 'string' && !Buffer.isBuffer(value)) {\n\t\t// When `execaSync()` errors, we normalize it to '' to mimic `execa()`\n\t\treturn error === undefined ? undefined : '';\n\t}\n\n\tif (options.stripFinalNewline) {\n\t\treturn stripFinalNewline(value);\n\t}\n\n\treturn value;\n};\n\nexport function execa(file, args, options) {\n\tconst parsed = handleArguments(file, args, options);\n\tconst command = joinCommand(file, args);\n\tconst escapedCommand = getEscapedCommand(file, args);\n\tlogCommand(escapedCommand, parsed.options);\n\n\tvalidateTimeout(parsed.options);\n\n\tlet spawned;\n\ttry {\n\t\tspawned = childProcess.spawn(parsed.file, parsed.args, parsed.options);\n\t} catch (error) {\n\t\t// Ensure the returned error is always both a promise and a child process\n\t\tconst dummySpawned = new childProcess.ChildProcess();\n\t\tconst errorPromise = Promise.reject(makeError({\n\t\t\terror,\n\t\t\tstdout: '',\n\t\t\tstderr: '',\n\t\t\tall: '',\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tparsed,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false,\n\t\t}));\n\t\tmergePromise(dummySpawned, errorPromise);\n\t\treturn dummySpawned;\n\t}\n\n\tconst spawnedPromise = getSpawnedPromise(spawned);\n\tconst timedPromise = setupTimeout(spawned, parsed.options, spawnedPromise);\n\tconst processDone = setExitHandler(spawned, parsed.options, timedPromise);\n\n\tconst context = {isCanceled: false};\n\n\tspawned.kill = spawnedKill.bind(null, spawned.kill.bind(spawned));\n\tspawned.cancel = spawnedCancel.bind(null, spawned, context);\n\n\tconst handlePromise = async () => {\n\t\tconst [{error, exitCode, signal, timedOut}, stdoutResult, stderrResult, allResult] = await getSpawnedResult(spawned, parsed.options, processDone);\n\t\tconst stdout = handleOutput(parsed.options, stdoutResult);\n\t\tconst stderr = handleOutput(parsed.options, stderrResult);\n\t\tconst all = handleOutput(parsed.options, allResult);\n\n\t\tif (error || exitCode !== 0 || signal !== null) {\n\t\t\tconst returnedError = makeError({\n\t\t\t\terror,\n\t\t\t\texitCode,\n\t\t\t\tsignal,\n\t\t\t\tstdout,\n\t\t\t\tstderr,\n\t\t\t\tall,\n\t\t\t\tcommand,\n\t\t\t\tescapedCommand,\n\t\t\t\tparsed,\n\t\t\t\ttimedOut,\n\t\t\t\tisCanceled: context.isCanceled || (parsed.options.signal ? parsed.options.signal.aborted : false),\n\t\t\t\tkilled: spawned.killed,\n\t\t\t});\n\n\t\t\tif (!parsed.options.reject) {\n\t\t\t\treturn returnedError;\n\t\t\t}\n\n\t\t\tthrow returnedError;\n\t\t}\n\n\t\treturn {\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\texitCode: 0,\n\t\t\tstdout,\n\t\t\tstderr,\n\t\t\tall,\n\t\t\tfailed: false,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false,\n\t\t};\n\t};\n\n\tconst handlePromiseOnce = onetime(handlePromise);\n\n\thandleInput(spawned, parsed.options);\n\n\tspawned.all = makeAllStream(spawned, parsed.options);\n\n\taddPipeMethods(spawned);\n\tmergePromise(spawned, handlePromiseOnce);\n\treturn spawned;\n}\n\nexport function execaSync(file, args, options) {\n\tconst parsed = handleArguments(file, args, options);\n\tconst command = joinCommand(file, args);\n\tconst escapedCommand = getEscapedCommand(file, args);\n\tlogCommand(escapedCommand, parsed.options);\n\n\tconst input = handleInputSync(parsed.options);\n\n\tlet result;\n\ttry {\n\t\tresult = childProcess.spawnSync(parsed.file, parsed.args, {...parsed.options, input});\n\t} catch (error) {\n\t\tthrow makeError({\n\t\t\terror,\n\t\t\tstdout: '',\n\t\t\tstderr: '',\n\t\t\tall: '',\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tparsed,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false,\n\t\t});\n\t}\n\n\tconst stdout = handleOutput(parsed.options, result.stdout, result.error);\n\tconst stderr = handleOutput(parsed.options, result.stderr, result.error);\n\n\tif (result.error || result.status !== 0 || result.signal !== null) {\n\t\tconst error = makeError({\n\t\t\tstdout,\n\t\t\tstderr,\n\t\t\terror: result.error,\n\t\t\tsignal: result.signal,\n\t\t\texitCode: result.status,\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tparsed,\n\t\t\ttimedOut: result.error && result.error.code === 'ETIMEDOUT',\n\t\t\tisCanceled: false,\n\t\t\tkilled: result.signal !== null,\n\t\t});\n\n\t\tif (!parsed.options.reject) {\n\t\t\treturn error;\n\t\t}\n\n\t\tthrow error;\n\t}\n\n\treturn {\n\t\tcommand,\n\t\tescapedCommand,\n\t\texitCode: 0,\n\t\tstdout,\n\t\tstderr,\n\t\tfailed: false,\n\t\ttimedOut: false,\n\t\tisCanceled: false,\n\t\tkilled: false,\n\t};\n}\n\nconst normalizeScriptStdin = ({input, inputFile, stdio}) => input === undefined && inputFile === undefined && stdio === undefined\n\t? {stdin: 'inherit'}\n\t: {};\n\nconst normalizeScriptOptions = (options = {}) => ({\n\tpreferLocal: true,\n\t...normalizeScriptStdin(options),\n\t...options,\n});\n\nfunction create$(options) {\n\tfunction $(templatesOrOptions, ...expressions) {\n\t\tif (!Array.isArray(templatesOrOptions)) {\n\t\t\treturn create$({...options, ...templatesOrOptions});\n\t\t}\n\n\t\tconst [file, ...args] = parseTemplates(templatesOrOptions, expressions);\n\t\treturn execa(file, args, normalizeScriptOptions(options));\n\t}\n\n\t$.sync = (templates, ...expressions) => {\n\t\tif (!Array.isArray(templates)) {\n\t\t\tthrow new TypeError('Please use $(options).sync`command` instead of $.sync(options)`command`.');\n\t\t}\n\n\t\tconst [file, ...args] = parseTemplates(templates, expressions);\n\t\treturn execaSync(file, args, normalizeScriptOptions(options));\n\t};\n\n\treturn $;\n}\n\nexport const $ = create$();\n\nexport function execaCommand(command, options) {\n\tconst [file, ...args] = parseCommand(command);\n\treturn execa(file, args, options);\n}\n\nexport function execaCommandSync(command, options) {\n\tconst [file, ...args] = parseCommand(command);\n\treturn execaSync(file, args, options);\n}\n\nexport function execaNode(scriptPath, args, options = {}) {\n\tif (args && !Array.isArray(args) && typeof args === 'object') {\n\t\toptions = args;\n\t\targs = [];\n\t}\n\n\tconst stdio = normalizeStdioNode(options);\n\tconst defaultExecArgv = process.execArgv.filter(arg => !arg.startsWith('--inspect'));\n\n\tconst {\n\t\tnodePath = process.execPath,\n\t\tnodeOptions = defaultExecArgv,\n\t} = options;\n\n\treturn execa(\n\t\tnodePath,\n\t\t[\n\t\t\t...nodeOptions,\n\t\t\tscriptPath,\n\t\t\t...(Array.isArray(args) ? args : []),\n\t\t],\n\t\t{\n\t\t\t...options,\n\t\t\tstdin: undefined,\n\t\t\tstdout: undefined,\n\t\t\tstderr: undefined,\n\t\t\tstdio,\n\t\t\tshell: false,\n\t\t},\n\t);\n}\n","export default function stripFinalNewline(input) {\n\tconst LF = typeof input === 'string' ? '\\n' : '\\n'.charCodeAt();\n\tconst CR = typeof input === 'string' ? '\\r' : '\\r'.charCodeAt();\n\n\tif (input[input.length - 1] === LF) {\n\t\tinput = input.slice(0, -1);\n\t}\n\n\tif (input[input.length - 1] === CR) {\n\t\tinput = input.slice(0, -1);\n\t}\n\n\treturn input;\n}\n","import process from 'node:process';\nimport path from 'node:path';\nimport {fileURLToPath} from 'node:url';\nimport pathKey from 'path-key';\n\nexport const npmRunPath = ({\n\tcwd = process.cwd(),\n\tpath: pathOption = process.env[pathKey()],\n\tpreferLocal = true,\n\texecPath = process.execPath,\n\taddExecPath = true,\n} = {}) => {\n\tconst cwdString = cwd instanceof URL ? fileURLToPath(cwd) : cwd;\n\tconst cwdPath = path.resolve(cwdString);\n\tconst result = [];\n\n\tif (preferLocal) {\n\t\tapplyPreferLocal(result, cwdPath);\n\t}\n\n\tif (addExecPath) {\n\t\tapplyExecPath(result, execPath, cwdPath);\n\t}\n\n\treturn [...result, pathOption].join(path.delimiter);\n};\n\nconst applyPreferLocal = (result, cwdPath) => {\n\tlet previous;\n\n\twhile (previous !== cwdPath) {\n\t\tresult.push(path.join(cwdPath, 'node_modules/.bin'));\n\t\tprevious = cwdPath;\n\t\tcwdPath = path.resolve(cwdPath, '..');\n\t}\n};\n\n// Ensure the running `node` binary is used\nconst applyExecPath = (result, execPath, cwdPath) => {\n\tconst execPathString = execPath instanceof URL ? fileURLToPath(execPath) : execPath;\n\tresult.push(path.resolve(cwdPath, execPathString, '..'));\n};\n\nexport const npmRunPathEnv = ({env = process.env, ...options} = {}) => {\n\tenv = {...env};\n\n\tconst pathName = pathKey({env});\n\toptions.path = env[pathName];\n\tenv[pathName] = npmRunPath(options);\n\n\treturn env;\n};\n","export default function pathKey(options = {}) {\n\tconst {\n\t\tenv = process.env,\n\t\tplatform = process.platform\n\t} = options;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(env).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n}\n","const copyProperty = (to, from, property, ignoreNonConfigurable) => {\n\t// `Function#length` should reflect the parameters of `to` not `from` since we keep its body.\n\t// `Function#prototype` is non-writable and non-configurable so can never be modified.\n\tif (property === 'length' || property === 'prototype') {\n\t\treturn;\n\t}\n\n\t// `Function#arguments` and `Function#caller` should not be copied. They were reported to be present in `Reflect.ownKeys` for some devices in React Native (#41), so we explicitly ignore them here.\n\tif (property === 'arguments' || property === 'caller') {\n\t\treturn;\n\t}\n\n\tconst toDescriptor = Object.getOwnPropertyDescriptor(to, property);\n\tconst fromDescriptor = Object.getOwnPropertyDescriptor(from, property);\n\n\tif (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {\n\t\treturn;\n\t}\n\n\tObject.defineProperty(to, property, fromDescriptor);\n};\n\n// `Object.defineProperty()` throws if the property exists, is not configurable and either:\n// - one its descriptors is changed\n// - it is non-writable and its value is changed\nconst canCopyProperty = function (toDescriptor, fromDescriptor) {\n\treturn toDescriptor === undefined || toDescriptor.configurable || (\n\t\ttoDescriptor.writable === fromDescriptor.writable &&\n\t\ttoDescriptor.enumerable === fromDescriptor.enumerable &&\n\t\ttoDescriptor.configurable === fromDescriptor.configurable &&\n\t\t(toDescriptor.writable || toDescriptor.value === fromDescriptor.value)\n\t);\n};\n\nconst changePrototype = (to, from) => {\n\tconst fromPrototype = Object.getPrototypeOf(from);\n\tif (fromPrototype === Object.getPrototypeOf(to)) {\n\t\treturn;\n\t}\n\n\tObject.setPrototypeOf(to, fromPrototype);\n};\n\nconst wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/\\n${fromBody}`;\n\nconst toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, 'toString');\nconst toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, 'name');\n\n// We call `from.toString()` early (not lazily) to ensure `from` can be garbage collected.\n// We use `bind()` instead of a closure for the same reason.\n// Calling `from.toString()` early also allows caching it in case `to.toString()` is called several times.\nconst changeToString = (to, from, name) => {\n\tconst withName = name === '' ? '' : `with ${name.trim()}() `;\n\tconst newToString = wrappedToString.bind(null, withName, from.toString());\n\t// Ensure `to.toString.toString` is non-enumerable and has the same `same`\n\tObject.defineProperty(newToString, 'name', toStringName);\n\tObject.defineProperty(to, 'toString', {...toStringDescriptor, value: newToString});\n};\n\nexport default function mimicFunction(to, from, {ignoreNonConfigurable = false} = {}) {\n\tconst {name} = to;\n\n\tfor (const property of Reflect.ownKeys(from)) {\n\t\tcopyProperty(to, from, property, ignoreNonConfigurable);\n\t}\n\n\tchangePrototype(to, from);\n\tchangeToString(to, from, name);\n\n\treturn to;\n}\n","import mimicFunction from 'mimic-fn';\n\nconst calledFunctions = new WeakMap();\n\nconst onetime = (function_, options = {}) => {\n\tif (typeof function_ !== 'function') {\n\t\tthrow new TypeError('Expected a function');\n\t}\n\n\tlet returnValue;\n\tlet callCount = 0;\n\tconst functionName = function_.displayName || function_.name || '<anonymous>';\n\n\tconst onetime = function (...arguments_) {\n\t\tcalledFunctions.set(onetime, ++callCount);\n\n\t\tif (callCount === 1) {\n\t\t\treturnValue = function_.apply(this, arguments_);\n\t\t\tfunction_ = null;\n\t\t} else if (options.throw === true) {\n\t\t\tthrow new Error(`Function \\`${functionName}\\` can only be called once`);\n\t\t}\n\n\t\treturn returnValue;\n\t};\n\n\tmimicFunction(onetime, function_);\n\tcalledFunctions.set(onetime, callCount);\n\n\treturn onetime;\n};\n\nonetime.callCount = function_ => {\n\tif (!calledFunctions.has(function_)) {\n\t\tthrow new Error(`The given function \\`${function_.name}\\` is not wrapped by the \\`onetime\\` package`);\n\t}\n\n\treturn calledFunctions.get(function_);\n};\n\nexport default onetime;\n","import process from 'node:process';\nimport {signalsByName} from 'human-signals';\n\nconst getErrorPrefix = ({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled}) => {\n\tif (timedOut) {\n\t\treturn `timed out after ${timeout} milliseconds`;\n\t}\n\n\tif (isCanceled) {\n\t\treturn 'was canceled';\n\t}\n\n\tif (errorCode !== undefined) {\n\t\treturn `failed with ${errorCode}`;\n\t}\n\n\tif (signal !== undefined) {\n\t\treturn `was killed with ${signal} (${signalDescription})`;\n\t}\n\n\tif (exitCode !== undefined) {\n\t\treturn `failed with exit code ${exitCode}`;\n\t}\n\n\treturn 'failed';\n};\n\nexport const makeError = ({\n\tstdout,\n\tstderr,\n\tall,\n\terror,\n\tsignal,\n\texitCode,\n\tcommand,\n\tescapedCommand,\n\ttimedOut,\n\tisCanceled,\n\tkilled,\n\tparsed: {options: {timeout, cwd = process.cwd()}},\n}) => {\n\t// `signal` and `exitCode` emitted on `spawned.on('exit')` event can be `null`.\n\t// We normalize them to `undefined`\n\texitCode = exitCode === null ? undefined : exitCode;\n\tsignal = signal === null ? undefined : signal;\n\tconst signalDescription = signal === undefined ? undefined : signalsByName[signal].description;\n\n\tconst errorCode = error && error.code;\n\n\tconst prefix = getErrorPrefix({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled});\n\tconst execaMessage = `Command ${prefix}: ${command}`;\n\tconst isError = Object.prototype.toString.call(error) === '[object Error]';\n\tconst shortMessage = isError ? `${execaMessage}\\n${error.message}` : execaMessage;\n\tconst message = [shortMessage, stderr, stdout].filter(Boolean).join('\\n');\n\n\tif (isError) {\n\t\terror.originalMessage = error.message;\n\t\terror.message = message;\n\t} else {\n\t\terror = new Error(message);\n\t}\n\n\terror.shortMessage = shortMessage;\n\terror.command = command;\n\terror.escapedCommand = escapedCommand;\n\terror.exitCode = exitCode;\n\terror.signal = signal;\n\terror.signalDescription = signalDescription;\n\terror.stdout = stdout;\n\terror.stderr = stderr;\n\terror.cwd = cwd;\n\n\tif (all !== undefined) {\n\t\terror.all = all;\n\t}\n\n\tif ('bufferedData' in error) {\n\t\tdelete error.bufferedData;\n\t}\n\n\terror.failed = true;\n\terror.timedOut = Boolean(timedOut);\n\terror.isCanceled = isCanceled;\n\terror.killed = killed && !timedOut;\n\n\treturn error;\n};\n","import{constants}from\"node:os\";\n\nimport{SIGRTMAX}from\"./realtime.js\";\nimport{getSignals}from\"./signals.js\";\n\n\n\nconst getSignalsByName=()=>{\nconst signals=getSignals();\nreturn Object.fromEntries(signals.map(getSignalByName))\n};\n\nconst getSignalByName=({\nname,\nnumber,\ndescription,\nsupported,\naction,\nforced,\nstandard\n})=>[name,{name,number,description,supported,action,forced,standard}];\n\nexport const signalsByName=getSignalsByName();\n\n\n\n\nconst getSignalsByNumber=()=>{\nconst signals=getSignals();\nconst length=SIGRTMAX+1;\nconst signalsA=Array.from({length},(value,number)=>\ngetSignalByNumber(number,signals)\n);\nreturn Object.assign({},...signalsA)\n};\n\nconst getSignalByNumber=(number,signals)=>{\nconst signal=findSignalByNumber(number,signals);\n\nif(signal===undefined){\nreturn{}\n}\n\nconst{name,description,supported,action,forced,standard}=signal;\nreturn{\n[number]:{\nname,\nnumber,\ndescription,\nsupported,\naction,\nforced,\nstandard\n}\n}\n};\n\n\n\nconst findSignalByNumber=(number,signals)=>{\nconst signal=signals.find(({name})=>constants.signals[name]===number);\n\nif(signal!==undefined){\nreturn signal\n}\n\nreturn signals.find((signalA)=>signalA.number===number)\n};\n\nexport const signalsByNumber=getSignalsByNumber();","\nexport const getRealtimeSignals=()=>{\nconst length=SIGRTMAX-SIGRTMIN+1;\nreturn Array.from({length},getRealtimeSignal)\n};\n\nconst getRealtimeSignal=(value,index)=>({\nname:`SIGRT${index+1}`,\nnumber:SIGRTMIN+index,\naction:\"terminate\",\ndescription:\"Application-specific signal (realtime)\",\nstandard:\"posix\"\n});\n\nconst SIGRTMIN=34;\nexport const SIGRTMAX=64;","import{constants}from\"node:os\";\n\nimport{SIGNALS}from\"./core.js\";\nimport{getRealtimeSignals}from\"./realtime.js\";\n\n\n\nexport const getSignals=()=>{\nconst realtimeSignals=getRealtimeSignals();\nconst signals=[...SIGNALS,...realtimeSignals].map(normalizeSignal);\nreturn signals\n};\n\n\n\n\n\n\n\nconst normalizeSignal=({\nname,\nnumber:defaultNumber,\ndescription,\naction,\nforced=false,\nstandard\n})=>{\nconst{\nsignals:{[name]:constantSignal}\n}=constants;\nconst supported=constantSignal!==undefined;\nconst number=supported?constantSignal:defaultNumber;\nreturn{name,number,description,supported,action,forced,standard}\n};","\n\nexport const SIGNALS=[\n{\nname:\"SIGHUP\",\nnumber:1,\naction:\"terminate\",\ndescription:\"Terminal closed\",\nstandard:\"posix\"\n},\n{\nname:\"SIGINT\",\nnumber:2,\naction:\"terminate\",\ndescription:\"User interruption with CTRL-C\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGQUIT\",\nnumber:3,\naction:\"core\",\ndescription:\"User interruption with CTRL-\\\\\",\nstandard:\"posix\"\n},\n{\nname:\"SIGILL\",\nnumber:4,\naction:\"core\",\ndescription:\"Invalid machine instruction\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGTRAP\",\nnumber:5,\naction:\"core\",\ndescription:\"Debugger breakpoint\",\nstandard:\"posix\"\n},\n{\nname:\"SIGABRT\",\nnumber:6,\naction:\"core\",\ndescription:\"Aborted\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGIOT\",\nnumber:6,\naction:\"core\",\ndescription:\"Aborted\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGBUS\",\nnumber:7,\naction:\"core\",\ndescription:\n\"Bus error due to misaligned, non-existing address or paging error\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGEMT\",\nnumber:7,\naction:\"terminate\",\ndescription:\"Command should be emulated but is not implemented\",\nstandard:\"other\"\n},\n{\nname:\"SIGFPE\",\nnumber:8,\naction:\"core\",\ndescription:\"Floating point arithmetic error\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGKILL\",\nnumber:9,\naction:\"terminate\",\ndescription:\"Forced termination\",\nstandard:\"posix\",\nforced:true\n},\n{\nname:\"SIGUSR1\",\nnumber:10,\naction:\"terminate\",\ndescription:\"Application-specific signal\",\nstandard:\"posix\"\n},\n{\nname:\"SIGSEGV\",\nnumber:11,\naction:\"core\",\ndescription:\"Segmentation fault\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGUSR2\",\nnumber:12,\naction:\"terminate\",\ndescription:\"Application-specific signal\",\nstandard:\"posix\"\n},\n{\nname:\"SIGPIPE\",\nnumber:13,\naction:\"terminate\",\ndescription:\"Broken pipe or socket\",\nstandard:\"posix\"\n},\n{\nname:\"SIGALRM\",\nnumber:14,\naction:\"terminate\",\ndescription:\"Timeout or timer\",\nstandard:\"posix\"\n},\n{\nname:\"SIGTERM\",\nnumber:15,\naction:\"terminate\",\ndescription:\"Termination\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGSTKFLT\",\nnumber:16,\naction:\"terminate\",\ndescription:\"Stack is empty or overflowed\",\nstandard:\"other\"\n},\n{\nname:\"SIGCHLD\",\nnumber:17,\naction:\"ignore\",\ndescription:\"Child process terminated, paused or unpaused\",\nstandard:\"posix\"\n},\n{\nname:\"SIGCLD\",\nnumber:17,\naction:\"ignore\",\ndescription:\"Child process terminated, paused or unpaused\",\nstandard:\"other\"\n},\n{\nname:\"SIGCONT\",\nnumber:18,\naction:\"unpause\",\ndescription:\"Unpaused\",\nstandard:\"posix\",\nforced:true\n},\n{\nname:\"SIGSTOP\",\nnumber:19,\naction:\"pause\",\ndescription:\"Paused\",\nstandard:\"posix\",\nforced:true\n},\n{\nname:\"SIGTSTP\",\nnumber:20,\naction:\"pause\",\ndescription:\"Paused using CTRL-Z or \\\"suspend\\\"\",\nstandard:\"posix\"\n},\n{\nname:\"SIGTTIN\",\nnumber:21,\naction:\"pause\",\ndescription:\"Background process cannot read terminal input\",\nstandard:\"posix\"\n},\n{\nname:\"SIGBREAK\",\nnumber:21,\naction:\"terminate\",\ndescription:\"User interruption with CTRL-BREAK\",\nstandard:\"other\"\n},\n{\nname:\"SIGTTOU\",\nnumber:22,\naction:\"pause\",\ndescription:\"Background process cannot write to terminal output\",\nstandard:\"posix\"\n},\n{\nname:\"SIGURG\",\nnumber:23,\naction:\"ignore\",\ndescription:\"Socket received out-of-band data\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGXCPU\",\nnumber:24,\naction:\"core\",\ndescription:\"Process timed out\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGXFSZ\",\nnumber:25,\naction:\"core\",\ndescription:\"File too big\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGVTALRM\",\nnumber:26,\naction:\"terminate\",\ndescription:\"Timeout or timer\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGPROF\",\nnumber:27,\naction:\"terminate\",\ndescription:\"Timeout or timer\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGWINCH\",\nnumber:28,\naction:\"ignore\",\ndescription:\"Terminal window size changed\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGIO\",\nnumber:29,\naction:\"terminate\",\ndescription:\"I/O is available\",\nstandard:\"other\"\n},\n{\nname:\"SIGPOLL\",\nnumber:29,\naction:\"terminate\",\ndescription:\"Watched event\",\nstandard:\"other\"\n},\n{\nname:\"SIGINFO\",\nnumber:29,\naction:\"ignore\",\ndescription:\"Request for process information\",\nstandard:\"other\"\n},\n{\nname:\"SIGPWR\",\nnumber:30,\naction:\"terminate\",\ndescription:\"Device running out of power\",\nstandard:\"systemv\"\n},\n{\nname:\"SIGSYS\",\nnumber:31,\naction:\"core\",\ndescription:\"Invalid system call\",\nstandard:\"other\"\n},\n{\nname:\"SIGUNUSED\",\nnumber:31,\naction:\"terminate\",\ndescription:\"Invalid system call\",\nstandard:\"other\"\n}];","const aliases = ['stdin', 'stdout', 'stderr'];\n\nconst hasAlias = options => aliases.some(alias => options[alias] !== undefined);\n\nexport const normalizeStdio = options => {\n\tif (!options) {\n\t\treturn;\n\t}\n\n\tconst {stdio} = options;\n\n\tif (stdio === undefined) {\n\t\treturn aliases.map(alias => options[alias]);\n\t}\n\n\tif (hasAlias(options)) {\n\t\tthrow new Error(`It's not possible to provide \\`stdio\\` in combination with one of ${aliases.map(alias => `\\`${alias}\\``).join(', ')}`);\n\t}\n\n\tif (typeof stdio === 'string') {\n\t\treturn stdio;\n\t}\n\n\tif (!Array.isArray(stdio)) {\n\t\tthrow new TypeError(`Expected \\`stdio\\` to be of type \\`string\\` or \\`Array\\`, got \\`${typeof stdio}\\``);\n\t}\n\n\tconst length = Math.max(stdio.length, aliases.length);\n\treturn Array.from({length}, (value, index) => stdio[index]);\n};\n\n// `ipc` is pushed unless it is already present\nexport const normalizeStdioNode = options => {\n\tconst stdio = normalizeStdio(options);\n\n\tif (stdio === 'ipc') {\n\t\treturn 'ipc';\n\t}\n\n\tif (stdio === undefined || typeof stdio === 'string') {\n\t\treturn [stdio, stdio, stdio, 'ipc'];\n\t}\n\n\tif (stdio.includes('ipc')) {\n\t\treturn stdio;\n\t}\n\n\treturn [...stdio, 'ipc'];\n};\n","import os from 'node:os';\nimport {onExit} from 'signal-exit';\n\nconst DEFAULT_FORCE_KILL_TIMEOUT = 1000 * 5;\n\n// Monkey-patches `childProcess.kill()` to add `forceKillAfterTimeout` behavior\nexport const spawnedKill = (kill, signal = 'SIGTERM', options = {}) => {\n\tconst killResult = kill(signal);\n\tsetKillTimeout(kill, signal, options, killResult);\n\treturn killResult;\n};\n\nconst setKillTimeout = (kill, signal, options, killResult) => {\n\tif (!shouldForceKill(signal, options, killResult)) {\n\t\treturn;\n\t}\n\n\tconst timeout = getForceKillAfterTimeout(options);\n\tconst t = setTimeout(() => {\n\t\tkill('SIGKILL');\n\t}, timeout);\n\n\t// Guarded because there's no `.unref()` when `execa` is used in the renderer\n\t// process in Electron. This cannot be tested since we don't run tests in\n\t// Electron.\n\t// istanbul ignore else\n\tif (t.unref) {\n\t\tt.unref();\n\t}\n};\n\nconst shouldForceKill = (signal, {forceKillAfterTimeout}, killResult) => isSigterm(signal) && forceKillAfterTimeout !== false && killResult;\n\nconst isSigterm = signal => signal === os.constants.signals.SIGTERM\n\t\t|| (typeof signal === 'string' && signal.toUpperCase() === 'SIGTERM');\n\nconst getForceKillAfterTimeout = ({forceKillAfterTimeout = true}) => {\n\tif (forceKillAfterTimeout === true) {\n\t\treturn DEFAULT_FORCE_KILL_TIMEOUT;\n\t}\n\n\tif (!Number.isFinite(forceKillAfterTimeout) || forceKillAfterTimeout < 0) {\n\t\tthrow new TypeError(`Expected the \\`forceKillAfterTimeout\\` option to be a non-negative integer, got \\`${forceKillAfterTimeout}\\` (${typeof forceKillAfterTimeout})`);\n\t}\n\n\treturn forceKillAfterTimeout;\n};\n\n// `childProcess.cancel()`\nexport const spawnedCancel = (spawned, context) => {\n\tconst killResult = spawned.kill();\n\n\tif (killResult) {\n\t\tcontext.isCanceled = true;\n\t}\n};\n\nconst timeoutKill = (spawned, signal, reject) => {\n\tspawned.kill(signal);\n\treject(Object.assign(new Error('Timed out'), {timedOut: true, signal}));\n};\n\n// `timeout` option handling\nexport const setupTimeout = (spawned, {timeout, killSignal = 'SIGTERM'}, spawnedPromise) => {\n\tif (timeout === 0 || timeout === undefined) {\n\t\treturn spawnedPromise;\n\t}\n\n\tlet timeoutId;\n\tconst timeoutPromise = new Promise((resolve, reject) => {\n\t\ttimeoutId = setTimeout(() => {\n\t\t\ttimeoutKill(spawned, killSignal, reject);\n\t\t}, timeout);\n\t});\n\n\tconst safeSpawnedPromise = spawnedPromise.finally(() => {\n\t\tclearTimeout(timeoutId);\n\t});\n\n\treturn Promise.race([timeoutPromise, safeSpawnedPromise]);\n};\n\nexport const validateTimeout = ({timeout}) => {\n\tif (timeout !== undefined && (!Number.isFinite(timeout) || timeout < 0)) {\n\t\tthrow new TypeError(`Expected the \\`timeout\\` option to be a non-negative integer, got \\`${timeout}\\` (${typeof timeout})`);\n\t}\n};\n\n// `cleanup` option handling\nexport const setExitHandler = async (spawned, {cleanup, detached}, timedPromise) => {\n\tif (!cleanup || detached) {\n\t\treturn timedPromise;\n\t}\n\n\tconst removeExitHandler = onExit(() => {\n\t\tspawned.kill();\n\t});\n\n\treturn timedPromise.finally(() => {\n\t\tremoveExitHandler();\n\t});\n};\n","/**\n * This is not the set of all possible signals.\n *\n * It IS, however, the set of all signals that trigger\n * an exit on either Linux or BSD systems. Linux is a\n * superset of the signal names supported on BSD, and\n * the unknown signals just fail to register, so we can\n * catch that easily enough.\n *\n * Windows signals are a different set, since there are\n * signals that terminate Windows processes, but don't\n * terminate (or don't even exist) on Posix systems.\n *\n * Don't bother with SIGKILL. It's uncatchable, which\n * means that we can't fire any callbacks anyway.\n *\n * If a user does happen to register a handler on a non-\n * fatal signal like SIGWINCH or something, and then\n * exit, it'll end up firing `process.emit('exit')`, so\n * the handler will be fired anyway.\n *\n * SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n * artificially, inherently leave the process in a\n * state from which it is not safe to try and enter JS\n * listeners.\n */\nexport const signals: NodeJS.Signals[] = []\nsignals.push('SIGHUP', 'SIGINT', 'SIGTERM')\n\nif (process.platform !== 'win32') {\n signals.push(\n 'SIGALRM',\n 'SIGABRT',\n 'SIGVTALRM',\n 'SIGXCPU',\n 'SIGXFSZ',\n 'SIGUSR2',\n 'SIGTRAP',\n 'SIGSYS',\n 'SIGQUIT',\n 'SIGIOT'\n // should detect profiler and enable/disable accordingly.\n // see #21\n // 'SIGPROF'\n )\n}\n\nif (process.platform === 'linux') {\n signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT')\n}\n","// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\n// grab a reference to node's real process object right away\nimport { signals } from './signals.js'\nexport { signals }\n\n// just a loosened process type so we can do some evil things\ntype ProcessRE = NodeJS.Process & {\n reallyExit: (code?: number | undefined | null) => any\n emit: (ev: string, ...a: any[]) => any\n}\n\nconst processOk = (process: any): process is ProcessRE =>\n !!process &&\n typeof process === 'object' &&\n typeof process.removeListener === 'function' &&\n typeof process.emit === 'function' &&\n typeof process.reallyExit === 'function' &&\n typeof process.listeners === 'function' &&\n typeof process.kill === 'function' &&\n typeof process.pid === 'number' &&\n typeof process.on === 'function'\n\nconst kExitEmitter = Symbol.for('signal-exit emitter')\nconst global: typeof globalThis & { [kExitEmitter]?: Emitter } = globalThis\nconst ObjectDefineProperty = Object.defineProperty.bind(Object)\n\n/**\n * A function that takes an exit code and signal as arguments\n *\n * In the case of signal exits *only*, a return value of true\n * will indicate that the signal is being handled, and we should\n * not synthetically exit with the signal we received. Regardless\n * of the handler return value, the handler is unloaded when an\n * otherwise fatal signal is received, so you get exactly 1 shot\n * at it, unless you add another onExit handler at that point.\n *\n * In the case of numeric code exits, we may already have committed\n * to exiting the process, for example via a fatal exception or\n * unhandled promise rejection, so it is impossible to stop safely.\n */\nexport type Handler = (\n code: number | null | undefined,\n signal: NodeJS.Signals | null\n) => true | void\ntype ExitEvent = 'afterExit' | 'exit'\ntype Emitted = { [k in ExitEvent]: boolean }\ntype Listeners = { [k in ExitEvent]: Handler[] }\n\n// teeny special purpose ee\nclass Emitter {\n emitted: Emitted = {\n afterExit: false,\n exit: false,\n }\n\n listeners: Listeners = {\n afterExit: [],\n exit: [],\n }\n\n count: number = 0\n id: number = Math.random()\n\n constructor() {\n if (global[kExitEmitter]) {\n return global[kExitEmitter]\n }\n ObjectDefineProperty(global, kExitEmitter, {\n value: this,\n writable: false,\n enumerable: false,\n configurable: false,\n })\n }\n\n on(ev: ExitEvent, fn: Handler) {\n this.listeners[ev].push(fn)\n }\n\n removeListener(ev: ExitEvent, fn: Handler) {\n const list = this.listeners[ev]\n const i = list.indexOf(fn)\n /* c8 ignore start */\n if (i === -1) {\n return\n }\n /* c8 ignore stop */\n if (i === 0 && list.length === 1) {\n list.length = 0\n } else {\n list.splice(i, 1)\n }\n }\n\n emit(\n ev: ExitEvent,\n code: number | null | undefined,\n signal: NodeJS.Signals | null\n ): boolean {\n if (this.emitted[ev]) {\n return false\n }\n this.emitted[ev] = true\n let ret: boolean = false\n for (const fn of this.listeners[ev]) {\n ret = fn(code, signal) === true || ret\n }\n if (ev === 'exit') {\n ret = this.emit('afterExit', code, signal) || ret\n }\n return ret\n }\n}\n\nabstract class SignalExitBase {\n abstract onExit(cb: Handler, opts?: { alwaysLast?: boolean }): () => void\n abstract load(): void\n abstract unload(): void\n}\n\nconst signalExitWrap = <T extends SignalExitBase>(handler: T) => {\n return {\n onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n return handler.onExit(cb, opts)\n },\n load() {\n return handler.load()\n },\n unload() {\n return handler.unload()\n },\n }\n}\n\nclass SignalExitFallback extends SignalExitBase {\n onExit() {\n return () => {}\n }\n load() {}\n unload() {}\n}\n\nclass SignalExit extends SignalExitBase {\n // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n // so use a supported signal instead\n /* c8 ignore start */\n #hupSig = process.platform === 'win32' ? 'SIGINT' : 'SIGHUP'\n /* c8 ignore stop */\n #emitter = new Emitter()\n #process: ProcessRE\n #originalProcessEmit: ProcessRE['emit']\n #originalProcessReallyExit: ProcessRE['reallyExit']\n\n #sigListeners: { [k in NodeJS.Signals]?: () => void } = {}\n #loaded: boolean = false\n\n constructor(process: ProcessRE) {\n super()\n this.#process = process\n // { <signal>: <listener fn>, ... }\n this.#sigListeners = {}\n for (const sig of signals) {\n this.#sigListeners[sig] = () => {\n // If there are no other listeners, an exit is coming!\n // Simplest way: remove us and then re-send the signal.\n // We know that this will kill the process, so we can\n // safely emit now.\n const listeners = this.#process.listeners(sig)\n let { count } = this.#emitter\n // This is a workaround for the fact that signal-exit v3 and signal\n // exit v4 are not aware of each other, and each will attempt to let\n // the other handle it, so neither of them do. To correct this, we\n // detect if we're the only handler *except* for previous versions\n // of signal-exit, and increment by the count of listeners it has\n // created.\n /* c8 ignore start */\n const p = process as unknown as {\n __signal_exit_emitter__?: { count: number }\n }\n if (\n typeof p.__signal_exit_emitter__ === 'object' &&\n typeof p.__signal_exit_emitter__.count === 'number'\n ) {\n count += p.__signal_exit_emitter__.count\n }\n /* c8 ignore stop */\n if (listeners.length === count) {\n this.unload()\n const ret = this.#emitter.emit('exit', null, sig)\n /* c8 ignore start */\n const s = sig === 'SIGHUP' ? this.#hupSig : sig\n if (!ret) process.kill(process.pid, s)\n /* c8 ignore stop */\n }\n }\n }\n\n this.#originalProcessReallyExit = process.reallyExit\n this.#originalProcessEmit = process.emit\n }\n\n onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return () => {}\n }\n /* c8 ignore stop */\n\n if (this.#loaded === false) {\n this.load()\n }\n\n const ev = opts?.alwaysLast ? 'afterExit' : 'exit'\n this.#emitter.on(ev, cb)\n return () => {\n this.#emitter.removeListener(ev, cb)\n if (\n this.#emitter.listeners['exit'].length === 0 &&\n this.#emitter.listeners['afterExit'].length === 0\n ) {\n this.unload()\n }\n }\n }\n\n load() {\n if (this.#loaded) {\n return\n }\n this.#loaded = true\n\n // This is the number of onSignalExit's that are in play.\n // It's important so that we can count the correct number of\n // listeners on signals, and don't wait for the other one to\n // handle it instead of us.\n this.#emitter.count += 1\n\n for (const sig of signals) {\n try {\n const fn = this.#sigListeners[sig]\n if (fn) this.#process.on(sig, fn)\n } catch (_) {}\n }\n\n this.#process.emit = (ev: string, ...a: any[]) => {\n return this.#processEmit(ev, ...a)\n }\n this.#process.reallyExit = (code?: number | null | undefined) => {\n return this.#processReallyExit(code)\n }\n }\n\n unload() {\n if (!this.#loaded) {\n return\n }\n this.#loaded = false\n\n signals.forEach(sig => {\n const listener = this.#sigListeners[sig]\n /* c8 ignore start */\n if (!listener) {\n throw new Error('Listener not defined for signal: ' + sig)\n }\n /* c8 ignore stop */\n try {\n this.#process.removeListener(sig, listener)\n /* c8 ignore start */\n } catch (_) {}\n /* c8 ignore stop */\n })\n this.#process.emit = this.#originalProcessEmit\n this.#process.reallyExit = this.#originalProcessReallyExit\n this.#emitter.count -= 1\n }\n\n #processReallyExit(code?: number | null | undefined) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return 0\n }\n this.#process.exitCode = code || 0\n /* c8 ignore stop */\n\n this.#emitter.emit('exit', this.#process.exitCode, null)\n return this.#originalProcessReallyExit.call(\n this.#process,\n this.#process.exitCode\n )\n }\n\n #processEmit(ev: string, ...args: any[]): any {\n const og = this.#originalProcessEmit\n if (ev === 'exit' && processOk(this.#process)) {\n if (typeof args[0] === 'number') {\n this.#process.exitCode = args[0]\n /* c8 ignore start */\n }\n /* c8 ignore start */\n const ret = og.call(this.#process, ev, ...args)\n /* c8 ignore start */\n this.#emitter.emit('exit', this.#process.exitCode, null)\n /* c8 ignore stop */\n return ret\n } else {\n return og.call(this.#process, ev, ...args)\n }\n }\n}\n\nconst process = globalThis.process\n// wrap so that we call the method on the actual handler, without\n// exporting it directly.\nexport const {\n /**\n * Called when the process is exiting, whether via signal, explicit\n * exit, or running out of stuff to do.\n *\n * If the global process object is not suitable for instrumentation,\n * then this will be a no-op.\n *\n * Returns a function that may be used to unload signal-exit.\n */\n onExit,\n\n /**\n * Load the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\n load,\n\n /**\n * Unload the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\n unload,\n} = signalExitWrap(\n processOk(process) ? new SignalExit(process) : new SignalExitFallback()\n)\n","import {createWriteStream} from 'node:fs';\nimport {ChildProcess} from 'node:child_process';\nimport {isWritableStream} from 'is-stream';\n\nconst isExecaChildProcess = target => target instanceof ChildProcess && typeof target.then === 'function';\n\nconst pipeToTarget = (spawned, streamName, target) => {\n\tif (typeof target === 'string') {\n\t\tspawned[streamName].pipe(createWriteStream(target));\n\t\treturn spawned;\n\t}\n\n\tif (isWritableStream(target)) {\n\t\tspawned[streamName].pipe(target);\n\t\treturn spawned;\n\t}\n\n\tif (!isExecaChildProcess(target)) {\n\t\tthrow new TypeError('The second argument must be a string, a stream or an Execa child process.');\n\t}\n\n\tif (!isWritableStream(target.stdin)) {\n\t\tthrow new TypeError('The target child process\\'s stdin must be available.');\n\t}\n\n\tspawned[streamName].pipe(target.stdin);\n\treturn target;\n};\n\nexport const addPipeMethods = spawned => {\n\tif (spawned.stdout !== null) {\n\t\tspawned.pipeStdout = pipeToTarget.bind(undefined, spawned, 'stdout');\n\t}\n\n\tif (spawned.stderr !== null) {\n\t\tspawned.pipeStderr = pipeToTarget.bind(undefined, spawned, 'stderr');\n\t}\n\n\tif (spawned.all !== undefined) {\n\t\tspawned.pipeAll = pipeToTarget.bind(undefined, spawned, 'all');\n\t}\n};\n","export function isStream(stream) {\n\treturn stream !== null\n\t\t&& typeof stream === 'object'\n\t\t&& typeof stream.pipe === 'function';\n}\n\nexport function isWritableStream(stream) {\n\treturn isStream(stream)\n\t\t&& stream.writable !== false\n\t\t&& typeof stream._write === 'function'\n\t\t&& typeof stream._writableState === 'object';\n}\n\nexport function isReadableStream(stream) {\n\treturn isStream(stream)\n\t\t&& stream.readable !== false\n\t\t&& typeof stream._read === 'function'\n\t\t&& typeof stream._readableState === 'object';\n}\n\nexport function isDuplexStream(stream) {\n\treturn isWritableStream(stream)\n\t\t&& isReadableStream(stream);\n}\n\nexport function isTransformStream(stream) {\n\treturn isDuplexStream(stream)\n\t\t&& typeof stream._transform === 'function';\n}\n","import {createReadStream, readFileSync} from 'node:fs';\nimport {setTimeout} from 'node:timers/promises';\nimport {isStream} from 'is-stream';\nimport getStream, {getStreamAsBuffer} from 'get-stream';\nimport mergeStream from 'merge-stream';\n\nconst validateInputOptions = input => {\n\tif (input !== undefined) {\n\t\tthrow new TypeError('The `input` and `inputFile` options cannot be both set.');\n\t}\n};\n\nconst getInputSync = ({input, inputFile}) => {\n\tif (typeof inputFile !== 'string') {\n\t\treturn input;\n\t}\n\n\tvalidateInputOptions(input);\n\treturn readFileSync(inputFile);\n};\n\n// `input` and `inputFile` option in sync mode\nexport const handleInputSync = options => {\n\tconst input = getInputSync(options);\n\n\tif (isStream(input)) {\n\t\tthrow new TypeError('The `input` option cannot be a stream in sync mode');\n\t}\n\n\treturn input;\n};\n\nconst getInput = ({input, inputFile}) => {\n\tif (typeof inputFile !== 'string') {\n\t\treturn input;\n\t}\n\n\tvalidateInputOptions(input);\n\treturn createReadStream(inputFile);\n};\n\n// `input` and `inputFile` option in async mode\nexport const handleInput = (spawned, options) => {\n\tconst input = getInput(options);\n\n\tif (input === undefined) {\n\t\treturn;\n\t}\n\n\tif (isStream(input)) {\n\t\tinput.pipe(spawned.stdin);\n\t} else {\n\t\tspawned.stdin.end(input);\n\t}\n};\n\n// `all` interleaves `stdout` and `stderr`\nexport const makeAllStream = (spawned, {all}) => {\n\tif (!all || (!spawned.stdout && !spawned.stderr)) {\n\t\treturn;\n\t}\n\n\tconst mixed = mergeStream();\n\n\tif (spawned.stdout) {\n\t\tmixed.add(spawned.stdout);\n\t}\n\n\tif (spawned.stderr) {\n\t\tmixed.add(spawned.stderr);\n\t}\n\n\treturn mixed;\n};\n\n// On failure, `result.stdout|stderr|all` should contain the currently buffered stream\nconst getBufferedData = async (stream, streamPromise) => {\n\t// When `buffer` is `false`, `streamPromise` is `undefined` and there is no buffered data to retrieve\n\tif (!stream || streamPromise === undefined) {\n\t\treturn;\n\t}\n\n\t// Wait for the `all` stream to receive the last chunk before destroying the stream\n\tawait setTimeout(0);\n\n\tstream.destroy();\n\n\ttry {\n\t\treturn await streamPromise;\n\t} catch (error) {\n\t\treturn error.bufferedData;\n\t}\n};\n\nconst getStreamPromise = (stream, {encoding, buffer, maxBuffer}) => {\n\tif (!stream || !buffer) {\n\t\treturn;\n\t}\n\n\t// eslint-disable-next-line unicorn/text-encoding-identifier-case\n\tif (encoding === 'utf8' || encoding === 'utf-8') {\n\t\treturn getStream(stream, {maxBuffer});\n\t}\n\n\tif (encoding === null || encoding === 'buffer') {\n\t\treturn getStreamAsBuffer(stream, {maxBuffer});\n\t}\n\n\treturn applyEncoding(stream, maxBuffer, encoding);\n};\n\nconst applyEncoding = async (stream, maxBuffer, encoding) => {\n\tconst buffer = await getStreamAsBuffer(stream, {maxBuffer});\n\treturn buffer.toString(encoding);\n};\n\n// Retrieve result of child process: exit code, signal, error, streams (stdout/stderr/all)\nexport const getSpawnedResult = async ({stdout, stderr, all}, {encoding, buffer, maxBuffer}, processDone) => {\n\tconst stdoutPromise = getStreamPromise(stdout, {encoding, buffer, maxBuffer});\n\tconst stderrPromise = getStreamPromise(stderr, {encoding, buffer, maxBuffer});\n\tconst allPromise = getStreamPromise(all, {encoding, buffer, maxBuffer: maxBuffer * 2});\n\n\ttry {\n\t\treturn await Promise.all([processDone, stdoutPromise, stderrPromise, allPromise]);\n\t} catch (error) {\n\t\treturn Promise.all([\n\t\t\t{error, signal: error.signal, timedOut: error.timedOut},\n\t\t\tgetBufferedData(stdout, stdoutPromise),\n\t\t\tgetBufferedData(stderr, stderrPromise),\n\t\t\tgetBufferedData(all, allPromise),\n\t\t]);\n\t}\n};\n","export const getStreamContents = async (stream, {init, convertChunk, getSize, truncateChunk, addChunk, getFinalChunk, finalize}, {maxBuffer = Number.POSITIVE_INFINITY} = {}) => {\n\tif (!isAsyncIterable(stream)) {\n\t\tthrow new Error('The first argument must be a Readable, a ReadableStream, or an async iterable.');\n\t}\n\n\tconst state = init();\n\tstate.length = 0;\n\n\ttry {\n\t\tfor await (const chunk of stream) {\n\t\t\tconst chunkType = getChunkType(chunk);\n\t\t\tconst convertedChunk = convertChunk[chunkType](chunk, state);\n\t\t\tappendChunk({convertedChunk, state, getSize, truncateChunk, addChunk, maxBuffer});\n\t\t}\n\n\t\tappendFinalChunk({state, convertChunk, getSize, truncateChunk, addChunk, getFinalChunk, maxBuffer});\n\t\treturn finalize(state);\n\t} catch (error) {\n\t\terror.bufferedData = finalize(state);\n\t\tthrow error;\n\t}\n};\n\nconst appendFinalChunk = ({state, getSize, truncateChunk, addChunk, getFinalChunk, maxBuffer}) => {\n\tconst convertedChunk = getFinalChunk(state);\n\tif (convertedChunk !== undefined) {\n\t\tappendChunk({convertedChunk, state, getSize, truncateChunk, addChunk, maxBuffer});\n\t}\n};\n\nconst appendChunk = ({convertedChunk, state, getSize, truncateChunk, addChunk, maxBuffer}) => {\n\tconst chunkSize = getSize(convertedChunk);\n\tconst newLength = state.length + chunkSize;\n\n\tif (newLength <= maxBuffer) {\n\t\taddNewChunk(convertedChunk, state, addChunk, newLength);\n\t\treturn;\n\t}\n\n\tconst truncatedChunk = truncateChunk(convertedChunk, maxBuffer - state.length);\n\n\tif (truncatedChunk !== undefined) {\n\t\taddNewChunk(truncatedChunk, state, addChunk, maxBuffer);\n\t}\n\n\tthrow new MaxBufferError();\n};\n\nconst addNewChunk = (convertedChunk, state, addChunk, newLength) => {\n\tstate.contents = addChunk(convertedChunk, state, newLength);\n\tstate.length = newLength;\n};\n\nconst isAsyncIterable = stream => typeof stream === 'object' && stream !== null && typeof stream[Symbol.asyncIterator] === 'function';\n\nconst getChunkType = chunk => {\n\tconst typeOfChunk = typeof chunk;\n\n\tif (typeOfChunk === 'string') {\n\t\treturn 'string';\n\t}\n\n\tif (typeOfChunk !== 'object' || chunk === null) {\n\t\treturn 'others';\n\t}\n\n\t// eslint-disable-next-line n/prefer-global/buffer\n\tif (globalThis.Buffer?.isBuffer(chunk)) {\n\t\treturn 'buffer';\n\t}\n\n\tconst prototypeName = objectToString.call(chunk);\n\n\tif (prototypeName === '[object ArrayBuffer]') {\n\t\treturn 'arrayBuffer';\n\t}\n\n\tif (prototypeName === '[object DataView]') {\n\t\treturn 'dataView';\n\t}\n\n\tif (\n\t\tNumber.isInteger(chunk.byteLength)\n\t\t&& Number.isInteger(chunk.byteOffset)\n\t\t&& objectToString.call(chunk.buffer) === '[object ArrayBuffer]'\n\t) {\n\t\treturn 'typedArray';\n\t}\n\n\treturn 'others';\n};\n\nconst {toString: objectToString} = Object.prototype;\n\nexport class MaxBufferError extends Error {\n\tname = 'MaxBufferError';\n\n\tconstructor() {\n\t\tsuper('maxBuffer exceeded');\n\t}\n}\n","export const identity = value => value;\n\nexport const noop = () => undefined;\n\nexport const getContentsProp = ({contents}) => contents;\n\nexport const throwObjectStream = chunk => {\n\tthrow new Error(`Streams in object mode are not supported: ${String(chunk)}`);\n};\n\nexport const getLengthProp = convertedChunk => convertedChunk.length;\n","import {getStreamContents} from './contents.js';\nimport {noop, throwObjectStream, getLengthProp} from './utils.js';\n\nexport async function getStreamAsArrayBuffer(stream, options) {\n\treturn getStreamContents(stream, arrayBufferMethods, options);\n}\n\nconst initArrayBuffer = () => ({contents: new ArrayBuffer(0)});\n\nconst useTextEncoder = chunk => textEncoder.encode(chunk);\nconst textEncoder = new TextEncoder();\n\nconst useUint8Array = chunk => new Uint8Array(chunk);\n\nconst useUint8ArrayWithOffset = chunk => new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength);\n\nconst truncateArrayBufferChunk = (convertedChunk, chunkSize) => convertedChunk.slice(0, chunkSize);\n\n// `contents` is an increasingly growing `Uint8Array`.\nconst addArrayBufferChunk = (convertedChunk, {contents, length: previousLength}, length) => {\n\tconst newContents = hasArrayBufferResize() ? resizeArrayBuffer(contents, length) : resizeArrayBufferSlow(contents, length);\n\tnew Uint8Array(newContents).set(convertedChunk, previousLength);\n\treturn newContents;\n};\n\n// Without `ArrayBuffer.resize()`, `contents` size is always a power of 2.\n// This means its last bytes are zeroes (not stream data), which need to be\n// trimmed at the end with `ArrayBuffer.slice()`.\nconst resizeArrayBufferSlow = (contents, length) => {\n\tif (length <= contents.byteLength) {\n\t\treturn contents;\n\t}\n\n\tconst arrayBuffer = new ArrayBuffer(getNewContentsLength(length));\n\tnew Uint8Array(arrayBuffer).set(new Uint8Array(contents), 0);\n\treturn arrayBuffer;\n};\n\n// With `ArrayBuffer.resize()`, `contents` size matches exactly the size of\n// the stream data. It does not include extraneous zeroes to trim at the end.\n// The underlying `ArrayBuffer` does allocate a number of bytes that is a power\n// of 2, but those bytes are only visible after calling `ArrayBuffer.resize()`.\nconst resizeArrayBuffer = (contents, length) => {\n\tif (length <= contents.maxByteLength) {\n\t\tcontents.resize(length);\n\t\treturn contents;\n\t}\n\n\tconst arrayBuffer = new ArrayBuffer(length, {maxByteLength: getNewContentsLength(length)});\n\tnew Uint8Array(arrayBuffer).set(new Uint8Array(contents), 0);\n\treturn arrayBuffer;\n};\n\n// Retrieve the closest `length` that is both >= and a power of 2\nconst getNewContentsLength = length => SCALE_FACTOR ** Math.ceil(Math.log(length) / Math.log(SCALE_FACTOR));\n\nconst SCALE_FACTOR = 2;\n\nconst finalizeArrayBuffer = ({contents, length}) => hasArrayBufferResize() ? contents : contents.slice(0, length);\n\n// `ArrayBuffer.slice()` is slow. When `ArrayBuffer.resize()` is available\n// (Node >=20.0.0, Safari >=16.4 and Chrome), we can use it instead.\n// eslint-disable-next-line no-warning-comments\n// TODO: remove after dropping support for Node 20.\n// eslint-disable-next-line no-warning-comments\n// TODO: use `ArrayBuffer.transferToFixedLength()` instead once it is available\nconst hasArrayBufferResize = () => 'resize' in ArrayBuffer.prototype;\n\nconst arrayBufferMethods = {\n\tinit: initArrayBuffer,\n\tconvertChunk: {\n\t\tstring: useTextEncoder,\n\t\tbuffer: useUint8Array,\n\t\tarrayBuffer: useUint8Array,\n\t\tdataView: useUint8ArrayWithOffset,\n\t\ttypedArray: useUint8ArrayWithOffset,\n\t\tothers: throwObjectStream,\n\t},\n\tgetSize: getLengthProp,\n\ttruncateChunk: truncateArrayBufferChunk,\n\taddChunk: addArrayBufferChunk,\n\tgetFinalChunk: noop,\n\tfinalize: finalizeArrayBuffer,\n};\n","import {getStreamAsArrayBuffer} from './array-buffer.js';\n\nexport async function getStreamAsBuffer(stream, options) {\n\tif (!('Buffer' in globalThis)) {\n\t\tthrow new Error('getStreamAsBuffer() is only supported in Node.js');\n\t}\n\n\ttry {\n\t\treturn arrayBufferToNodeBuffer(await getStreamAsArrayBuffer(stream, options));\n\t} catch (error) {\n\t\tif (error.bufferedData !== undefined) {\n\t\t\terror.bufferedData = arrayBufferToNodeBuffer(error.bufferedData);\n\t\t}\n\n\t\tthrow error;\n\t}\n}\n\n// eslint-disable-next-line n/prefer-global/buffer\nconst arrayBufferToNodeBuffer = arrayBuffer => globalThis.Buffer.from(arrayBuffer);\n","import {getStreamContents} from './contents.js';\nimport {identity, getContentsProp, throwObjectStream, getLengthProp} from './utils.js';\n\nexport async function getStreamAsString(stream, options) {\n\treturn getStreamContents(stream, stringMethods, options);\n}\n\nconst initString = () => ({contents: '', textDecoder: new TextDecoder()});\n\nconst useTextDecoder = (chunk, {textDecoder}) => textDecoder.decode(chunk, {stream: true});\n\nconst addStringChunk = (convertedChunk, {contents}) => contents + convertedChunk;\n\nconst truncateStringChunk = (convertedChunk, chunkSize) => convertedChunk.slice(0, chunkSize);\n\nconst getFinalStringChunk = ({textDecoder}) => {\n\tconst finalChunk = textDecoder.decode();\n\treturn finalChunk === '' ? undefined : finalChunk;\n};\n\nconst stringMethods = {\n\tinit: initString,\n\tconvertChunk: {\n\t\tstring: identity,\n\t\tbuffer: useTextDecoder,\n\t\tarrayBuffer: useTextDecoder,\n\t\tdataView: useTextDecoder,\n\t\ttypedArray: useTextDecoder,\n\t\tothers: throwObjectStream,\n\t},\n\tgetSize: getLengthProp,\n\ttruncateChunk: truncateStringChunk,\n\taddChunk: addStringChunk,\n\tgetFinalChunk: getFinalStringChunk,\n\tfinalize: getContentsProp,\n};\n","// eslint-disable-next-line unicorn/prefer-top-level-await\nconst nativePromisePrototype = (async () => {})().constructor.prototype;\n\nconst descriptors = ['then', 'catch', 'finally'].map(property => [\n\tproperty,\n\tReflect.getOwnPropertyDescriptor(nativePromisePrototype, property),\n]);\n\n// The return value is a mixin of `childProcess` and `Promise`\nexport const mergePromise = (spawned, promise) => {\n\tfor (const [property, descriptor] of descriptors) {\n\t\t// Starting the main `promise` is deferred to avoid consuming streams\n\t\tconst value = typeof promise === 'function'\n\t\t\t? (...args) => Reflect.apply(descriptor.value, promise(), args)\n\t\t\t: descriptor.value.bind(promise);\n\n\t\tReflect.defineProperty(spawned, property, {...descriptor, value});\n\t}\n};\n\n// Use promises instead of `child_process` events\nexport const getSpawnedPromise = spawned => new Promise((resolve, reject) => {\n\tspawned.on('exit', (exitCode, signal) => {\n\t\tresolve({exitCode, signal});\n\t});\n\n\tspawned.on('error', error => {\n\t\treject(error);\n\t});\n\n\tif (spawned.stdin) {\n\t\tspawned.stdin.on('error', error => {\n\t\t\treject(error);\n\t\t});\n\t}\n});\n","import {Buffer} from 'node:buffer';\nimport {ChildProcess} from 'node:child_process';\n\nconst normalizeArgs = (file, args = []) => {\n\tif (!Array.isArray(args)) {\n\t\treturn [file];\n\t}\n\n\treturn [file, ...args];\n};\n\nconst NO_ESCAPE_REGEXP = /^[\\w.-]+$/;\n\nconst escapeArg = arg => {\n\tif (typeof arg !== 'string' || NO_ESCAPE_REGEXP.test(arg)) {\n\t\treturn arg;\n\t}\n\n\treturn `\"${arg.replaceAll('\"', '\\\\\"')}\"`;\n};\n\nexport const joinCommand = (file, args) => normalizeArgs(file, args).join(' ');\n\nexport const getEscapedCommand = (file, args) => normalizeArgs(file, args).map(arg => escapeArg(arg)).join(' ');\n\nconst SPACES_REGEXP = / +/g;\n\n// Handle `execaCommand()`\nexport const parseCommand = command => {\n\tconst tokens = [];\n\tfor (const token of command.trim().split(SPACES_REGEXP)) {\n\t\t// Allow spaces to be escaped by a backslash if not meant as a delimiter\n\t\tconst previousToken = tokens.at(-1);\n\t\tif (previousToken && previousToken.endsWith('\\\\')) {\n\t\t\t// Merge previous token with current one\n\t\t\ttokens[tokens.length - 1] = `${previousToken.slice(0, -1)} ${token}`;\n\t\t} else {\n\t\t\ttokens.push(token);\n\t\t}\n\t}\n\n\treturn tokens;\n};\n\nconst parseExpression = expression => {\n\tconst typeOfExpression = typeof expression;\n\n\tif (typeOfExpression === 'string') {\n\t\treturn expression;\n\t}\n\n\tif (typeOfExpression === 'number') {\n\t\treturn String(expression);\n\t}\n\n\tif (\n\t\ttypeOfExpression === 'object'\n\t\t&& expression !== null\n\t\t&& !(expression instanceof ChildProcess)\n\t\t&& 'stdout' in expression\n\t) {\n\t\tconst typeOfStdout = typeof expression.stdout;\n\n\t\tif (typeOfStdout === 'string') {\n\t\t\treturn expression.stdout;\n\t\t}\n\n\t\tif (Buffer.isBuffer(expression.stdout)) {\n\t\t\treturn expression.stdout.toString();\n\t\t}\n\n\t\tthrow new TypeError(`Unexpected \"${typeOfStdout}\" stdout in template expression`);\n\t}\n\n\tthrow new TypeError(`Unexpected \"${typeOfExpression}\" in template expression`);\n};\n\nconst concatTokens = (tokens, nextTokens, isNew) => isNew || tokens.length === 0 || nextTokens.length === 0\n\t? [...tokens, ...nextTokens]\n\t: [\n\t\t...tokens.slice(0, -1),\n\t\t`${tokens.at(-1)}${nextTokens[0]}`,\n\t\t...nextTokens.slice(1),\n\t];\n\nconst parseTemplate = ({templates, expressions, tokens, index, template}) => {\n\tconst templateString = template ?? templates.raw[index];\n\tconst templateTokens = templateString.split(SPACES_REGEXP).filter(Boolean);\n\tconst newTokens = concatTokens(\n\t\ttokens,\n\t\ttemplateTokens,\n\t\ttemplateString.startsWith(' '),\n\t);\n\n\tif (index === expressions.length) {\n\t\treturn newTokens;\n\t}\n\n\tconst expression = expressions[index];\n\tconst expressionTokens = Array.isArray(expression)\n\t\t? expression.map(expression => parseExpression(expression))\n\t\t: [parseExpression(expression)];\n\treturn concatTokens(\n\t\tnewTokens,\n\t\texpressionTokens,\n\t\ttemplateString.endsWith(' '),\n\t);\n};\n\nexport const parseTemplates = (templates, expressions) => {\n\tlet tokens = [];\n\n\tfor (const [index, template] of templates.entries()) {\n\t\ttokens = parseTemplate({templates, expressions, tokens, index, template});\n\t}\n\n\treturn tokens;\n};\n\n","import {debuglog} from 'node:util';\nimport process from 'node:process';\n\nexport const verboseDefault = debuglog('execa').enabled;\n\nconst padField = (field, padding) => String(field).padStart(padding, '0');\n\nconst getTimestamp = () => {\n\tconst date = new Date();\n\treturn `${padField(date.getHours(), 2)}:${padField(date.getMinutes(), 2)}:${padField(date.getSeconds(), 2)}.${padField(date.getMilliseconds(), 3)}`;\n};\n\nexport const logCommand = (escapedCommand, {verbose}) => {\n\tif (!verbose) {\n\t\treturn;\n\t}\n\n\tprocess.stderr.write(`[${getTimestamp()}] ${escapedCommand}\\n`);\n};\n","import { execaSync } from \"execa\";\n\nexport function head(options) {\n try {\n return execaSync(\"git\", [\"rev-parse\", \"HEAD\"], options).stdout;\n } catch {\n return undefined;\n }\n}\n\nexport function branch(options) {\n try {\n const headRef = execaSync(\n \"git\",\n [\"rev-parse\", \"--abbrev-ref\", \"HEAD\"],\n options,\n ).stdout;\n\n if (headRef === \"HEAD\") {\n const branch = execaSync(\n \"git\",\n [\"show\", \"-s\", \"--pretty=%d\", \"HEAD\"],\n options,\n )\n .stdout.replace(/^\\(|\\)$/g, \"\")\n .split(\", \")\n .find((branch) => branch.startsWith(\"origin/\"));\n return branch ? branch.match(/^origin\\/(?<branch>.+)/)[1] : undefined;\n }\n\n return headRef;\n } catch {\n return undefined;\n }\n}\n\n// Match slug on SSH URLs (ex: `USER@HOST:PORT/ORG/REPO.git`)\nconst GIT_SSH_URL_SLUG_PATTERN = /^(?:.*)@(?:.*):(?:\\d+\\/)?(.*)\\.git$/;\n\n// Match slug on HTTP(S) URLs `https://github.com/semantic-release/env-ci.git`\nconst GIT_PATHNAME_SLUG_PATTERN = /^\\/(.*)\\.git$/;\n\n/**\n * Extract repository slug(owner/repo) from a repository URL\n *\n * @param {String} repositoryURL\n * @returns {String | undefined}\n */\nexport function getSlugFromGitURL(repositoryURL) {\n if (!repositoryURL) {\n return undefined;\n }\n\n if (repositoryURL.match(GIT_SSH_URL_SLUG_PATTERN)) {\n return repositoryURL.replace(GIT_SSH_URL_SLUG_PATTERN, \"$1\");\n }\n\n try {\n const url = new URL(repositoryURL);\n return url.pathname.replace(GIT_PATHNAME_SLUG_PATTERN, \"$1\");\n } catch {\n return undefined;\n }\n}\n","// https://buildkite.com/docs/builds/environment-variables\nimport { getSlugFromGitURL } from \"../lib/git.js\";\n\nexport default {\n detect({ env }) {\n return Boolean(env.BUILDKITE);\n },\n configuration({ env }) {\n const pr =\n env.BUILDKITE_PULL_REQUEST === \"false\"\n ? undefined\n : env.BUILDKITE_PULL_REQUEST;\n const isPr = Boolean(pr);\n\n return {\n name: \"Buildkite\",\n service: \"buildkite\",\n build: env.BUILDKITE_BUILD_NUMBER,\n buildUrl: env.BUILDKITE_BUILD_URL,\n commit: env.BUILDKITE_COMMIT,\n tag: env.BUILDKITE_TAG,\n branch: isPr\n ? env.BUILDKITE_PULL_REQUEST_BASE_BRANCH\n : env.BUILDKITE_BRANCH,\n slug: getSlugFromGitURL(env.BUILDKITE_REPO),\n pr,\n isPr,\n prBranch: isPr ? env.BUILDKITE_BRANCH : undefined,\n root: env.BUILDKITE_BUILD_CHECKOUT_PATH,\n };\n },\n};\n","// https://circleci.com/docs/2.0/env-vars/#built-in-environment-variables\n\nimport { prNumber } from \"../lib/utils.js\";\n\nexport default {\n detect({ env }) {\n return Boolean(env.CIRCLECI);\n },\n configuration({ env }) {\n const pr =\n env.CIRCLE_PR_NUMBER ||\n prNumber(env.CIRCLE_PULL_REQUEST || env.CI_PULL_REQUEST);\n const isPr = Boolean(pr);\n\n return {\n name: \"CircleCI\",\n service: \"circleci\",\n build: env.CIRCLE_BUILD_NUM,\n buildUrl: env.CIRCLE_BUILD_URL,\n job: `${env.CIRCLE_BUILD_NUM}.${env.CIRCLE_NODE_INDEX}`,\n commit: env.CIRCLE_SHA1,\n tag: env.CIRCLE_TAG,\n branch: isPr ? undefined : env.CIRCLE_BRANCH,\n pr,\n isPr,\n prBranch: isPr ? env.CIRCLE_BRANCH : undefined,\n slug: `${env.CIRCLE_PROJECT_USERNAME}/${env.CIRCLE_PROJECT_REPONAME}`,\n };\n },\n};\n","// https://cirrus-ci.org/guide/writing-tasks/#environment-variables\n\nconst CIRRUS_CI_DASHBOARD = \"https://cirrus-ci.com\";\n\nexport default {\n detect({ env }) {\n return Boolean(env.CIRRUS_CI);\n },\n configuration({ env }) {\n const pr = env.CIRRUS_PR;\n const isPr = Boolean(pr);\n\n return {\n name: \"Cirrus CI\",\n service: \"cirrus\",\n commit: env.CIRRUS_CHANGE_IN_REPO,\n tag: env.CIRRUS_TAG,\n build: env.CIRRUS_BUILD_ID,\n buildUrl: `${CIRRUS_CI_DASHBOARD}/build/${env.CIRRUS_BUILD_ID}`,\n job: env.CIRRUS_TASK_ID,\n jobUrl: `${CIRRUS_CI_DASHBOARD}/task/${env.CIRRUS_TASK_ID}`,\n branch: isPr ? env.CIRRUS_BASE_BRANCH : env.CIRRUS_BRANCH,\n pr,\n isPr,\n prBranch: isPr ? env.CIRRUS_BRANCH : undefined,\n slug: env.CIRRUS_REPO_FULL_NAME,\n root: env.CIRRUS_WORKING_DIR,\n };\n },\n};\n","// https://developers.cloudflare.com/pages/platform/build-configuration#environment-variables\n\nexport default {\n detect({ env }) {\n return env.CF_PAGES === \"1\";\n },\n configuration({ env }) {\n return {\n name: \"Cloudflare Pages\",\n service: \"cloudflarePages\",\n commit: env.CF_PAGES_COMMIT_SHA,\n branch: env.CF_PAGES_BRANCH,\n root: env.PWD,\n };\n },\n};\n","import { head, branch } from \"../lib/git.js\";\n\n// https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html\n\nexport default {\n detect({ env }) {\n return Boolean(env.CODEBUILD_BUILD_ID);\n },\n configuration({ env, cwd }) {\n return {\n name: \"AWS CodeBuild\",\n service: \"codebuild\",\n commit: head({ env, cwd }),\n build: env.CODEBUILD_BUILD_ID,\n branch: branch({ env, cwd }),\n buildUrl: `https://console.aws.amazon.com/codebuild/home?region=${env.AWS_REGION}#/builds/${env.CODEBUILD_BUILD_ID}/view/new`,\n root: env.PWD,\n };\n },\n};\n","// https://codefresh.io/docs/docs/codefresh-yaml/variables#system-provided-variables\n\nexport default {\n detect({ env }) {\n return Boolean(env.CF_BUILD_ID);\n },\n configuration({ env }) {\n const pr = env.CF_PULL_REQUEST_NUMBER;\n const isPr = Boolean(pr);\n\n return {\n name: \"Codefresh\",\n service: \"codefresh\",\n commit: env.CF_REVISION,\n build: env.CF_BUILD_ID,\n buildUrl: env.CF_BUILD_URL,\n branch: isPr ? env.CF_PULL_REQUEST_TARGET : env.CF_BRANCH,\n pr,\n isPr,\n prBranch: isPr ? env.CF_BRANCH : undefined,\n slug: `${env.CF_REPO_OWNER}/${env.CF_REPO_NAME}`,\n root: env.CF_VOLUME_PATH,\n };\n },\n};\n","// https://documentation.codeship.com/basic/builds-and-configuration/set-environment-variables/#default-environment-variables\n\nexport default {\n detect({ env }) {\n return env.CI_NAME && env.CI_NAME === \"codeship\";\n },\n configuration({ env }) {\n return {\n name: \"Codeship\",\n service: \"codeship\",\n build: env.CI_BUILD_NUMBER,\n buildUrl: env.CI_BUILD_URL,\n commit: env.CI_COMMIT_ID,\n branch: env.CI_BRANCH,\n slug: env.CI_REPO_NAME,\n };\n },\n};\n","// https://readme.drone.io/reference/environ\n\nexport default {\n detect({ env }) {\n return Boolean(env.DRONE);\n },\n configuration({ env }) {\n const isPr = env.DRONE_BUILD_EVENT === \"pull_request\";\n\n return {\n name: \"Drone\",\n service: \"drone\",\n commit: env.DRONE_COMMIT_SHA,\n tag: env.DRONE_TAG,\n build: env.DRONE_BUILD_NUMBER,\n buildUrl: env.DRONE_BUILD_LINK,\n branch: isPr ? env.DRONE_TARGET_BRANCH : env.DRONE_BRANCH,\n job: env.DRONE_JOB_NUMBER,\n jobUrl: env.DRONE_BUILD_LINK,\n pr: env.DRONE_PULL_REQUEST,\n isPr,\n prBranch: isPr ? env.DRONE_SOURCE_BRANCH : undefined,\n slug: `${env.DRONE_REPO_OWNER}/${env.DRONE_REPO_NAME}`,\n root: env.DRONE_WORKSPACE,\n };\n },\n};\n","import { head, branch } from \"../lib/git.js\";\n\nexport default {\n configuration(options) {\n return { commit: head(options), branch: branch(options) };\n },\n};\n","import { readFileSync } from \"node:fs\";\n\n// https://docs.github.com/en/actions/learn-github-actions/environment-variables#default-environment-variables\nimport { parseBranch } from \"../lib/utils.js\";\n\nconst getPrEvent = ({ env }) => {\n try {\n const event = env.GITHUB_EVENT_PATH\n ? JSON.parse(readFileSync(env.GITHUB_EVENT_PATH, \"utf-8\"))\n : undefined;\n\n if (event && event.pull_request) {\n return {\n branch: event.pull_request.base\n ? parseBranch(event.pull_request.base.ref)\n : undefined,\n pr: event.pull_request.number,\n };\n }\n } catch {\n // Noop\n }\n\n return { pr: undefined, branch: undefined };\n};\n\nconst getPrNumber = (env) => {\n const event = env.GITHUB_EVENT_PATH\n ? JSON.parse(readFileSync(env.GITHUB_EVENT_PATH, \"utf-8\"))\n : undefined;\n\n return event && event.pull_request ? event.pull_request.number : undefined;\n};\n\nexport default {\n detect({ env }) {\n return Boolean(env.GITHUB_ACTIONS);\n },\n configuration({ env, cwd }) {\n const isPr =\n env.GITHUB_EVENT_NAME === \"pull_request\" ||\n env.GITHUB_EVENT_NAME === \"pull_request_target\";\n const branch = parseBranch(\n env.GITHUB_EVENT_NAME === \"pull_request_target\"\n ? `refs/pull/${getPrNumber(env)}/merge`\n : env.GITHUB_REF,\n );\n\n return {\n name: \"GitHub Actions\",\n service: \"github\",\n commit: env.GITHUB_SHA,\n build: env.GITHUB_RUN_ID,\n buildUrl: `${env.GITHUB_SERVER_URL}/${env.GITHUB_REPOSITORY}/actions/runs/${env.GITHUB_RUN_ID}`,\n isPr,\n branch,\n prBranch: isPr ? branch : undefined,\n slug: env.GITHUB_REPOSITORY,\n root: env.GITHUB_WORKSPACE,\n ...(isPr ? getPrEvent({ env, cwd }) : undefined),\n };\n },\n};\n","// https://docs.gitlab.com/ce/ci/variables/README.html\n\nexport default {\n detect({ env }) {\n return Boolean(env.GITLAB_CI);\n },\n configuration({ env }) {\n const pr = env.CI_MERGE_REQUEST_ID;\n const isPr = Boolean(pr);\n\n return {\n name: \"GitLab CI/CD\",\n service: \"gitlab\",\n commit: env.CI_COMMIT_SHA,\n tag: env.CI_COMMIT_TAG,\n build: env.CI_PIPELINE_ID,\n buildUrl: `${env.CI_PROJECT_URL}/pipelines/${env.CI_PIPELINE_ID}`,\n job: env.CI_JOB_ID,\n jobUrl: `${env.CI_PROJECT_URL}/-/jobs/${env.CI_JOB_ID}`,\n branch: isPr\n ? env.CI_MERGE_REQUEST_TARGET_BRANCH_NAME\n : env.CI_COMMIT_REF_NAME,\n pr,\n isPr,\n prBranch: env.CI_MERGE_REQUEST_SOURCE_BRANCH_NAME,\n slug: env.CI_PROJECT_PATH,\n root: env.CI_PROJECT_DIR,\n };\n },\n};\n","import { head } from \"../lib/git.js\";\n\n// https://wiki.jenkins.io/display/JENKINS/Building+a+software+project\n\nexport default {\n detect({ env }) {\n return Boolean(env.JENKINS_URL);\n },\n configuration({ env, cwd }) {\n const pr = env.ghprbPullId || env.gitlabMergeRequestId || env.CHANGE_ID;\n const isPr = Boolean(pr);\n const localBranch =\n env.GIT_LOCAL_BRANCH ||\n env.GIT_BRANCH ||\n env.gitlabBranch ||\n env.BRANCH_NAME;\n\n return {\n name: \"Jenkins\",\n service: \"jenkins\",\n commit: env.ghprbActualCommit || env.GIT_COMMIT || head({ env, cwd }),\n branch: isPr\n ? env.ghprbTargetBranch || env.gitlabTargetBranch\n : localBranch,\n build: env.BUILD_NUMBER,\n buildUrl: env.BUILD_URL,\n root: env.WORKSPACE,\n pr,\n isPr,\n prBranch: isPr\n ? env.ghprbSourceBranch || env.gitlabSourceBranch || localBranch\n : undefined,\n };\n },\n};\n","// https://docs.netlify.com/configure-builds/environment-variables/#netlify-configuration-variables\n\nexport default {\n detect({ env }) {\n return env.NETLIFY === \"true\";\n },\n configuration({ env }) {\n const isPr = env.PULL_REQUEST === \"true\";\n\n return {\n name: \"Netlify\",\n service: \"netlify\",\n commit: env.COMMIT_REF,\n build: env.DEPLOY_ID,\n buildUrl: `https://app.netlify.com/sites/${env.SITE_NAME}/deploys/${env.DEPLOY_ID}`,\n branch: isPr ? undefined : env.HEAD,\n pr: env.REVIEW_ID,\n isPr,\n prBranch: isPr ? env.HEAD : undefined,\n slug: env.REPOSITORY_URL.match(/[^/:]+\\/[^/]+?$/)[0],\n root: env.PWD,\n };\n },\n};\n","// https://puppet.com/docs/pipelines-for-apps/enterprise/environment-variable.html\n\nexport default {\n detect({ env }) {\n return Boolean(env.DISTELLI_APPNAME);\n },\n configuration({ env }) {\n return {\n name: \"Puppet\",\n service: \"puppet\",\n build: env.DISTELLI_BUILDNUM,\n buildUrl: env.DISTELLI_RELEASE,\n commit: env.DISTELLI_RELREVISION,\n branch: env.DISTELLI_RELBRANCH,\n root: env.DISTELLI_INSTALLHOME,\n };\n },\n};\n","// https://sail.ci/docs/environment-variables\n\nexport default {\n detect({ env }) {\n return Boolean(env.SAILCI);\n },\n configuration({ env }) {\n const pr = env.SAIL_PULL_REQUEST_NUMBER;\n const isPr = Boolean(pr);\n\n return {\n name: \"Sail CI\",\n service: \"sail\",\n commit: env.SAIL_COMMIT_SHA,\n branch: isPr ? undefined : env.SAIL_COMMIT_BRANCH,\n pr,\n isPr,\n slug: `${env.SAIL_REPO_OWNER}/${env.SAIL_REPO_NAME}`,\n root: env.SAIL_CLONE_DIR,\n };\n },\n};\n","// https://docs.screwdriver.cd/user-guide/environment-variables\n\nexport default {\n detect({ env }) {\n return Boolean(env.SCREWDRIVER);\n },\n configuration({ env }) {\n const pr = env.SD_PULL_REQUEST;\n const isPr = Boolean(pr);\n\n return {\n name: \"Screwdriver.cd\",\n service: \"screwdriver\",\n branch: isPr ? env.PR_BASE_BRANCH_NAME : env.GIT_BRANCH,\n prBranch: isPr ? env.PR_BRANCH_NAME : undefined,\n commit: env.SD_BUILD_SHA,\n build: env.SD_BUILD_ID,\n buildUrl: env.SD_UI_BUILD_URL,\n job: env.SD_JOB_ID,\n pr,\n isPr,\n slug: env.SD_PIPELINE_NAME,\n root: env.SD_ROOT_DIR,\n };\n },\n};\n","// https://scrutinizer-ci.com/docs/build/environment-variables\n\nexport default {\n detect({ env }) {\n return Boolean(env.SCRUTINIZER);\n },\n configuration({ env }) {\n const pr = env.SCRUTINIZER_PR_NUMBER;\n const isPr = Boolean(pr);\n\n return {\n name: \"Scrutinizer\",\n service: \"scrutinizer\",\n commit: env.SCRUTINIZER_SHA1,\n build: env.SCRUTINIZER_INSPECTION_UUID,\n branch: env.SCRUTINIZER_BRANCH,\n pr,\n isPr,\n prBranch: env.SCRUTINIZER_PR_SOURCE_BRANCH,\n };\n },\n};\n","import { head } from \"../lib/git.js\";\n\n// 1.0: https://semaphoreci.com/docs/available-environment-variables.html\n// 2.0: https://docs.semaphoreci.com/article/12-environment-variables\n\nexport default {\n detect({ env }) {\n return Boolean(env.SEMAPHORE);\n },\n configuration({ env, cwd }) {\n const pr = env.SEMAPHORE_GIT_PR_NUMBER || env.PULL_REQUEST_NUMBER;\n const isPr = Boolean(pr);\n\n return {\n name: \"Semaphore\",\n service: \"semaphore\",\n commit: env.SEMAPHORE_GIT_SHA || head({ env, cwd }),\n tag: env.SEMAPHORE_GIT_TAG_NAME,\n build: env.SEMAPHORE_JOB_ID || env.SEMAPHORE_BUILD_NUMBER,\n branch: env.SEMAPHORE_GIT_BRANCH || (isPr ? undefined : env.BRANCH_NAME),\n pr,\n isPr,\n prBranch:\n env.SEMAPHORE_GIT_PR_BRANCH || (isPr ? env.BRANCH_NAME : undefined),\n slug: env.SEMAPHORE_GIT_REPO_SLUG || env.SEMAPHORE_REPO_SLUG,\n root: env.SEMAPHORE_GIT_DIR || env.SEMAPHORE_PROJECT_DIR,\n };\n },\n};\n","// http://docs.shippable.com/ci/env-vars/#stdEnv\n\nexport default {\n detect({ env }) {\n return Boolean(env.SHIPPABLE);\n },\n configuration({ env }) {\n const pr = env.IS_PULL_REQUEST === \"true\" ? env.PULL_REQUEST : undefined;\n const isPr = Boolean(pr);\n\n return {\n name: \"Shippable\",\n service: \"shippable\",\n commit: env.COMMIT,\n tag: env.GIT_TAG_NAME,\n build: env.BUILD_NUMBER,\n buildUrl: env.BUILD_URL,\n branch: isPr ? env.BASE_BRANCH : env.BRANCH,\n job: env.JOB_NUMBER,\n pr,\n isPr,\n prBranch: isPr ? env.HEAD_BRANCH : undefined,\n slug: env.SHIPPABLE_REPO_SLUG,\n root: env.SHIPPABLE_BUILD_DIR,\n };\n },\n};\n","// https://confluence.jetbrains.com/display/TCD10/Predefined+Build+Parameters\n\nimport javaProperties from \"java-properties\";\n\nimport { branch } from \"../lib/git.js\";\n\nconst PROPERTIES_MAPPING = {\n root: \"teamcity.build.workingDir\",\n branch: \"teamcity.build.branch\",\n};\n\nconst safeReadProperties = (filePath) => {\n try {\n return javaProperties.of(filePath);\n } catch {\n return undefined;\n }\n};\n\nconst getProperties = ({ env, cwd }) => {\n const buildProperties = env.TEAMCITY_BUILD_PROPERTIES_FILE\n ? safeReadProperties(env.TEAMCITY_BUILD_PROPERTIES_FILE)\n : undefined;\n const configFile = buildProperties\n ? buildProperties.get(\"teamcity.configuration.properties.file\")\n : undefined;\n const configProperties = configFile\n ? safeReadProperties(configFile)\n : configFile;\n\n return Object.fromEntries(\n Object.keys(PROPERTIES_MAPPING).map((key) => [\n key,\n (buildProperties\n ? buildProperties.get(PROPERTIES_MAPPING[key])\n : undefined) ||\n (configProperties\n ? configProperties.get(PROPERTIES_MAPPING[key])\n : undefined) ||\n (key === \"branch\" ? branch({ env, cwd }) : undefined),\n ]),\n );\n};\n\nexport default {\n detect({ env }) {\n return Boolean(env.TEAMCITY_VERSION);\n },\n configuration({ env, cwd }) {\n return {\n name: \"TeamCity\",\n service: \"teamcity\",\n commit: env.BUILD_VCS_NUMBER,\n build: env.BUILD_NUMBER,\n slug: env.TEAMCITY_BUILDCONF_NAME,\n ...getProperties({ env, cwd }),\n };\n },\n};\n","// https://docs.travis-ci.com/user/environment-variables#default-environment-variables\n\nexport default {\n detect({ env }) {\n return Boolean(env.TRAVIS);\n },\n configuration({ env }) {\n const pr =\n env.TRAVIS_PULL_REQUEST === \"false\" ? undefined : env.TRAVIS_PULL_REQUEST;\n const isPr = Boolean(pr);\n\n return {\n name: \"Travis CI\",\n service: \"travis\",\n commit: env.TRAVIS_COMMIT,\n tag: env.TRAVIS_TAG,\n build: env.TRAVIS_BUILD_NUMBER,\n buildUrl: env.TRAVIS_BUILD_WEB_URL,\n branch: env.TRAVIS_BRANCH,\n job: env.TRAVIS_JOB_NUMBER,\n jobUrl: env.TRAVIS_JOB_WEB_URL,\n pr,\n isPr,\n prBranch: env.TRAVIS_PULL_REQUEST_BRANCH,\n slug: env.TRAVIS_REPO_SLUG,\n root: env.TRAVIS_BUILD_DIR,\n };\n },\n};\n","// https://go-vela.github.io/docs/reference/environment/variables/\n\nexport default {\n detect({ env }) {\n return Boolean(env.VELA);\n },\n configuration({ env }) {\n const isPr = env.VELA_BUILD_EVENT === \"pull_request\";\n\n return {\n name: \"Vela\",\n service: \"vela\",\n branch: isPr ? env.VELA_PULL_REQUEST_TARGET : env.VELA_BUILD_BRANCH,\n commit: env.VELA_BUILD_COMMIT,\n tag: env.VELA_BUILD_TAG,\n build: env.VELA_BUILD_NUMBER,\n buildUrl: env.VELA_BUILD_LINK,\n job: undefined,\n jobUrl: undefined,\n isPr,\n pr: env.VELA_BUILD_PULL_REQUEST,\n prBranch: env.VELA_PULL_REQUEST_SOURCE,\n slug: env.VELA_REPO_FULL_NAME,\n root: env.VELA_BUILD_WORKSPACE,\n };\n },\n};\n","// https://vercel.com/docs/environment-variables\n\nexport default {\n detect({ env }) {\n return Boolean(env.VERCEL) || Boolean(env.NOW_GITHUB_DEPLOYMENT);\n },\n configuration({ env }) {\n const name = \"Vercel\";\n const service = \"vercel\";\n\n if (env.VERCEL) {\n return {\n name,\n service,\n commit: env.VERCEL_GIT_COMMIT_SHA,\n branch: env.VERCEL_GIT_COMMIT_REF,\n slug: `${env.VERCEL_GIT_REPO_OWNER}/${env.VERCEL_GIT_REPO_SLUG}`,\n };\n }\n\n return {\n name,\n service,\n commit: env.NOW_GITHUB_COMMIT_SHA,\n branch: env.NOW_GITHUB_COMMIT_REF,\n slug: `${env.NOW_GITHUB_ORG}/${env.NOW_GITHUB_REPO}`,\n };\n },\n};\n","// http://devcenter.wercker.com/docs/environment-variables/available-env-vars#hs_cos_wrapper_name\n\nexport default {\n detect({ env }) {\n return Boolean(env.WERCKER_MAIN_PIPELINE_STARTED);\n },\n configuration({ env }) {\n return {\n name: \"Wercker\",\n service: \"wercker\",\n commit: env.WERCKER_GIT_COMMIT,\n build: env.WERCKER_MAIN_PIPELINE_STARTED,\n buildUrl: env.WERCKER_RUN_URL,\n branch: env.WERCKER_GIT_BRANCH,\n slug: `${env.WERCKER_GIT_OWNER}/${env.WERCKER_GIT_REPOSITORY}`,\n root: env.WERCKER_ROOT,\n };\n },\n};\n","// https://woodpecker-ci.org/docs/usage/environment#built-in-environment-variables\n\nexport default {\n detect({ env }) {\n return env.CI && env.CI === \"woodpecker\";\n },\n configuration({ env }) {\n const isPr = env.CI_PIPELINE_EVENT === \"pull_request\";\n\n return {\n name: \"Woodpecker CI\",\n service: \"woodpecker\",\n commit: env.CI_COMMIT_SHA,\n tag: env.CI_COMMIT_TAG,\n build: env.CI_PIPELINE_NUMBER,\n buildUrl: env.CI_PIPELINE_URL,\n branch: isPr ? env.CI_COMMIT_TARGET_BRANCH : env.CI_COMMIT_BRANCH,\n job: env.CI_STEP_NUMBER,\n jobUrl: env.CI_STEP_URL,\n pr: env.CI_COMMIT_PULL_REQUEST,\n isPr,\n prBranch: isPr ? env.CI_COMMIT_SOURCE_BRANCH : undefined,\n slug: `${env.CI_REPO_OWNER}/${env.CI_REPO_NAME}`,\n root: env.CI_WORKSPACE,\n };\n },\n};\n","// https://jetbrains.com/help/space/automation-environment-variables.html#automation\nimport { parseBranch } from \"../lib/utils.js\";\n\nexport default {\n detect({ env }) {\n return Boolean(env.JB_SPACE_EXECUTION_NUMBER);\n },\n configuration({ env }) {\n const projectKey = env.JB_SPACE_PROJECT_KEY;\n const repositoryName = env.JB_SPACE_GIT_REPOSITORY_NAME;\n return {\n name: \"JetBrains Space\",\n service: \"jetbrainsSpace\",\n commit: env.JB_SPACE_GIT_REVISION,\n build: env.JB_SPACE_EXECUTION_NUMBER,\n branch: parseBranch(env.JB_SPACE_GIT_BRANCH),\n slug:\n projectKey && repositoryName\n ? `${projectKey.toLowerCase()}/${repositoryName}`\n : undefined,\n };\n },\n};\n","import appveyor from \"./services/appveyor.js\";\nimport azurePipelines from \"./services/azure-pipelines.js\";\nimport bamboo from \"./services/bamboo.js\";\nimport bitbucket from \"./services/bitbucket.js\";\nimport bitrise from \"./services/bitrise.js\";\nimport buddy from \"./services/buddy.js\";\nimport buildkite from \"./services/buildkite.js\";\nimport circleci from \"./services/circleci.js\";\nimport cirrus from \"./services/cirrus.js\";\nimport cloudflarePages from \"./services/cloudflare-pages.js\";\nimport codebuild from \"./services/codebuild.js\";\nimport codefresh from \"./services/codefresh.js\";\nimport codeship from \"./services/codeship.js\";\nimport drone from \"./services/drone.js\";\nimport git from \"./services/git.js\";\nimport github from \"./services/github.js\";\nimport gitlab from \"./services/gitlab.js\";\nimport jenkins from \"./services/jenkins.js\";\nimport netlify from \"./services/netlify.js\";\nimport puppet from \"./services/puppet.js\";\nimport sail from \"./services/sail.js\";\nimport screwdriver from \"./services/screwdriver.js\";\nimport scrutinizer from \"./services/scrutinizer.js\";\nimport semaphore from \"./services/semaphore.js\";\nimport shippable from \"./services/shippable.js\";\nimport teamcity from \"./services/teamcity.js\";\nimport travis from \"./services/travis.js\";\nimport vela from \"./services/vela.js\";\nimport vercel from \"./services/vercel.js\";\nimport wercker from \"./services/wercker.js\";\nimport woodpecker from \"./services/woodpecker.js\";\nimport jetbrainsSpace from \"./services/jetbrains-space.js\";\n\nconst services = {\n appveyor,\n azurePipelines,\n bamboo,\n bitbucket,\n bitrise,\n buddy,\n buildkite,\n circleci,\n cirrus,\n cloudflarePages,\n codebuild,\n codefresh,\n codeship,\n drone,\n github,\n gitlab,\n jenkins,\n netlify,\n puppet,\n sail,\n screwdriver,\n scrutinizer,\n semaphore,\n shippable,\n teamcity,\n travis,\n vela,\n vercel,\n wercker,\n woodpecker,\n jetbrainsSpace,\n};\n\nexport default ({ env = process.env, cwd = process.cwd() } = {}) => {\n for (const name of Object.keys(services)) {\n if (services[name].detect({ env, cwd })) {\n return { isCi: true, ...services[name].configuration({ env, cwd }) };\n }\n }\n\n return { isCi: Boolean(env.CI), ...git.configuration({ env, cwd }) };\n};\n","import envCi from \"env-ci\";\n\nfunction getAttemptFromEnv(ciService?: string): string | undefined {\n switch (ciService) {\n case \"github\":\n return process.env.GITHUB_RUN_ATTEMPT;\n case \"azure-devops\":\n return process.env.SYSTEM_JOBATTEMPT;\n case \"bitbucket\":\n return process.env.BITBUCKET_STEP_RUN_NUMBER;\n default:\n return undefined;\n }\n}\n\n/**\n * Includes attempt when the provider exposes it.\n */\nexport function getCiRunKey(): string | undefined {\n if (process.env.CI_BUILD_ID) {\n return process.env.CI_BUILD_ID;\n }\n\n const ci = envCi();\n if (!ci.isCi) {\n return undefined;\n }\n\n const attempt = getAttemptFromEnv(ci.service);\n\n // build = normalized \"run/pipeline/build number\"\n // job = normalized job number (when available)\n const parts = [\n ci.service,\n \"slug\" in ci ? ci.slug : undefined,\n \"build\" in ci ? String(ci.build) : undefined,\n \"job\" in ci ? String(ci.job) : undefined,\n attempt && String(attempt),\n ].filter(Boolean);\n\n return parts.length > 0 ? parts.join(\"-\") : undefined;\n}\n","export default function ansiRegex({onlyFirst = false} = {}) {\n\t// Valid string terminator sequences are BEL, ESC\\, and 0x9c\n\tconst ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n\tconst pattern = [\n\t\t`[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?${ST})`,\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))',\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n","import ansiRegex from 'ansi-regex';\n\nconst regex = ansiRegex();\n\nexport default function stripAnsi(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\t// Even though the regex is global, we don't need to reset the `.lastIndex`\n\t// because unlike `.exec()` and `.test()`, `.replace()` does it automatically\n\t// and doing it manually has a performance penalty.\n\treturn string.replace(regex, '');\n}\n","var eaw = {};\n\nif ('undefined' == typeof module) {\n window.eastasianwidth = eaw;\n} else {\n module.exports = eaw;\n}\n\neaw.eastAsianWidth = function(character) {\n var x = character.charCodeAt(0);\n var y = (character.length == 2) ? character.charCodeAt(1) : 0;\n var codePoint = x;\n if ((0xD800 <= x && x <= 0xDBFF) && (0xDC00 <= y && y <= 0xDFFF)) {\n x &= 0x3FF;\n y &= 0x3FF;\n codePoint = (x << 10) | y;\n codePoint += 0x10000;\n }\n\n if ((0x3000 == codePoint) ||\n (0xFF01 <= codePoint && codePoint <= 0xFF60) ||\n (0xFFE0 <= codePoint && codePoint <= 0xFFE6)) {\n return 'F';\n }\n if ((0x20A9 == codePoint) ||\n (0xFF61 <= codePoint && codePoint <= 0xFFBE) ||\n (0xFFC2 <= codePoint && codePoint <= 0xFFC7) ||\n (0xFFCA <= codePoint && codePoint <= 0xFFCF) ||\n (0xFFD2 <= codePoint && codePoint <= 0xFFD7) ||\n (0xFFDA <= codePoint && codePoint <= 0xFFDC) ||\n (0xFFE8 <= codePoint && codePoint <= 0xFFEE)) {\n return 'H';\n }\n if ((0x1100 <= codePoint && codePoint <= 0x115F) ||\n (0x11A3 <= codePoint && codePoint <= 0x11A7) ||\n (0x11FA <= codePoint && codePoint <= 0x11FF) ||\n (0x2329 <= codePoint && codePoint <= 0x232A) ||\n (0x2E80 <= codePoint && codePoint <= 0x2E99) ||\n (0x2E9B <= codePoint && codePoint <= 0x2EF3) ||\n (0x2F00 <= codePoint && codePoint <= 0x2FD5) ||\n (0x2FF0 <= codePoint && codePoint <= 0x2FFB) ||\n (0x3001 <= codePoint && codePoint <= 0x303E) ||\n (0x3041 <= codePoint && codePoint <= 0x3096) ||\n (0x3099 <= codePoint && codePoint <= 0x30FF) ||\n (0x3105 <= codePoint && codePoint <= 0x312D) ||\n (0x3131 <= codePoint && codePoint <= 0x318E) ||\n (0x3190 <= codePoint && codePoint <= 0x31BA) ||\n (0x31C0 <= codePoint && codePoint <= 0x31E3) ||\n (0x31F0 <= codePoint && codePoint <= 0x321E) ||\n (0x3220 <= codePoint && codePoint <= 0x3247) ||\n (0x3250 <= codePoint && codePoint <= 0x32FE) ||\n (0x3300 <= codePoint && codePoint <= 0x4DBF) ||\n (0x4E00 <= codePoint && codePoint <= 0xA48C) ||\n (0xA490 <= codePoint && codePoint <= 0xA4C6) ||\n (0xA960 <= codePoint && codePoint <= 0xA97C) ||\n (0xAC00 <= codePoint && codePoint <= 0xD7A3) ||\n (0xD7B0 <= codePoint && codePoint <= 0xD7C6) ||\n (0xD7CB <= codePoint && codePoint <= 0xD7FB) ||\n (0xF900 <= codePoint && codePoint <= 0xFAFF) ||\n (0xFE10 <= codePoint && codePoint <= 0xFE19) ||\n (0xFE30 <= codePoint && codePoint <= 0xFE52) ||\n (0xFE54 <= codePoint && codePoint <= 0xFE66) ||\n (0xFE68 <= codePoint && codePoint <= 0xFE6B) ||\n (0x1B000 <= codePoint && codePoint <= 0x1B001) ||\n (0x1F200 <= codePoint && codePoint <= 0x1F202) ||\n (0x1F210 <= codePoint && codePoint <= 0x1F23A) ||\n (0x1F240 <= codePoint && codePoint <= 0x1F248) ||\n (0x1F250 <= codePoint && codePoint <= 0x1F251) ||\n (0x20000 <= codePoint && codePoint <= 0x2F73F) ||\n (0x2B740 <= codePoint && codePoint <= 0x2FFFD) ||\n (0x30000 <= codePoint && codePoint <= 0x3FFFD)) {\n return 'W';\n }\n if ((0x0020 <= codePoint && codePoint <= 0x007E) ||\n (0x00A2 <= codePoint && codePoint <= 0x00A3) ||\n (0x00A5 <= codePoint && codePoint <= 0x00A6) ||\n (0x00AC == codePoint) ||\n (0x00AF == codePoint) ||\n (0x27E6 <= codePoint && codePoint <= 0x27ED) ||\n (0x2985 <= codePoint && codePoint <= 0x2986)) {\n return 'Na';\n }\n if ((0x00A1 == codePoint) ||\n (0x00A4 == codePoint) ||\n (0x00A7 <= codePoint && codePoint <= 0x00A8) ||\n (0x00AA == codePoint) ||\n (0x00AD <= codePoint && codePoint <= 0x00AE) ||\n (0x00B0 <= codePoint && codePoint <= 0x00B4) ||\n (0x00B6 <= codePoint && codePoint <= 0x00BA) ||\n (0x00BC <= codePoint && codePoint <= 0x00BF) ||\n (0x00C6 == codePoint) ||\n (0x00D0 == codePoint) ||\n (0x00D7 <= codePoint && codePoint <= 0x00D8) ||\n (0x00DE <= codePoint && codePoint <= 0x00E1) ||\n (0x00E6 == codePoint) ||\n (0x00E8 <= codePoint && codePoint <= 0x00EA) ||\n (0x00EC <= codePoint && codePoint <= 0x00ED) ||\n (0x00F0 == codePoint) ||\n (0x00F2 <= codePoint && codePoint <= 0x00F3) ||\n (0x00F7 <= codePoint && codePoint <= 0x00FA) ||\n (0x00FC == codePoint) ||\n (0x00FE == codePoint) ||\n (0x0101 == codePoint) ||\n (0x0111 == codePoint) ||\n (0x0113 == codePoint) ||\n (0x011B == codePoint) ||\n (0x0126 <= codePoint && codePoint <= 0x0127) ||\n (0x012B == codePoint) ||\n (0x0131 <= codePoint && codePoint <= 0x0133) ||\n (0x0138 == codePoint) ||\n (0x013F <= codePoint && codePoint <= 0x0142) ||\n (0x0144 == codePoint) ||\n (0x0148 <= codePoint && codePoint <= 0x014B) ||\n (0x014D == codePoint) ||\n (0x0152 <= codePoint && codePoint <= 0x0153) ||\n (0x0166 <= codePoint && codePoint <= 0x0167) ||\n (0x016B == codePoint) ||\n (0x01CE == codePoint) ||\n (0x01D0 == codePoint) ||\n (0x01D2 == codePoint) ||\n (0x01D4 == codePoint) ||\n (0x01D6 == codePoint) ||\n (0x01D8 == codePoint) ||\n (0x01DA == codePoint) ||\n (0x01DC == codePoint) ||\n (0x0251 == codePoint) ||\n (0x0261 == codePoint) ||\n (0x02C4 == codePoint) ||\n (0x02C7 == codePoint) ||\n (0x02C9 <= codePoint && codePoint <= 0x02CB) ||\n (0x02CD == codePoint) ||\n (0x02D0 == codePoint) ||\n (0x02D8 <= codePoint && codePoint <= 0x02DB) ||\n (0x02DD == codePoint) ||\n (0x02DF == codePoint) ||\n (0x0300 <= codePoint && codePoint <= 0x036F) ||\n (0x0391 <= codePoint && codePoint <= 0x03A1) ||\n (0x03A3 <= codePoint && codePoint <= 0x03A9) ||\n (0x03B1 <= codePoint && codePoint <= 0x03C1) ||\n (0x03C3 <= codePoint && codePoint <= 0x03C9) ||\n (0x0401 == codePoint) ||\n (0x0410 <= codePoint && codePoint <= 0x044F) ||\n (0x0451 == codePoint) ||\n (0x2010 == codePoint) ||\n (0x2013 <= codePoint && codePoint <= 0x2016) ||\n (0x2018 <= codePoint && codePoint <= 0x2019) ||\n (0x201C <= codePoint && codePoint <= 0x201D) ||\n (0x2020 <= codePoint && codePoint <= 0x2022) ||\n (0x2024 <= codePoint && codePoint <= 0x2027) ||\n (0x2030 == codePoint) ||\n (0x2032 <= codePoint && codePoint <= 0x2033) ||\n (0x2035 == codePoint) ||\n (0x203B == codePoint) ||\n (0x203E == codePoint) ||\n (0x2074 == codePoint) ||\n (0x207F == codePoint) ||\n (0x2081 <= codePoint && codePoint <= 0x2084) ||\n (0x20AC == codePoint) ||\n (0x2103 == codePoint) ||\n (0x2105 == codePoint) ||\n (0x2109 == codePoint) ||\n (0x2113 == codePoint) ||\n (0x2116 == codePoint) ||\n (0x2121 <= codePoint && codePoint <= 0x2122) ||\n (0x2126 == codePoint) ||\n (0x212B == codePoint) ||\n (0x2153 <= codePoint && codePoint <= 0x2154) ||\n (0x215B <= codePoint && codePoint <= 0x215E) ||\n (0x2160 <= codePoint && codePoint <= 0x216B) ||\n (0x2170 <= codePoint && codePoint <= 0x2179) ||\n (0x2189 == codePoint) ||\n (0x2190 <= codePoint && codePoint <= 0x2199) ||\n (0x21B8 <= codePoint && codePoint <= 0x21B9) ||\n (0x21D2 == codePoint) ||\n (0x21D4 == codePoint) ||\n (0x21E7 == codePoint) ||\n (0x2200 == codePoint) ||\n (0x2202 <= codePoint && codePoint <= 0x2203) ||\n (0x2207 <= codePoint && codePoint <= 0x2208) ||\n (0x220B == codePoint) ||\n (0x220F == codePoint) ||\n (0x2211 == codePoint) ||\n (0x2215 == codePoint) ||\n (0x221A == codePoint) ||\n (0x221D <= codePoint && codePoint <= 0x2220) ||\n (0x2223 == codePoint) ||\n (0x2225 == codePoint) ||\n (0x2227 <= codePoint && codePoint <= 0x222C) ||\n (0x222E == codePoint) ||\n (0x2234 <= codePoint && codePoint <= 0x2237) ||\n (0x223C <= codePoint && codePoint <= 0x223D) ||\n (0x2248 == codePoint) ||\n (0x224C == codePoint) ||\n (0x2252 == codePoint) ||\n (0x2260 <= codePoint && codePoint <= 0x2261) ||\n (0x2264 <= codePoint && codePoint <= 0x2267) ||\n (0x226A <= codePoint && codePoint <= 0x226B) ||\n (0x226E <= codePoint && codePoint <= 0x226F) ||\n (0x2282 <= codePoint && codePoint <= 0x2283) ||\n (0x2286 <= codePoint && codePoint <= 0x2287) ||\n (0x2295 == codePoint) ||\n (0x2299 == codePoint) ||\n (0x22A5 == codePoint) ||\n (0x22BF == codePoint) ||\n (0x2312 == codePoint) ||\n (0x2460 <= codePoint && codePoint <= 0x24E9) ||\n (0x24EB <= codePoint && codePoint <= 0x254B) ||\n (0x2550 <= codePoint && codePoint <= 0x2573) ||\n (0x2580 <= codePoint && codePoint <= 0x258F) ||\n (0x2592 <= codePoint && codePoint <= 0x2595) ||\n (0x25A0 <= codePoint && codePoint <= 0x25A1) ||\n (0x25A3 <= codePoint && codePoint <= 0x25A9) ||\n (0x25B2 <= codePoint && codePoint <= 0x25B3) ||\n (0x25B6 <= codePoint && codePoint <= 0x25B7) ||\n (0x25BC <= codePoint && codePoint <= 0x25BD) ||\n (0x25C0 <= codePoint && codePoint <= 0x25C1) ||\n (0x25C6 <= codePoint && codePoint <= 0x25C8) ||\n (0x25CB == codePoint) ||\n (0x25CE <= codePoint && codePoint <= 0x25D1) ||\n (0x25E2 <= codePoint && codePoint <= 0x25E5) ||\n (0x25EF == codePoint) ||\n (0x2605 <= codePoint && codePoint <= 0x2606) ||\n (0x2609 == codePoint) ||\n (0x260E <= codePoint && codePoint <= 0x260F) ||\n (0x2614 <= codePoint && codePoint <= 0x2615) ||\n (0x261C == codePoint) ||\n (0x261E == codePoint) ||\n (0x2640 == codePoint) ||\n (0x2642 == codePoint) ||\n (0x2660 <= codePoint && codePoint <= 0x2661) ||\n (0x2663 <= codePoint && codePoint <= 0x2665) ||\n (0x2667 <= codePoint && codePoint <= 0x266A) ||\n (0x266C <= codePoint && codePoint <= 0x266D) ||\n (0x266F == codePoint) ||\n (0x269E <= codePoint && codePoint <= 0x269F) ||\n (0x26BE <= codePoint && codePoint <= 0x26BF) ||\n (0x26C4 <= codePoint && codePoint <= 0x26CD) ||\n (0x26CF <= codePoint && codePoint <= 0x26E1) ||\n (0x26E3 == codePoint) ||\n (0x26E8 <= codePoint && codePoint <= 0x26FF) ||\n (0x273D == codePoint) ||\n (0x2757 == codePoint) ||\n (0x2776 <= codePoint && codePoint <= 0x277F) ||\n (0x2B55 <= codePoint && codePoint <= 0x2B59) ||\n (0x3248 <= codePoint && codePoint <= 0x324F) ||\n (0xE000 <= codePoint && codePoint <= 0xF8FF) ||\n (0xFE00 <= codePoint && codePoint <= 0xFE0F) ||\n (0xFFFD == codePoint) ||\n (0x1F100 <= codePoint && codePoint <= 0x1F10A) ||\n (0x1F110 <= codePoint && codePoint <= 0x1F12D) ||\n (0x1F130 <= codePoint && codePoint <= 0x1F169) ||\n (0x1F170 <= codePoint && codePoint <= 0x1F19A) ||\n (0xE0100 <= codePoint && codePoint <= 0xE01EF) ||\n (0xF0000 <= codePoint && codePoint <= 0xFFFFD) ||\n (0x100000 <= codePoint && codePoint <= 0x10FFFD)) {\n return 'A';\n }\n\n return 'N';\n};\n\neaw.characterLength = function(character) {\n var code = this.eastAsianWidth(character);\n if (code == 'F' || code == 'W' || code == 'A') {\n return 2;\n } else {\n return 1;\n }\n};\n\n// Split a string considering surrogate-pairs.\nfunction stringToArray(string) {\n return string.match(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[^\\uD800-\\uDFFF]/g) || [];\n}\n\neaw.length = function(string) {\n var characters = stringToArray(string);\n var len = 0;\n for (var i = 0; i < characters.length; i++) {\n len = len + this.characterLength(characters[i]);\n }\n return len;\n};\n\neaw.slice = function(text, start, end) {\n textLen = eaw.length(text)\n start = start ? start : 0;\n end = end ? end : 1;\n if (start < 0) {\n start = textLen + start;\n }\n if (end < 0) {\n end = textLen + end;\n }\n var result = '';\n var eawLen = 0;\n var chars = stringToArray(text);\n for (var i = 0; i < chars.length; i++) {\n var char = chars[i];\n var charLen = eaw.length(char);\n if (eawLen >= start - (charLen == 2 ? 1 : 0)) {\n if (eawLen + charLen <= end) {\n result += char;\n } else {\n break;\n }\n }\n eawLen += charLen;\n }\n return result;\n};\n","\"use strict\";\n\nmodule.exports = function () {\n // https://mths.be/emoji\n return /\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67)\\uDB40\\uDC7F|(?:\\uD83E\\uDDD1\\uD83C\\uDFFF\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C\\uDFFB(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF]))|\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))?|(?:\\uD83C[\\uDFFC-\\uDFFF])\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF]))|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\u200D(?:(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC)?|(?:\\uD83D\\uDC69(?:\\uD83C\\uDFFB\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|(?:\\uD83C[\\uDFFC-\\uDFFF])\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69]))|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC69(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83E\\uDDD1(?:\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83D\\uDE36\\u200D\\uD83C\\uDF2B|\\uD83C\\uDFF3\\uFE0F\\u200D\\u26A7|\\uD83D\\uDC3B\\u200D\\u2744|(?:(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\uD83C\\uDFF4\\u200D\\u2620|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])\\u200D[\\u2640\\u2642]|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u2600-\\u2604\\u260E\\u2611\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26B0\\u26B1\\u26C8\\u26CF\\u26D1\\u26D3\\u26E9\\u26F0\\u26F1\\u26F4\\u26F7\\u26F8\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]|\\uD83D[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3])\\uFE0F|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDE35\\u200D\\uD83D\\uDCAB|\\uD83D\\uDE2E\\u200D\\uD83D\\uDCA8|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83D\\uDC69(?:\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF6\\uD83C\\uDDE6|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83D\\uDC08\\u200D\\u2B1B|\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79)|\\uD83D\\uDC41\\uFE0F|\\uD83C\\uDFF3\\uFE0F|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|[#\\*0-9]\\uFE0F\\u20E3|\\u2764\\uFE0F|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDFF4|(?:[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270C\\u270D]|\\uD83D[\\uDD74\\uDD90])(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC08\\uDC15\\uDC3B\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE2E\\uDE35\\uDE36\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5]|\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD]|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF]|[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD1D\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78\\uDD7A-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCB\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6]|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26A7\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5-\\uDED7\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDD77\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g;\n};\n","import stripAnsi from 'strip-ansi';\nimport eastAsianWidth from 'eastasianwidth';\nimport emojiRegex from 'emoji-regex';\n\nexport default function stringWidth(string, options = {}) {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\toptions = {\n\t\tambiguousIsNarrow: true,\n\t\t...options\n\t};\n\n\tstring = stripAnsi(string);\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = string.replace(emojiRegex(), ' ');\n\n\tconst ambiguousCharacterWidth = options.ambiguousIsNarrow ? 1 : 2;\n\tlet width = 0;\n\n\tfor (const character of string) {\n\t\tconst codePoint = character.codePointAt(0);\n\n\t\t// Ignore control characters\n\t\tif (codePoint <= 0x1F || (codePoint >= 0x7F && codePoint <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (codePoint >= 0x300 && codePoint <= 0x36F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst code = eastAsianWidth.eastAsianWidth(character);\n\t\tswitch (code) {\n\t\t\tcase 'F':\n\t\t\tcase 'W':\n\t\t\t\twidth += 2;\n\t\t\t\tbreak;\n\t\t\tcase 'A':\n\t\t\t\twidth += ambiguousCharacterWidth;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\twidth += 1;\n\t\t}\n\t}\n\n\treturn width;\n}\n","const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue: (red, green, blue) => {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue: hex => {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue: code => {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n","import stringWidth from 'string-width';\nimport stripAnsi from 'strip-ansi';\nimport ansiStyles from 'ansi-styles';\n\nconst ESCAPES = new Set([\n\t'\\u001B',\n\t'\\u009B',\n]);\n\nconst END_CODE = 39;\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\n\nconst wrapAnsiCode = code => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = uri => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${uri}${ANSI_ESCAPE_BELL}`;\n\n// Calculate the length of words split on ' ', ignoring\n// the extra characters added by ansi escape codes\nconst wordLengths = string => string.split(' ').map(character => stringWidth(character));\n\n// Wrap a long word across multiple rows\n// Ansi escape codes do not count towards length\nconst wrapWord = (rows, word, columns) => {\n\tconst characters = [...word];\n\n\tlet isInsideEscape = false;\n\tlet isInsideLinkEscape = false;\n\tlet visible = stringWidth(stripAnsi(rows[rows.length - 1]));\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tconst characterLength = stringWidth(character);\n\n\t\tif (visible + characterLength <= columns) {\n\t\t\trows[rows.length - 1] += character;\n\t\t} else {\n\t\t\trows.push(character);\n\t\t\tvisible = 0;\n\t\t}\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tisInsideEscape = true;\n\t\t\tisInsideLinkEscape = characters.slice(index + 1).join('').startsWith(ANSI_ESCAPE_LINK);\n\t\t}\n\n\t\tif (isInsideEscape) {\n\t\t\tif (isInsideLinkEscape) {\n\t\t\t\tif (character === ANSI_ESCAPE_BELL) {\n\t\t\t\t\tisInsideEscape = false;\n\t\t\t\t\tisInsideLinkEscape = false;\n\t\t\t\t}\n\t\t\t} else if (character === ANSI_SGR_TERMINATOR) {\n\t\t\t\tisInsideEscape = false;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvisible += characterLength;\n\n\t\tif (visible === columns && index < characters.length - 1) {\n\t\t\trows.push('');\n\t\t\tvisible = 0;\n\t\t}\n\t}\n\n\t// It's possible that the last row we copy over is only\n\t// ansi escape characters, handle this edge-case\n\tif (!visible && rows[rows.length - 1].length > 0 && rows.length > 1) {\n\t\trows[rows.length - 2] += rows.pop();\n\t}\n};\n\n// Trims spaces from a string ignoring invisible sequences\nconst stringVisibleTrimSpacesRight = string => {\n\tconst words = string.split(' ');\n\tlet last = words.length;\n\n\twhile (last > 0) {\n\t\tif (stringWidth(words[last - 1]) > 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tlast--;\n\t}\n\n\tif (last === words.length) {\n\t\treturn string;\n\t}\n\n\treturn words.slice(0, last).join(' ') + words.slice(last).join('');\n};\n\n// The wrap-ansi module can be invoked in either 'hard' or 'soft' wrap mode\n//\n// 'hard' will never allow a string to take up more than columns characters\n//\n// 'soft' allows long words to expand past the column length\nconst exec = (string, columns, options = {}) => {\n\tif (options.trim !== false && string.trim() === '') {\n\t\treturn '';\n\t}\n\n\tlet returnValue = '';\n\tlet escapeCode;\n\tlet escapeUrl;\n\n\tconst lengths = wordLengths(string);\n\tlet rows = [''];\n\n\tfor (const [index, word] of string.split(' ').entries()) {\n\t\tif (options.trim !== false) {\n\t\t\trows[rows.length - 1] = rows[rows.length - 1].trimStart();\n\t\t}\n\n\t\tlet rowLength = stringWidth(rows[rows.length - 1]);\n\n\t\tif (index !== 0) {\n\t\t\tif (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {\n\t\t\t\t// If we start with a new word but the current row length equals the length of the columns, add a new row\n\t\t\t\trows.push('');\n\t\t\t\trowLength = 0;\n\t\t\t}\n\n\t\t\tif (rowLength > 0 || options.trim === false) {\n\t\t\t\trows[rows.length - 1] += ' ';\n\t\t\t\trowLength++;\n\t\t\t}\n\t\t}\n\n\t\t// In 'hard' wrap mode, the length of a line is never allowed to extend past 'columns'\n\t\tif (options.hard && lengths[index] > columns) {\n\t\t\tconst remainingColumns = (columns - rowLength);\n\t\t\tconst breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);\n\t\t\tconst breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns);\n\t\t\tif (breaksStartingNextLine < breaksStartingThisLine) {\n\t\t\t\trows.push('');\n\t\t\t}\n\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {\n\t\t\tif (options.wordWrap === false && rowLength < columns) {\n\t\t\t\twrapWord(rows, word, columns);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\trows.push('');\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && options.wordWrap === false) {\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\trows[rows.length - 1] += word;\n\t}\n\n\tif (options.trim !== false) {\n\t\trows = rows.map(row => stringVisibleTrimSpacesRight(row));\n\t}\n\n\tconst pre = [...rows.join('\\n')];\n\n\tfor (const [index, character] of pre.entries()) {\n\t\treturnValue += character;\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tconst {groups} = new RegExp(`(?:\\\\${ANSI_CSI}(?<code>\\\\d+)m|\\\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`).exec(pre.slice(index).join('')) || {groups: {}};\n\t\t\tif (groups.code !== undefined) {\n\t\t\t\tconst code = Number.parseFloat(groups.code);\n\t\t\t\tescapeCode = code === END_CODE ? undefined : code;\n\t\t\t} else if (groups.uri !== undefined) {\n\t\t\t\tescapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n\t\t\t}\n\t\t}\n\n\t\tconst code = ansiStyles.codes.get(Number(escapeCode));\n\n\t\tif (pre[index + 1] === '\\n') {\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink('');\n\t\t\t}\n\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(code);\n\t\t\t}\n\t\t} else if (character === '\\n') {\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(escapeCode);\n\t\t\t}\n\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink(escapeUrl);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn returnValue;\n};\n\n// For each newline, invoke the method separately\nexport default function wrapAnsi(string, columns, options) {\n\treturn String(string)\n\t\t.normalize()\n\t\t.replace(/\\r\\n/g, '\\n')\n\t\t.split('\\n')\n\t\t.map(line => exec(line, columns, options))\n\t\t.join('\\n');\n}\n","const actions = ['up', 'down', 'left', 'right', 'space', 'enter', 'cancel'] as const;\nexport type Action = (typeof actions)[number];\n\n/** Global settings for Clack programs, stored in memory */\ninterface InternalClackSettings {\n\tactions: Set<Action>;\n\taliases: Map<string, Action>;\n}\n\nexport const settings: InternalClackSettings = {\n\tactions: new Set(actions),\n\taliases: new Map<string, Action>([\n\t\t// vim support\n\t\t['k', 'up'],\n\t\t['j', 'down'],\n\t\t['h', 'left'],\n\t\t['l', 'right'],\n\t\t['\\x03', 'cancel'],\n\t\t// opinionated defaults!\n\t\t['escape', 'cancel'],\n\t]),\n};\n\nexport interface ClackSettings {\n\t/**\n\t * Set custom global aliases for the default actions.\n\t * This will not overwrite existing aliases, it will only add new ones!\n\t *\n\t * @param aliases - An object that maps aliases to actions\n\t * @default { k: 'up', j: 'down', h: 'left', l: 'right', '\\x03': 'cancel', 'escape': 'cancel' }\n\t */\n\taliases: Record<string, Action>;\n}\n\nexport function updateSettings(updates: ClackSettings) {\n\tfor (const _key in updates) {\n\t\tconst key = _key as keyof ClackSettings;\n\t\tif (!Object.hasOwn(updates, key)) continue;\n\t\tconst value = updates[key];\n\n\t\tswitch (key) {\n\t\t\tcase 'aliases': {\n\t\t\t\tfor (const alias in value) {\n\t\t\t\t\tif (!Object.hasOwn(value, alias)) continue;\n\t\t\t\t\tif (!settings.aliases.has(alias)) {\n\t\t\t\t\t\tsettings.aliases.set(alias, value[alias]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Check if a key is an alias for a default action\n * @param key - The raw key which might match to an action\n * @param action - The action to match\n * @returns boolean\n */\nexport function isActionKey(key: string | Array<string | undefined>, action: Action) {\n\tif (typeof key === 'string') {\n\t\treturn settings.aliases.get(key) === action;\n\t}\n\n\tfor (const value of key) {\n\t\tif (value === undefined) continue;\n\t\tif (isActionKey(value, action)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","export function diffLines(a: string, b: string) {\n\tif (a === b) return;\n\n\tconst aLines = a.split('\\n');\n\tconst bLines = b.split('\\n');\n\tconst diff: number[] = [];\n\n\tfor (let i = 0; i < Math.max(aLines.length, bLines.length); i++) {\n\t\tif (aLines[i] !== bLines[i]) diff.push(i);\n\t}\n\n\treturn diff;\n}\n","import { stdin, stdout } from 'node:process';\nimport type { Key } from 'node:readline';\nimport * as readline from 'node:readline';\nimport type { Readable } from 'node:stream';\nimport { cursor } from 'sisteransi';\nimport { isActionKey } from './settings';\n\nexport * from './string';\nexport * from './settings';\n\nconst isWindows = globalThis.process.platform.startsWith('win');\n\nexport const CANCEL_SYMBOL = Symbol('clack:cancel');\n\nexport function isCancel(value: unknown): value is symbol {\n\treturn value === CANCEL_SYMBOL;\n}\n\nexport function setRawMode(input: Readable, value: boolean) {\n\tconst i = input as typeof stdin;\n\n\tif (i.isTTY) i.setRawMode(value);\n}\n\nexport function block({\n\tinput = stdin,\n\toutput = stdout,\n\toverwrite = true,\n\thideCursor = true,\n} = {}) {\n\tconst rl = readline.createInterface({\n\t\tinput,\n\t\toutput,\n\t\tprompt: '',\n\t\ttabSize: 1,\n\t});\n\treadline.emitKeypressEvents(input, rl);\n\tif (input.isTTY) input.setRawMode(true);\n\n\tconst clear = (data: Buffer, { name, sequence }: Key) => {\n\t\tconst str = String(data);\n\t\tif (isActionKey([str, name, sequence], 'cancel')) {\n\t\t\tif (hideCursor) output.write(cursor.show);\n\t\t\tprocess.exit(0);\n\t\t\treturn;\n\t\t}\n\t\tif (!overwrite) return;\n\t\tconst dx = name === 'return' ? 0 : -1;\n\t\tconst dy = name === 'return' ? -1 : 0;\n\n\t\treadline.moveCursor(output, dx, dy, () => {\n\t\t\treadline.clearLine(output, 1, () => {\n\t\t\t\tinput.once('keypress', clear);\n\t\t\t});\n\t\t});\n\t};\n\tif (hideCursor) output.write(cursor.hide);\n\tinput.once('keypress', clear);\n\n\treturn () => {\n\t\tinput.off('keypress', clear);\n\t\tif (hideCursor) output.write(cursor.show);\n\n\t\t// Prevent Windows specific issues: https://github.com/bombshell-dev/clack/issues/176\n\t\tif (input.isTTY && !isWindows) input.setRawMode(false);\n\n\t\t// @ts-expect-error fix for https://github.com/nodejs/node/issues/31762#issuecomment-1441223907\n\t\trl.terminal = false;\n\t\trl.close();\n\t};\n}\n","import { stdin, stdout } from 'node:process';\nimport readline, { type Key, type ReadLine } from 'node:readline';\nimport type { Readable } from 'node:stream';\nimport { Writable } from 'node:stream';\nimport { cursor, erase } from 'sisteransi';\nimport wrap from 'wrap-ansi';\n\nimport { CANCEL_SYMBOL, diffLines, isActionKey, setRawMode, settings } from '../utils';\n\nimport type { ClackEvents, ClackState } from '../types';\nimport type { Action } from '../utils';\n\nexport interface PromptOptions<Self extends Prompt> {\n\trender(this: Omit<Self, 'prompt'>): string | undefined;\n\tplaceholder?: string;\n\tinitialValue?: any;\n\tvalidate?: ((value: any) => string | Error | undefined) | undefined;\n\tinput?: Readable;\n\toutput?: Writable;\n\tdebug?: boolean;\n\tsignal?: AbortSignal;\n}\n\nexport default class Prompt {\n\tprotected input: Readable;\n\tprotected output: Writable;\n\tprivate _abortSignal?: AbortSignal;\n\n\tprivate rl: ReadLine | undefined;\n\tprivate opts: Omit<PromptOptions<Prompt>, 'render' | 'input' | 'output'>;\n\tprivate _render: (context: Omit<Prompt, 'prompt'>) => string | undefined;\n\tprivate _track = false;\n\tprivate _prevFrame = '';\n\tprivate _subscribers = new Map<string, { cb: (...args: any) => any; once?: boolean }[]>();\n\tprotected _cursor = 0;\n\n\tpublic state: ClackState = 'initial';\n\tpublic error = '';\n\tpublic value: any;\n\n\tconstructor(options: PromptOptions<Prompt>, trackValue = true) {\n\t\tconst { input = stdin, output = stdout, render, signal, ...opts } = options;\n\n\t\tthis.opts = opts;\n\t\tthis.onKeypress = this.onKeypress.bind(this);\n\t\tthis.close = this.close.bind(this);\n\t\tthis.render = this.render.bind(this);\n\t\tthis._render = render.bind(this);\n\t\tthis._track = trackValue;\n\t\tthis._abortSignal = signal;\n\n\t\tthis.input = input;\n\t\tthis.output = output;\n\t}\n\n\t/**\n\t * Unsubscribe all listeners\n\t */\n\tprotected unsubscribe() {\n\t\tthis._subscribers.clear();\n\t}\n\n\t/**\n\t * Set a subscriber with opts\n\t * @param event - The event name\n\t */\n\tprivate setSubscriber<T extends keyof ClackEvents>(\n\t\tevent: T,\n\t\topts: { cb: ClackEvents[T]; once?: boolean }\n\t) {\n\t\tconst params = this._subscribers.get(event) ?? [];\n\t\tparams.push(opts);\n\t\tthis._subscribers.set(event, params);\n\t}\n\n\t/**\n\t * Subscribe to an event\n\t * @param event - The event name\n\t * @param cb - The callback\n\t */\n\tpublic on<T extends keyof ClackEvents>(event: T, cb: ClackEvents[T]) {\n\t\tthis.setSubscriber(event, { cb });\n\t}\n\n\t/**\n\t * Subscribe to an event once\n\t * @param event - The event name\n\t * @param cb - The callback\n\t */\n\tpublic once<T extends keyof ClackEvents>(event: T, cb: ClackEvents[T]) {\n\t\tthis.setSubscriber(event, { cb, once: true });\n\t}\n\n\t/**\n\t * Emit an event with data\n\t * @param event - The event name\n\t * @param data - The data to pass to the callback\n\t */\n\tpublic emit<T extends keyof ClackEvents>(event: T, ...data: Parameters<ClackEvents[T]>) {\n\t\tconst cbs = this._subscribers.get(event) ?? [];\n\t\tconst cleanup: (() => void)[] = [];\n\n\t\tfor (const subscriber of cbs) {\n\t\t\tsubscriber.cb(...data);\n\n\t\t\tif (subscriber.once) {\n\t\t\t\tcleanup.push(() => cbs.splice(cbs.indexOf(subscriber), 1));\n\t\t\t}\n\t\t}\n\n\t\tfor (const cb of cleanup) {\n\t\t\tcb();\n\t\t}\n\t}\n\n\tpublic prompt() {\n\t\treturn new Promise<string | symbol>((resolve, reject) => {\n\t\t\tif (this._abortSignal) {\n\t\t\t\tif (this._abortSignal.aborted) {\n\t\t\t\t\tthis.state = 'cancel';\n\n\t\t\t\t\tthis.close();\n\t\t\t\t\treturn resolve(CANCEL_SYMBOL);\n\t\t\t\t}\n\n\t\t\t\tthis._abortSignal.addEventListener(\n\t\t\t\t\t'abort',\n\t\t\t\t\t() => {\n\t\t\t\t\t\tthis.state = 'cancel';\n\t\t\t\t\t\tthis.close();\n\t\t\t\t\t},\n\t\t\t\t\t{ once: true }\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst sink = new Writable();\n\t\t\tsink._write = (chunk, encoding, done) => {\n\t\t\t\tif (this._track) {\n\t\t\t\t\tthis.value = this.rl?.line.replace(/\\t/g, '');\n\t\t\t\t\tthis._cursor = this.rl?.cursor ?? 0;\n\t\t\t\t\tthis.emit('value', this.value);\n\t\t\t\t}\n\t\t\t\tdone();\n\t\t\t};\n\t\t\tthis.input.pipe(sink);\n\n\t\t\tthis.rl = readline.createInterface({\n\t\t\t\tinput: this.input,\n\t\t\t\toutput: sink,\n\t\t\t\ttabSize: 2,\n\t\t\t\tprompt: '',\n\t\t\t\tescapeCodeTimeout: 50,\n\t\t\t\tterminal: true,\n\t\t\t});\n\t\t\treadline.emitKeypressEvents(this.input, this.rl);\n\t\t\tthis.rl.prompt();\n\t\t\tif (this.opts.initialValue !== undefined && this._track) {\n\t\t\t\tthis.rl.write(this.opts.initialValue);\n\t\t\t}\n\n\t\t\tthis.input.on('keypress', this.onKeypress);\n\t\t\tsetRawMode(this.input, true);\n\t\t\tthis.output.on('resize', this.render);\n\n\t\t\tthis.render();\n\n\t\t\tthis.once('submit', () => {\n\t\t\t\tthis.output.write(cursor.show);\n\t\t\t\tthis.output.off('resize', this.render);\n\t\t\t\tsetRawMode(this.input, false);\n\t\t\t\tresolve(this.value);\n\t\t\t});\n\t\t\tthis.once('cancel', () => {\n\t\t\t\tthis.output.write(cursor.show);\n\t\t\t\tthis.output.off('resize', this.render);\n\t\t\t\tsetRawMode(this.input, false);\n\t\t\t\tresolve(CANCEL_SYMBOL);\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate onKeypress(char: string, key?: Key) {\n\t\tif (this.state === 'error') {\n\t\t\tthis.state = 'active';\n\t\t}\n\t\tif (key?.name) {\n\t\t\tif (!this._track && settings.aliases.has(key.name)) {\n\t\t\t\tthis.emit('cursor', settings.aliases.get(key.name));\n\t\t\t}\n\t\t\tif (settings.actions.has(key.name as Action)) {\n\t\t\t\tthis.emit('cursor', key.name as Action);\n\t\t\t}\n\t\t}\n\t\tif (char && (char.toLowerCase() === 'y' || char.toLowerCase() === 'n')) {\n\t\t\tthis.emit('confirm', char.toLowerCase() === 'y');\n\t\t}\n\t\tif (char === '\\t' && this.opts.placeholder) {\n\t\t\tif (!this.value) {\n\t\t\t\tthis.rl?.write(this.opts.placeholder);\n\t\t\t\tthis.emit('value', this.opts.placeholder);\n\t\t\t}\n\t\t}\n\t\tif (char) {\n\t\t\tthis.emit('key', char.toLowerCase());\n\t\t}\n\n\t\tif (key?.name === 'return') {\n\t\t\tif (this.opts.validate) {\n\t\t\t\tconst problem = this.opts.validate(this.value);\n\t\t\t\tif (problem) {\n\t\t\t\t\tthis.error = problem instanceof Error ? problem.message : problem;\n\t\t\t\t\tthis.state = 'error';\n\t\t\t\t\tthis.rl?.write(this.value);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.state !== 'error') {\n\t\t\t\tthis.state = 'submit';\n\t\t\t}\n\t\t}\n\n\t\tif (isActionKey([char, key?.name, key?.sequence], 'cancel')) {\n\t\t\tthis.state = 'cancel';\n\t\t}\n\t\tif (this.state === 'submit' || this.state === 'cancel') {\n\t\t\tthis.emit('finalize');\n\t\t}\n\t\tthis.render();\n\t\tif (this.state === 'submit' || this.state === 'cancel') {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tprotected close() {\n\t\tthis.input.unpipe();\n\t\tthis.input.removeListener('keypress', this.onKeypress);\n\t\tthis.output.write('\\n');\n\t\tsetRawMode(this.input, false);\n\t\tthis.rl?.close();\n\t\tthis.rl = undefined;\n\t\tthis.emit(`${this.state}`, this.value);\n\t\tthis.unsubscribe();\n\t}\n\n\tprivate restoreCursor() {\n\t\tconst lines =\n\t\t\twrap(this._prevFrame, process.stdout.columns, { hard: true }).split('\\n').length - 1;\n\t\tthis.output.write(cursor.move(-999, lines * -1));\n\t}\n\n\tprivate render() {\n\t\tconst frame = wrap(this._render(this) ?? '', process.stdout.columns, { hard: true });\n\t\tif (frame === this._prevFrame) return;\n\n\t\tif (this.state === 'initial') {\n\t\t\tthis.output.write(cursor.hide);\n\t\t} else {\n\t\t\tconst diff = diffLines(this._prevFrame, frame);\n\t\t\tthis.restoreCursor();\n\t\t\t// If a single line has changed, only update that line\n\t\t\tif (diff && diff?.length === 1) {\n\t\t\t\tconst diffLine = diff[0];\n\t\t\t\tthis.output.write(cursor.move(0, diffLine));\n\t\t\t\tthis.output.write(erase.lines(1));\n\t\t\t\tconst lines = frame.split('\\n');\n\t\t\t\tthis.output.write(lines[diffLine]);\n\t\t\t\tthis._prevFrame = frame;\n\t\t\t\tthis.output.write(cursor.move(0, lines.length - diffLine - 1));\n\t\t\t\treturn;\n\t\t\t\t// If many lines have changed, rerender everything past the first line\n\t\t\t}\n\t\t\tif (diff && diff?.length > 1) {\n\t\t\t\tconst diffLine = diff[0];\n\t\t\t\tthis.output.write(cursor.move(0, diffLine));\n\t\t\t\tthis.output.write(erase.down());\n\t\t\t\tconst lines = frame.split('\\n');\n\t\t\t\tconst newLines = lines.slice(diffLine);\n\t\t\t\tthis.output.write(newLines.join('\\n'));\n\t\t\t\tthis._prevFrame = frame;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.output.write(erase.down());\n\t\t}\n\n\t\tthis.output.write(frame);\n\t\tif (this.state === 'initial') {\n\t\t\tthis.state = 'active';\n\t\t}\n\t\tthis._prevFrame = frame;\n\t}\n}\n","import { cursor } from 'sisteransi';\nimport Prompt, { type PromptOptions } from './prompt';\n\ninterface ConfirmOptions extends PromptOptions<ConfirmPrompt> {\n\tactive: string;\n\tinactive: string;\n\tinitialValue?: boolean;\n}\nexport default class ConfirmPrompt extends Prompt {\n\tget cursor() {\n\t\treturn this.value ? 0 : 1;\n\t}\n\n\tprivate get _value() {\n\t\treturn this.cursor === 0;\n\t}\n\n\tconstructor(opts: ConfirmOptions) {\n\t\tsuper(opts, false);\n\t\tthis.value = !!opts.initialValue;\n\n\t\tthis.on('value', () => {\n\t\t\tthis.value = this._value;\n\t\t});\n\n\t\tthis.on('confirm', (confirm) => {\n\t\t\tthis.output.write(cursor.move(0, -1));\n\t\t\tthis.value = confirm;\n\t\t\tthis.state = 'submit';\n\t\t\tthis.close();\n\t\t});\n\n\t\tthis.on('cursor', () => {\n\t\t\tthis.value = !this.value;\n\t\t});\n\t}\n}\n","import Prompt, { type PromptOptions } from './prompt';\n\ninterface GroupMultiSelectOptions<T extends { value: any }>\n\textends PromptOptions<GroupMultiSelectPrompt<T>> {\n\toptions: Record<string, T[]>;\n\tinitialValues?: T['value'][];\n\trequired?: boolean;\n\tcursorAt?: T['value'];\n\tselectableGroups?: boolean;\n}\nexport default class GroupMultiSelectPrompt<T extends { value: any }> extends Prompt {\n\toptions: (T & { group: string | boolean })[];\n\tcursor = 0;\n\t#selectableGroups: boolean;\n\n\tgetGroupItems(group: string): T[] {\n\t\treturn this.options.filter((o) => o.group === group);\n\t}\n\n\tisGroupSelected(group: string) {\n\t\tconst items = this.getGroupItems(group);\n\t\treturn items.every((i) => this.value.includes(i.value));\n\t}\n\n\tprivate toggleValue() {\n\t\tconst item = this.options[this.cursor];\n\t\tif (item.group === true) {\n\t\t\tconst group = item.value;\n\t\t\tconst groupedItems = this.getGroupItems(group);\n\t\t\tif (this.isGroupSelected(group)) {\n\t\t\t\tthis.value = this.value.filter(\n\t\t\t\t\t(v: string) => groupedItems.findIndex((i) => i.value === v) === -1\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tthis.value = [...this.value, ...groupedItems.map((i) => i.value)];\n\t\t\t}\n\t\t\tthis.value = Array.from(new Set(this.value));\n\t\t} else {\n\t\t\tconst selected = this.value.includes(item.value);\n\t\t\tthis.value = selected\n\t\t\t\t? this.value.filter((v: T['value']) => v !== item.value)\n\t\t\t\t: [...this.value, item.value];\n\t\t}\n\t}\n\n\tconstructor(opts: GroupMultiSelectOptions<T>) {\n\t\tsuper(opts, false);\n\t\tconst { options } = opts;\n\t\tthis.#selectableGroups = opts.selectableGroups !== false;\n\t\tthis.options = Object.entries(options).flatMap(([key, option]) => [\n\t\t\t{ value: key, group: true, label: key },\n\t\t\t...option.map((opt) => ({ ...opt, group: key })),\n\t\t]) as any;\n\t\tthis.value = [...(opts.initialValues ?? [])];\n\t\tthis.cursor = Math.max(\n\t\t\tthis.options.findIndex(({ value }) => value === opts.cursorAt),\n\t\t\tthis.#selectableGroups ? 0 : 1\n\t\t);\n\n\t\tthis.on('cursor', (key) => {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'left':\n\t\t\t\tcase 'up': {\n\t\t\t\t\tthis.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n\t\t\t\t\tconst currentIsGroup = this.options[this.cursor]?.group === true;\n\t\t\t\t\tif (!this.#selectableGroups && currentIsGroup) {\n\t\t\t\t\t\tthis.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'down':\n\t\t\t\tcase 'right': {\n\t\t\t\t\tthis.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n\t\t\t\t\tconst currentIsGroup = this.options[this.cursor]?.group === true;\n\t\t\t\t\tif (!this.#selectableGroups && currentIsGroup) {\n\t\t\t\t\t\tthis.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'space':\n\t\t\t\t\tthis.toggleValue();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t}\n}\n","import Prompt, { type PromptOptions } from './prompt';\n\ninterface MultiSelectOptions<T extends { value: any }> extends PromptOptions<MultiSelectPrompt<T>> {\n\toptions: T[];\n\tinitialValues?: T['value'][];\n\trequired?: boolean;\n\tcursorAt?: T['value'];\n}\nexport default class MultiSelectPrompt<T extends { value: any }> extends Prompt {\n\toptions: T[];\n\tcursor = 0;\n\n\tprivate get _value() {\n\t\treturn this.options[this.cursor].value;\n\t}\n\n\tprivate toggleAll() {\n\t\tconst allSelected = this.value.length === this.options.length;\n\t\tthis.value = allSelected ? [] : this.options.map((v) => v.value);\n\t}\n\n\tprivate toggleValue() {\n\t\tconst selected = this.value.includes(this._value);\n\t\tthis.value = selected\n\t\t\t? this.value.filter((value: T['value']) => value !== this._value)\n\t\t\t: [...this.value, this._value];\n\t}\n\n\tconstructor(opts: MultiSelectOptions<T>) {\n\t\tsuper(opts, false);\n\n\t\tthis.options = opts.options;\n\t\tthis.value = [...(opts.initialValues ?? [])];\n\t\tthis.cursor = Math.max(\n\t\t\tthis.options.findIndex(({ value }) => value === opts.cursorAt),\n\t\t\t0\n\t\t);\n\t\tthis.on('key', (char) => {\n\t\t\tif (char === 'a') {\n\t\t\t\tthis.toggleAll();\n\t\t\t}\n\t\t});\n\n\t\tthis.on('cursor', (key) => {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'left':\n\t\t\t\tcase 'up':\n\t\t\t\t\tthis.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'down':\n\t\t\t\tcase 'right':\n\t\t\t\t\tthis.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'space':\n\t\t\t\t\tthis.toggleValue();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t}\n}\n","import color from 'picocolors';\nimport Prompt, { type PromptOptions } from './prompt';\n\ninterface PasswordOptions extends PromptOptions<PasswordPrompt> {\n\tmask?: string;\n}\nexport default class PasswordPrompt extends Prompt {\n\tvalueWithCursor = '';\n\tprivate _mask = '•';\n\tget cursor() {\n\t\treturn this._cursor;\n\t}\n\tget masked() {\n\t\treturn this.value.replaceAll(/./g, this._mask);\n\t}\n\tconstructor({ mask, ...opts }: PasswordOptions) {\n\t\tsuper(opts);\n\t\tthis._mask = mask ?? '•';\n\n\t\tthis.on('finalize', () => {\n\t\t\tthis.valueWithCursor = this.masked;\n\t\t});\n\t\tthis.on('value', () => {\n\t\t\tif (this.cursor >= this.value.length) {\n\t\t\t\tthis.valueWithCursor = `${this.masked}${color.inverse(color.hidden('_'))}`;\n\t\t\t} else {\n\t\t\t\tconst s1 = this.masked.slice(0, this.cursor);\n\t\t\t\tconst s2 = this.masked.slice(this.cursor);\n\t\t\t\tthis.valueWithCursor = `${s1}${color.inverse(s2[0])}${s2.slice(1)}`;\n\t\t\t}\n\t\t});\n\t}\n}\n","import Prompt, { type PromptOptions } from './prompt';\n\ninterface SelectOptions<T extends { value: any }> extends PromptOptions<SelectPrompt<T>> {\n\toptions: T[];\n\tinitialValue?: T['value'];\n}\nexport default class SelectPrompt<T extends { value: any }> extends Prompt {\n\toptions: T[];\n\tcursor = 0;\n\n\tprivate get _value() {\n\t\treturn this.options[this.cursor];\n\t}\n\n\tprivate changeValue() {\n\t\tthis.value = this._value.value;\n\t}\n\n\tconstructor(opts: SelectOptions<T>) {\n\t\tsuper(opts, false);\n\n\t\tthis.options = opts.options;\n\t\tthis.cursor = this.options.findIndex(({ value }) => value === opts.initialValue);\n\t\tif (this.cursor === -1) this.cursor = 0;\n\t\tthis.changeValue();\n\n\t\tthis.on('cursor', (key) => {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'left':\n\t\t\t\tcase 'up':\n\t\t\t\t\tthis.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'down':\n\t\t\t\tcase 'right':\n\t\t\t\t\tthis.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis.changeValue();\n\t\t});\n\t}\n}\n","import Prompt, { type PromptOptions } from './prompt';\n\ninterface SelectKeyOptions<T extends { value: any }> extends PromptOptions<SelectKeyPrompt<T>> {\n\toptions: T[];\n}\nexport default class SelectKeyPrompt<T extends { value: any }> extends Prompt {\n\toptions: T[];\n\tcursor = 0;\n\n\tconstructor(opts: SelectKeyOptions<T>) {\n\t\tsuper(opts, false);\n\n\t\tthis.options = opts.options;\n\t\tconst keys = this.options.map(({ value: [initial] }) => initial?.toLowerCase());\n\t\tthis.cursor = Math.max(keys.indexOf(opts.initialValue), 0);\n\n\t\tthis.on('key', (key) => {\n\t\t\tif (!keys.includes(key)) return;\n\t\t\tconst value = this.options.find(({ value: [initial] }) => initial?.toLowerCase() === key);\n\t\t\tif (value) {\n\t\t\t\tthis.value = value.value;\n\t\t\t\tthis.state = 'submit';\n\t\t\t\tthis.emit('submit');\n\t\t\t}\n\t\t});\n\t}\n}\n","import color from 'picocolors';\nimport Prompt, { type PromptOptions } from './prompt';\n\nexport interface TextOptions extends PromptOptions<TextPrompt> {\n\tplaceholder?: string;\n\tdefaultValue?: string;\n}\n\nexport default class TextPrompt extends Prompt {\n\tget valueWithCursor() {\n\t\tif (this.state === 'submit') {\n\t\t\treturn this.value;\n\t\t}\n\t\tif (this.cursor >= this.value.length) {\n\t\t\treturn `${this.value}█`;\n\t\t}\n\t\tconst s1 = this.value.slice(0, this.cursor);\n\t\tconst [s2, ...s3] = this.value.slice(this.cursor);\n\t\treturn `${s1}${color.inverse(s2)}${s3.join('')}`;\n\t}\n\tget cursor() {\n\t\treturn this._cursor;\n\t}\n\tconstructor(opts: TextOptions) {\n\t\tsuper(opts);\n\n\t\tthis.on('finalize', () => {\n\t\t\tif (!this.value) {\n\t\t\t\tthis.value = opts.defaultValue;\n\t\t\t}\n\t\t});\n\t}\n}\n","import process from 'node:process';\n\nexport default function isUnicodeSupported() {\n\tif (process.platform !== 'win32') {\n\t\treturn process.env.TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(process.env.CI)\n\t\t|| Boolean(process.env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(process.env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| process.env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| process.env.TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| process.env.TERM_PROGRAM === 'vscode'\n\t\t|| process.env.TERM === 'xterm-256color'\n\t\t|| process.env.TERM === 'alacritty'\n\t\t|| process.env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n","import { stripVTControlCharacters as strip } from 'node:util';\nimport {\n\tConfirmPrompt,\n\tGroupMultiSelectPrompt,\n\tMultiSelectPrompt,\n\tPasswordPrompt,\n\tSelectKeyPrompt,\n\tSelectPrompt,\n\ttype State,\n\tTextPrompt,\n\tblock,\n\tisCancel,\n} from '@clack/core';\nimport isUnicodeSupported from 'is-unicode-supported';\nimport color from 'picocolors';\nimport { cursor, erase } from 'sisteransi';\n\nexport { isCancel } from '@clack/core';\nexport { updateSettings, type ClackSettings } from '@clack/core';\n\nconst unicode = isUnicodeSupported();\nconst s = (c: string, fallback: string) => (unicode ? c : fallback);\nconst S_STEP_ACTIVE = s('◆', '*');\nconst S_STEP_CANCEL = s('■', 'x');\nconst S_STEP_ERROR = s('▲', 'x');\nconst S_STEP_SUBMIT = s('◇', 'o');\n\nconst S_BAR_START = s('┌', 'T');\nconst S_BAR = s('│', '|');\nconst S_BAR_END = s('└', '—');\n\nconst S_RADIO_ACTIVE = s('●', '>');\nconst S_RADIO_INACTIVE = s('○', ' ');\nconst S_CHECKBOX_ACTIVE = s('◻', '[•]');\nconst S_CHECKBOX_SELECTED = s('◼', '[+]');\nconst S_CHECKBOX_INACTIVE = s('◻', '[ ]');\nconst S_PASSWORD_MASK = s('▪', '•');\n\nconst S_BAR_H = s('─', '-');\nconst S_CORNER_TOP_RIGHT = s('╮', '+');\nconst S_CONNECT_LEFT = s('├', '+');\nconst S_CORNER_BOTTOM_RIGHT = s('╯', '+');\n\nconst S_INFO = s('●', '•');\nconst S_SUCCESS = s('◆', '*');\nconst S_WARN = s('▲', '!');\nconst S_ERROR = s('■', 'x');\n\nconst symbol = (state: State) => {\n\tswitch (state) {\n\t\tcase 'initial':\n\t\tcase 'active':\n\t\t\treturn color.cyan(S_STEP_ACTIVE);\n\t\tcase 'cancel':\n\t\t\treturn color.red(S_STEP_CANCEL);\n\t\tcase 'error':\n\t\t\treturn color.yellow(S_STEP_ERROR);\n\t\tcase 'submit':\n\t\t\treturn color.green(S_STEP_SUBMIT);\n\t}\n};\n\ninterface LimitOptionsParams<TOption> {\n\toptions: TOption[];\n\tmaxItems: number | undefined;\n\tcursor: number;\n\tstyle: (option: TOption, active: boolean) => string;\n}\n\nconst limitOptions = <TOption>(params: LimitOptionsParams<TOption>): string[] => {\n\tconst { cursor, options, style } = params;\n\n\tconst paramMaxItems = params.maxItems ?? Number.POSITIVE_INFINITY;\n\tconst outputMaxItems = Math.max(process.stdout.rows - 4, 0);\n\t// We clamp to minimum 5 because anything less doesn't make sense UX wise\n\tconst maxItems = Math.min(outputMaxItems, Math.max(paramMaxItems, 5));\n\tlet slidingWindowLocation = 0;\n\n\tif (cursor >= slidingWindowLocation + maxItems - 3) {\n\t\tslidingWindowLocation = Math.max(Math.min(cursor - maxItems + 3, options.length - maxItems), 0);\n\t} else if (cursor < slidingWindowLocation + 2) {\n\t\tslidingWindowLocation = Math.max(cursor - 2, 0);\n\t}\n\n\tconst shouldRenderTopEllipsis = maxItems < options.length && slidingWindowLocation > 0;\n\tconst shouldRenderBottomEllipsis =\n\t\tmaxItems < options.length && slidingWindowLocation + maxItems < options.length;\n\n\treturn options\n\t\t.slice(slidingWindowLocation, slidingWindowLocation + maxItems)\n\t\t.map((option, i, arr) => {\n\t\t\tconst isTopLimit = i === 0 && shouldRenderTopEllipsis;\n\t\t\tconst isBottomLimit = i === arr.length - 1 && shouldRenderBottomEllipsis;\n\t\t\treturn isTopLimit || isBottomLimit\n\t\t\t\t? color.dim('...')\n\t\t\t\t: style(option, i + slidingWindowLocation === cursor);\n\t\t});\n};\n\nexport interface TextOptions {\n\tmessage: string;\n\tplaceholder?: string;\n\tdefaultValue?: string;\n\tinitialValue?: string;\n\tvalidate?: (value: string) => string | Error | undefined;\n}\nexport const text = (opts: TextOptions) => {\n\treturn new TextPrompt({\n\t\tvalidate: opts.validate,\n\t\tplaceholder: opts.placeholder,\n\t\tdefaultValue: opts.defaultValue,\n\t\tinitialValue: opts.initialValue,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst placeholder = opts.placeholder\n\t\t\t\t? color.inverse(opts.placeholder[0]) + color.dim(opts.placeholder.slice(1))\n\t\t\t\t: color.inverse(color.hidden('_'));\n\t\t\tconst value = !this.value ? placeholder : this.valueWithCursor;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error':\n\t\t\t\t\treturn `${title.trim()}\\n${color.yellow(S_BAR)} ${value}\\n${color.yellow(\n\t\t\t\t\t\tS_BAR_END\n\t\t\t\t\t)} ${color.yellow(this.error)}\\n`;\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.dim(this.value || opts.placeholder)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.strikethrough(\n\t\t\t\t\t\tcolor.dim(this.value ?? '')\n\t\t\t\t\t)}${this.value?.trim() ? `\\n${color.gray(S_BAR)}` : ''}`;\n\t\t\t\tdefault:\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${value}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<string | symbol>;\n};\n\nexport interface PasswordOptions {\n\tmessage: string;\n\tmask?: string;\n\tvalidate?: (value: string) => string | Error | undefined;\n}\nexport const password = (opts: PasswordOptions) => {\n\treturn new PasswordPrompt({\n\t\tvalidate: opts.validate,\n\t\tmask: opts.mask ?? S_PASSWORD_MASK,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst value = this.valueWithCursor;\n\t\t\tconst masked = this.masked;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error':\n\t\t\t\t\treturn `${title.trim()}\\n${color.yellow(S_BAR)} ${masked}\\n${color.yellow(\n\t\t\t\t\t\tS_BAR_END\n\t\t\t\t\t)} ${color.yellow(this.error)}\\n`;\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.dim(masked)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.strikethrough(color.dim(masked ?? ''))}${\n\t\t\t\t\t\tmasked ? `\\n${color.gray(S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\tdefault:\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${value}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<string | symbol>;\n};\n\nexport interface ConfirmOptions {\n\tmessage: string;\n\tactive?: string;\n\tinactive?: string;\n\tinitialValue?: boolean;\n}\nexport const confirm = (opts: ConfirmOptions) => {\n\tconst active = opts.active ?? 'Yes';\n\tconst inactive = opts.inactive ?? 'No';\n\treturn new ConfirmPrompt({\n\t\tactive,\n\t\tinactive,\n\t\tinitialValue: opts.initialValue ?? true,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst value = this.value ? active : inactive;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.dim(value)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.strikethrough(\n\t\t\t\t\t\tcolor.dim(value)\n\t\t\t\t\t)}\\n${color.gray(S_BAR)}`;\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${\n\t\t\t\t\t\tthis.value\n\t\t\t\t\t\t\t? `${color.green(S_RADIO_ACTIVE)} ${active}`\n\t\t\t\t\t\t\t: `${color.dim(S_RADIO_INACTIVE)} ${color.dim(active)}`\n\t\t\t\t\t} ${color.dim('/')} ${\n\t\t\t\t\t\t!this.value\n\t\t\t\t\t\t\t? `${color.green(S_RADIO_ACTIVE)} ${inactive}`\n\t\t\t\t\t\t\t: `${color.dim(S_RADIO_INACTIVE)} ${color.dim(inactive)}`\n\t\t\t\t\t}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<boolean | symbol>;\n};\n\ntype Primitive = Readonly<string | boolean | number>;\n\nexport type Option<Value> = Value extends Primitive\n\t? {\n\t\t\t/**\n\t\t\t * Internal data for this option.\n\t\t\t */\n\t\t\tvalue: Value;\n\t\t\t/**\n\t\t\t * The optional, user-facing text for this option.\n\t\t\t *\n\t\t\t * By default, the `value` is converted to a string.\n\t\t\t */\n\t\t\tlabel?: string;\n\t\t\t/**\n\t\t\t * An optional hint to display to the user when\n\t\t\t * this option might be selected.\n\t\t\t *\n\t\t\t * By default, no `hint` is displayed.\n\t\t\t */\n\t\t\thint?: string;\n\t\t}\n\t: {\n\t\t\t/**\n\t\t\t * Internal data for this option.\n\t\t\t */\n\t\t\tvalue: Value;\n\t\t\t/**\n\t\t\t * Required. The user-facing text for this option.\n\t\t\t */\n\t\t\tlabel: string;\n\t\t\t/**\n\t\t\t * An optional hint to display to the user when\n\t\t\t * this option might be selected.\n\t\t\t *\n\t\t\t * By default, no `hint` is displayed.\n\t\t\t */\n\t\t\thint?: string;\n\t\t};\n\nexport interface SelectOptions<Value> {\n\tmessage: string;\n\toptions: Option<Value>[];\n\tinitialValue?: Value;\n\tmaxItems?: number;\n}\n\nexport const select = <Value>(opts: SelectOptions<Value>) => {\n\tconst opt = (option: Option<Value>, state: 'inactive' | 'active' | 'selected' | 'cancelled') => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tswitch (state) {\n\t\t\tcase 'selected':\n\t\t\t\treturn `${color.dim(label)}`;\n\t\t\tcase 'active':\n\t\t\t\treturn `${color.green(S_RADIO_ACTIVE)} ${label} ${\n\t\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t\t}`;\n\t\t\tcase 'cancelled':\n\t\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t\tdefault:\n\t\t\t\treturn `${color.dim(S_RADIO_INACTIVE)} ${color.dim(label)}`;\n\t\t}\n\t};\n\n\treturn new SelectPrompt({\n\t\toptions: opts.options,\n\t\tinitialValue: opts.initialValue,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(this.options[this.cursor], 'selected')}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(\n\t\t\t\t\t\tthis.options[this.cursor],\n\t\t\t\t\t\t'cancelled'\n\t\t\t\t\t)}\\n${color.gray(S_BAR)}`;\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${limitOptions({\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tstyle: (item, active) => opt(item, active ? 'active' : 'inactive'),\n\t\t\t\t\t}).join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value | symbol>;\n};\n\nexport const selectKey = <Value extends string>(opts: SelectOptions<Value>) => {\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate: 'inactive' | 'active' | 'selected' | 'cancelled' = 'inactive'\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tif (state === 'selected') {\n\t\t\treturn `${color.dim(label)}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t}\n\t\tif (state === 'active') {\n\t\t\treturn `${color.bgCyan(color.gray(` ${option.value} `))} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\treturn `${color.gray(color.bgWhite(color.inverse(` ${option.value} `)))} ${label} ${\n\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t}`;\n\t};\n\n\treturn new SelectKeyPrompt({\n\t\toptions: opts.options,\n\t\tinitialValue: opts.initialValue,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(\n\t\t\t\t\t\tthis.options.find((opt) => opt.value === this.value) ?? opts.options[0],\n\t\t\t\t\t\t'selected'\n\t\t\t\t\t)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(this.options[0], 'cancelled')}\\n${color.gray(\n\t\t\t\t\t\tS_BAR\n\t\t\t\t\t)}`;\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${this.options\n\t\t\t\t\t\t.map((option, i) => opt(option, i === this.cursor ? 'active' : 'inactive'))\n\t\t\t\t\t\t.join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value | symbol>;\n};\n\nexport interface MultiSelectOptions<Value> {\n\tmessage: string;\n\toptions: Option<Value>[];\n\tinitialValues?: Value[];\n\tmaxItems?: number;\n\trequired?: boolean;\n\tcursorAt?: Value;\n}\nexport const multiselect = <Value>(opts: MultiSelectOptions<Value>) => {\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate: 'inactive' | 'active' | 'selected' | 'active-selected' | 'submitted' | 'cancelled'\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tif (state === 'active') {\n\t\t\treturn `${color.cyan(S_CHECKBOX_ACTIVE)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'selected') {\n\t\t\treturn `${color.green(S_CHECKBOX_SELECTED)} ${color.dim(label)} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t}\n\t\tif (state === 'active-selected') {\n\t\t\treturn `${color.green(S_CHECKBOX_SELECTED)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'submitted') {\n\t\t\treturn `${color.dim(label)}`;\n\t\t}\n\t\treturn `${color.dim(S_CHECKBOX_INACTIVE)} ${color.dim(label)}`;\n\t};\n\n\treturn new MultiSelectPrompt({\n\t\toptions: opts.options,\n\t\tinitialValues: opts.initialValues,\n\t\trequired: opts.required ?? true,\n\t\tcursorAt: opts.cursorAt,\n\t\tvalidate(selected: Value[]) {\n\t\t\tif (this.required && selected.length === 0)\n\t\t\t\treturn `Please select at least one option.\\n${color.reset(\n\t\t\t\t\tcolor.dim(\n\t\t\t\t\t\t`Press ${color.gray(color.bgWhite(color.inverse(' space ')))} to select, ${color.gray(\n\t\t\t\t\t\t\tcolor.bgWhite(color.inverse(' enter '))\n\t\t\t\t\t\t)} to submit`\n\t\t\t\t\t)\n\t\t\t\t)}`;\n\t\t},\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tconst styleOption = (option: Option<Value>, active: boolean) => {\n\t\t\t\tconst selected = this.value.includes(option.value);\n\t\t\t\tif (active && selected) {\n\t\t\t\t\treturn opt(option, 'active-selected');\n\t\t\t\t}\n\t\t\t\tif (selected) {\n\t\t\t\t\treturn opt(option, 'selected');\n\t\t\t\t}\n\t\t\t\treturn opt(option, active ? 'active' : 'inactive');\n\t\t\t};\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${\n\t\t\t\t\t\tthis.options\n\t\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t\t.map((option) => opt(option, 'submitted'))\n\t\t\t\t\t\t\t.join(color.dim(', ')) || color.dim('none')\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst label = this.options\n\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t.map((option) => opt(option, 'cancelled'))\n\t\t\t\t\t\t.join(color.dim(', '));\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${\n\t\t\t\t\t\tlabel.trim() ? `${label}\\n${color.gray(S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst footer = this.error\n\t\t\t\t\t\t.split('\\n')\n\t\t\t\t\t\t.map((ln, i) =>\n\t\t\t\t\t\t\ti === 0 ? `${color.yellow(S_BAR_END)} ${color.yellow(ln)}` : ` ${ln}`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\treturn `${title + color.yellow(S_BAR)} ${limitOptions({\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tstyle: styleOption,\n\t\t\t\t\t}).join(`\\n${color.yellow(S_BAR)} `)}\\n${footer}\\n`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${limitOptions({\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tstyle: styleOption,\n\t\t\t\t\t}).join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value[] | symbol>;\n};\n\nexport interface GroupMultiSelectOptions<Value> {\n\tmessage: string;\n\toptions: Record<string, Option<Value>[]>;\n\tinitialValues?: Value[];\n\trequired?: boolean;\n\tcursorAt?: Value;\n\tselectableGroups?: boolean;\n}\nexport const groupMultiselect = <Value>(opts: GroupMultiSelectOptions<Value>) => {\n\tconst { selectableGroups = true } = opts;\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate:\n\t\t\t| 'inactive'\n\t\t\t| 'active'\n\t\t\t| 'selected'\n\t\t\t| 'active-selected'\n\t\t\t| 'group-active'\n\t\t\t| 'group-active-selected'\n\t\t\t| 'submitted'\n\t\t\t| 'cancelled',\n\t\toptions: Option<Value>[] = []\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tconst isItem = typeof (option as any).group === 'string';\n\t\tconst next = isItem && (options[options.indexOf(option) + 1] ?? { group: true });\n\t\tconst isLast = isItem && (next as any).group === true;\n\t\tconst prefix = isItem ? (selectableGroups ? `${isLast ? S_BAR_END : S_BAR} ` : ' ') : '';\n\n\t\tif (state === 'active') {\n\t\t\treturn `${color.dim(prefix)}${color.cyan(S_CHECKBOX_ACTIVE)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'group-active') {\n\t\t\treturn `${prefix}${color.cyan(S_CHECKBOX_ACTIVE)} ${color.dim(label)}`;\n\t\t}\n\t\tif (state === 'group-active-selected') {\n\t\t\treturn `${prefix}${color.green(S_CHECKBOX_SELECTED)} ${color.dim(label)}`;\n\t\t}\n\t\tif (state === 'selected') {\n\t\t\tconst selectedCheckbox = isItem || selectableGroups ? color.green(S_CHECKBOX_SELECTED) : '';\n\t\t\treturn `${color.dim(prefix)}${selectedCheckbox} ${color.dim(label)} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t}\n\t\tif (state === 'active-selected') {\n\t\t\treturn `${color.dim(prefix)}${color.green(S_CHECKBOX_SELECTED)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'submitted') {\n\t\t\treturn `${color.dim(label)}`;\n\t\t}\n\t\tconst unselectedCheckbox = isItem || selectableGroups ? color.dim(S_CHECKBOX_INACTIVE) : '';\n\t\treturn `${color.dim(prefix)}${unselectedCheckbox} ${color.dim(label)}`;\n\t};\n\n\treturn new GroupMultiSelectPrompt({\n\t\toptions: opts.options,\n\t\tinitialValues: opts.initialValues,\n\t\trequired: opts.required ?? true,\n\t\tcursorAt: opts.cursorAt,\n\t\tselectableGroups,\n\t\tvalidate(selected: Value[]) {\n\t\t\tif (this.required && selected.length === 0)\n\t\t\t\treturn `Please select at least one option.\\n${color.reset(\n\t\t\t\t\tcolor.dim(\n\t\t\t\t\t\t`Press ${color.gray(color.bgWhite(color.inverse(' space ')))} to select, ${color.gray(\n\t\t\t\t\t\t\tcolor.bgWhite(color.inverse(' enter '))\n\t\t\t\t\t\t)} to submit`\n\t\t\t\t\t)\n\t\t\t\t)}`;\n\t\t},\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${this.options\n\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t.map((option) => opt(option, 'submitted'))\n\t\t\t\t\t\t.join(color.dim(', '))}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst label = this.options\n\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t.map((option) => opt(option, 'cancelled'))\n\t\t\t\t\t\t.join(color.dim(', '));\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${\n\t\t\t\t\t\tlabel.trim() ? `${label}\\n${color.gray(S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst footer = this.error\n\t\t\t\t\t\t.split('\\n')\n\t\t\t\t\t\t.map((ln, i) =>\n\t\t\t\t\t\t\ti === 0 ? `${color.yellow(S_BAR_END)} ${color.yellow(ln)}` : ` ${ln}`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\treturn `${title}${color.yellow(S_BAR)} ${this.options\n\t\t\t\t\t\t.map((option, i, options) => {\n\t\t\t\t\t\t\tconst selected =\n\t\t\t\t\t\t\t\tthis.value.includes(option.value) ||\n\t\t\t\t\t\t\t\t(option.group === true && this.isGroupSelected(`${option.value}`));\n\t\t\t\t\t\t\tconst active = i === this.cursor;\n\t\t\t\t\t\t\tconst groupActive =\n\t\t\t\t\t\t\t\t!active &&\n\t\t\t\t\t\t\t\ttypeof option.group === 'string' &&\n\t\t\t\t\t\t\t\tthis.options[this.cursor].value === option.group;\n\t\t\t\t\t\t\tif (groupActive) {\n\t\t\t\t\t\t\t\treturn opt(option, selected ? 'group-active-selected' : 'group-active', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (active && selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'active-selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn opt(option, active ? 'active' : 'inactive', options);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(`\\n${color.yellow(S_BAR)} `)}\\n${footer}\\n`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${this.options\n\t\t\t\t\t\t.map((option, i, options) => {\n\t\t\t\t\t\t\tconst selected =\n\t\t\t\t\t\t\t\tthis.value.includes(option.value) ||\n\t\t\t\t\t\t\t\t(option.group === true && this.isGroupSelected(`${option.value}`));\n\t\t\t\t\t\t\tconst active = i === this.cursor;\n\t\t\t\t\t\t\tconst groupActive =\n\t\t\t\t\t\t\t\t!active &&\n\t\t\t\t\t\t\t\ttypeof option.group === 'string' &&\n\t\t\t\t\t\t\t\tthis.options[this.cursor].value === option.group;\n\t\t\t\t\t\t\tif (groupActive) {\n\t\t\t\t\t\t\t\treturn opt(option, selected ? 'group-active-selected' : 'group-active', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (active && selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'active-selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn opt(option, active ? 'active' : 'inactive', options);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value[] | symbol>;\n};\n\nexport const note = (message = '', title = '') => {\n\tconst lines = `\\n${message}\\n`.split('\\n');\n\tconst titleLen = strip(title).length;\n\tconst len =\n\t\tMath.max(\n\t\t\tlines.reduce((sum, ln) => {\n\t\t\t\tconst line = strip(ln);\n\t\t\t\treturn line.length > sum ? line.length : sum;\n\t\t\t}, 0),\n\t\t\ttitleLen\n\t\t) + 2;\n\tconst msg = lines\n\t\t.map(\n\t\t\t(ln) =>\n\t\t\t\t`${color.gray(S_BAR)} ${color.dim(ln)}${' '.repeat(len - strip(ln).length)}${color.gray(\n\t\t\t\t\tS_BAR\n\t\t\t\t)}`\n\t\t)\n\t\t.join('\\n');\n\tprocess.stdout.write(\n\t\t`${color.gray(S_BAR)}\\n${color.green(S_STEP_SUBMIT)} ${color.reset(title)} ${color.gray(\n\t\t\tS_BAR_H.repeat(Math.max(len - titleLen - 1, 1)) + S_CORNER_TOP_RIGHT\n\t\t)}\\n${msg}\\n${color.gray(S_CONNECT_LEFT + S_BAR_H.repeat(len + 2) + S_CORNER_BOTTOM_RIGHT)}\\n`\n\t);\n};\n\nexport const cancel = (message = '') => {\n\tprocess.stdout.write(`${color.gray(S_BAR_END)} ${color.red(message)}\\n\\n`);\n};\n\nexport const intro = (title = '') => {\n\tprocess.stdout.write(`${color.gray(S_BAR_START)} ${title}\\n`);\n};\n\nexport const outro = (message = '') => {\n\tprocess.stdout.write(`${color.gray(S_BAR)}\\n${color.gray(S_BAR_END)} ${message}\\n\\n`);\n};\n\nexport type LogMessageOptions = {\n\tsymbol?: string;\n};\nexport const log = {\n\tmessage: (message = '', { symbol = color.gray(S_BAR) }: LogMessageOptions = {}) => {\n\t\tconst parts = [`${color.gray(S_BAR)}`];\n\t\tif (message) {\n\t\t\tconst [firstLine, ...lines] = message.split('\\n');\n\t\t\tparts.push(`${symbol} ${firstLine}`, ...lines.map((ln) => `${color.gray(S_BAR)} ${ln}`));\n\t\t}\n\t\tprocess.stdout.write(`${parts.join('\\n')}\\n`);\n\t},\n\tinfo: (message: string) => {\n\t\tlog.message(message, { symbol: color.blue(S_INFO) });\n\t},\n\tsuccess: (message: string) => {\n\t\tlog.message(message, { symbol: color.green(S_SUCCESS) });\n\t},\n\tstep: (message: string) => {\n\t\tlog.message(message, { symbol: color.green(S_STEP_SUBMIT) });\n\t},\n\twarn: (message: string) => {\n\t\tlog.message(message, { symbol: color.yellow(S_WARN) });\n\t},\n\t/** alias for `log.warn()`. */\n\twarning: (message: string) => {\n\t\tlog.warn(message);\n\t},\n\terror: (message: string) => {\n\t\tlog.message(message, { symbol: color.red(S_ERROR) });\n\t},\n};\n\nconst prefix = `${color.gray(S_BAR)} `;\nexport const stream = {\n\tmessage: async (\n\t\titerable: Iterable<string> | AsyncIterable<string>,\n\t\t{ symbol = color.gray(S_BAR) }: LogMessageOptions = {}\n\t) => {\n\t\tprocess.stdout.write(`${color.gray(S_BAR)}\\n${symbol} `);\n\t\tlet lineWidth = 3;\n\t\tfor await (let chunk of iterable) {\n\t\t\tchunk = chunk.replace(/\\n/g, `\\n${prefix}`);\n\t\t\tif (chunk.includes('\\n')) {\n\t\t\t\tlineWidth = 3 + strip(chunk.slice(chunk.lastIndexOf('\\n'))).length;\n\t\t\t}\n\t\t\tconst chunkLen = strip(chunk).length;\n\t\t\tif (lineWidth + chunkLen < process.stdout.columns) {\n\t\t\t\tlineWidth += chunkLen;\n\t\t\t\tprocess.stdout.write(chunk);\n\t\t\t} else {\n\t\t\t\tprocess.stdout.write(`\\n${prefix}${chunk.trimStart()}`);\n\t\t\t\tlineWidth = 3 + strip(chunk.trimStart()).length;\n\t\t\t}\n\t\t}\n\t\tprocess.stdout.write('\\n');\n\t},\n\tinfo: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.blue(S_INFO) });\n\t},\n\tsuccess: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.green(S_SUCCESS) });\n\t},\n\tstep: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.green(S_STEP_SUBMIT) });\n\t},\n\twarn: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.yellow(S_WARN) });\n\t},\n\t/** alias for `log.warn()`. */\n\twarning: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.warn(iterable);\n\t},\n\terror: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.red(S_ERROR) });\n\t},\n};\n\nexport interface SpinnerOptions {\n\tindicator?: 'dots' | 'timer';\n}\n\nexport const spinner = ({ indicator = 'dots' }: SpinnerOptions = {}) => {\n\tconst frames = unicode ? ['◒', '◐', '◓', '◑'] : ['•', 'o', 'O', '0'];\n\tconst delay = unicode ? 80 : 120;\n\tconst isCI = process.env.CI === 'true';\n\n\tlet unblock: () => void;\n\tlet loop: NodeJS.Timeout;\n\tlet isSpinnerActive = false;\n\tlet _message = '';\n\tlet _prevMessage: string | undefined = undefined;\n\tlet _origin: number = performance.now();\n\n\tconst handleExit = (code: number) => {\n\t\tconst msg = code > 1 ? 'Something went wrong' : 'Canceled';\n\t\tif (isSpinnerActive) stop(msg, code);\n\t};\n\n\tconst errorEventHandler = () => handleExit(2);\n\tconst signalEventHandler = () => handleExit(1);\n\n\tconst registerHooks = () => {\n\t\t// Reference: https://nodejs.org/api/process.html#event-uncaughtexception\n\t\tprocess.on('uncaughtExceptionMonitor', errorEventHandler);\n\t\t// Reference: https://nodejs.org/api/process.html#event-unhandledrejection\n\t\tprocess.on('unhandledRejection', errorEventHandler);\n\t\t// Reference Signal Events: https://nodejs.org/api/process.html#signal-events\n\t\tprocess.on('SIGINT', signalEventHandler);\n\t\tprocess.on('SIGTERM', signalEventHandler);\n\t\tprocess.on('exit', handleExit);\n\t};\n\n\tconst clearHooks = () => {\n\t\tprocess.removeListener('uncaughtExceptionMonitor', errorEventHandler);\n\t\tprocess.removeListener('unhandledRejection', errorEventHandler);\n\t\tprocess.removeListener('SIGINT', signalEventHandler);\n\t\tprocess.removeListener('SIGTERM', signalEventHandler);\n\t\tprocess.removeListener('exit', handleExit);\n\t};\n\n\tconst clearPrevMessage = () => {\n\t\tif (_prevMessage === undefined) return;\n\t\tif (isCI) process.stdout.write('\\n');\n\t\tconst prevLines = _prevMessage.split('\\n');\n\t\tprocess.stdout.write(cursor.move(-999, prevLines.length - 1));\n\t\tprocess.stdout.write(erase.down(prevLines.length));\n\t};\n\n\tconst parseMessage = (msg: string): string => {\n\t\treturn msg.replace(/\\.+$/, '');\n\t};\n\n\tconst formatTimer = (origin: number): string => {\n\t\tconst duration = (performance.now() - origin) / 1000;\n\t\tconst min = Math.floor(duration / 60);\n\t\tconst secs = Math.floor(duration % 60);\n\t\treturn min > 0 ? `[${min}m ${secs}s]` : `[${secs}s]`;\n\t};\n\n\tconst start = (msg = ''): void => {\n\t\tisSpinnerActive = true;\n\t\tunblock = block();\n\t\t_message = parseMessage(msg);\n\t\t_origin = performance.now();\n\t\tprocess.stdout.write(`${color.gray(S_BAR)}\\n`);\n\t\tlet frameIndex = 0;\n\t\tlet indicatorTimer = 0;\n\t\tregisterHooks();\n\t\tloop = setInterval(() => {\n\t\t\tif (isCI && _message === _prevMessage) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tclearPrevMessage();\n\t\t\t_prevMessage = _message;\n\t\t\tconst frame = color.magenta(frames[frameIndex]);\n\n\t\t\tif (isCI) {\n\t\t\t\tprocess.stdout.write(`${frame} ${_message}...`);\n\t\t\t} else if (indicator === 'timer') {\n\t\t\t\tprocess.stdout.write(`${frame} ${_message} ${formatTimer(_origin)}`);\n\t\t\t} else {\n\t\t\t\tconst loadingDots = '.'.repeat(Math.floor(indicatorTimer)).slice(0, 3);\n\t\t\t\tprocess.stdout.write(`${frame} ${_message}${loadingDots}`);\n\t\t\t}\n\n\t\t\tframeIndex = frameIndex + 1 < frames.length ? frameIndex + 1 : 0;\n\t\t\tindicatorTimer = indicatorTimer < frames.length ? indicatorTimer + 0.125 : 0;\n\t\t}, delay);\n\t};\n\n\tconst stop = (msg = '', code = 0): void => {\n\t\tisSpinnerActive = false;\n\t\tclearInterval(loop);\n\t\tclearPrevMessage();\n\t\tconst step =\n\t\t\tcode === 0\n\t\t\t\t? color.green(S_STEP_SUBMIT)\n\t\t\t\t: code === 1\n\t\t\t\t\t? color.red(S_STEP_CANCEL)\n\t\t\t\t\t: color.red(S_STEP_ERROR);\n\t\t_message = parseMessage(msg ?? _message);\n\t\tif (indicator === 'timer') {\n\t\t\tprocess.stdout.write(`${step} ${_message} ${formatTimer(_origin)}\\n`);\n\t\t} else {\n\t\t\tprocess.stdout.write(`${step} ${_message}\\n`);\n\t\t}\n\t\tclearHooks();\n\t\tunblock();\n\t};\n\n\tconst message = (msg = ''): void => {\n\t\t_message = parseMessage(msg ?? _message);\n\t};\n\n\treturn {\n\t\tstart,\n\t\tstop,\n\t\tmessage,\n\t};\n};\n\nexport type PromptGroupAwaitedReturn<T> = {\n\t[P in keyof T]: Exclude<Awaited<T[P]>, symbol>;\n};\n\nexport interface PromptGroupOptions<T> {\n\t/**\n\t * Control how the group can be canceled\n\t * if one of the prompts is canceled.\n\t */\n\tonCancel?: (opts: { results: Prettify<Partial<PromptGroupAwaitedReturn<T>>> }) => void;\n}\n\ntype Prettify<T> = {\n\t[P in keyof T]: T[P];\n} & {};\n\nexport type PromptGroup<T> = {\n\t[P in keyof T]: (opts: {\n\t\tresults: Prettify<Partial<PromptGroupAwaitedReturn<Omit<T, P>>>>;\n\t}) => undefined | Promise<T[P] | undefined>;\n};\n\n/**\n * Define a group of prompts to be displayed\n * and return a results of objects within the group\n */\nexport const group = async <T>(\n\tprompts: PromptGroup<T>,\n\topts?: PromptGroupOptions<T>\n): Promise<Prettify<PromptGroupAwaitedReturn<T>>> => {\n\tconst results = {} as any;\n\tconst promptNames = Object.keys(prompts);\n\n\tfor (const name of promptNames) {\n\t\tconst prompt = prompts[name as keyof T];\n\t\tconst result = await prompt({ results })?.catch((e) => {\n\t\t\tthrow e;\n\t\t});\n\n\t\t// Pass the results to the onCancel function\n\t\t// so the user can decide what to do with the results\n\t\t// TODO: Switch to callback within core to avoid isCancel Fn\n\t\tif (typeof opts?.onCancel === 'function' && isCancel(result)) {\n\t\t\tresults[name] = 'canceled';\n\t\t\topts.onCancel({ results });\n\t\t\tcontinue;\n\t\t}\n\n\t\tresults[name] = result;\n\t}\n\n\treturn results;\n};\n\nexport type Task = {\n\t/**\n\t * Task title\n\t */\n\ttitle: string;\n\t/**\n\t * Task function\n\t */\n\ttask: (message: (string: string) => void) => string | Promise<string> | void | Promise<void>;\n\n\t/**\n\t * If enabled === false the task will be skipped\n\t */\n\tenabled?: boolean;\n};\n\n/**\n * Define a group of tasks to be executed\n */\nexport const tasks = async (tasks: Task[]) => {\n\tfor (const task of tasks) {\n\t\tif (task.enabled === false) continue;\n\n\t\tconst s = spinner();\n\t\ts.start(task.title);\n\t\tconst result = await task.task(s.message);\n\t\ts.stop(result || task.title);\n\t}\n};\n","import {getCiRunKey}from'@stablyai/ci-run-id';import {intro,spinner,outro}from'@clack/prompts';import {readFileSync}from'fs';import U from'picocolors';import {filterSensitiveValues,scrubString,scrubTrace}from'@stablyai/playwright-trace-scrubber';import F from'ws';import ce,{execSync}from'child_process';import {Buffer as Buffer$1}from'buffer';import V from'path';import st from'process';import {fileURLToPath}from'url';import xi,{constants}from'os';import'timers/promises';import {debuglog}from'util';import Ha,{AbortError}from'p-retry';var $i=Object.create;var Ee=Object.defineProperty;var ji=Object.getOwnPropertyDescriptor;var Fi=Object.getOwnPropertyNames;var Vi=Object.getPrototypeOf,Wi=Object.prototype.hasOwnProperty;var S=(t=>typeof require<\"u\"?require:typeof Proxy<\"u\"?new Proxy(t,{get:(e,r)=>(typeof require<\"u\"?require:e)[r]}):t)(function(t){if(typeof require<\"u\")return require.apply(this,arguments);throw Error('Dynamic require of \"'+t+'\" is not supported')});var h=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var qi=(t,e,r,n)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let i of Fi(e))!Wi.call(t,i)&&i!==r&&Ee(t,i,{get:()=>e[i],enumerable:!(n=ji(e,i))||n.enumerable});return t};var X=(t,e,r)=>(r=t!=null?$i(Vi(t)):{},qi(Ee(r,\"default\",{value:t,enumerable:true}),t));var Ge=h(d=>{Object.defineProperty(d,\"__esModule\",{value:true});d.toBig=d.shrSL=d.shrSH=d.rotrSL=d.rotrSH=d.rotrBL=d.rotrBH=d.rotr32L=d.rotr32H=d.rotlSL=d.rotlSH=d.rotlBL=d.rotlBH=d.add5L=d.add5H=d.add4L=d.add4H=d.add3L=d.add3H=void 0;d.add=xe;d.fromBig=Rt;d.split=ge;var Z=BigInt(2**32-1),yt=BigInt(32);function Rt(t,e=false){return e?{h:Number(t&Z),l:Number(t>>yt&Z)}:{h:Number(t>>yt&Z)|0,l:Number(t&Z)|0}}function ge(t,e=false){let r=t.length,n=new Uint32Array(r),i=new Uint32Array(r);for(let o=0;o<r;o++){let{h:s,l:a}=Rt(t[o],e);[n[o],i[o]]=[s,a];}return [n,i]}var Ie=(t,e)=>BigInt(t>>>0)<<yt|BigInt(e>>>0);d.toBig=Ie;var Se=(t,e,r)=>t>>>r;d.shrSH=Se;var be=(t,e,r)=>t<<32-r|e>>>r;d.shrSL=be;var ye=(t,e,r)=>t>>>r|e<<32-r;d.rotrSH=ye;var Re=(t,e,r)=>t<<32-r|e>>>r;d.rotrSL=Re;var Te=(t,e,r)=>t<<64-r|e>>>r-32;d.rotrBH=Te;var Ce=(t,e,r)=>t>>>r-32|e<<64-r;d.rotrBL=Ce;var Be=(t,e)=>e;d.rotr32H=Be;var Ae=(t,e)=>t;d.rotr32L=Ae;var Ue=(t,e,r)=>t<<r|e>>>32-r;d.rotlSH=Ue;var Pe=(t,e,r)=>e<<r|t>>>32-r;d.rotlSL=Pe;var Le=(t,e,r)=>e<<r-32|t>>>64-r;d.rotlBH=Le;var we=(t,e,r)=>t<<r-32|e>>>64-r;d.rotlBL=we;function xe(t,e,r,n){let i=(e>>>0)+(n>>>0);return {h:t+r+(i/2**32|0)|0,l:i|0}}var Oe=(t,e,r)=>(t>>>0)+(e>>>0)+(r>>>0);d.add3L=Oe;var Ne=(t,e,r,n)=>e+r+n+(t/2**32|0)|0;d.add3H=Ne;var De=(t,e,r,n)=>(t>>>0)+(e>>>0)+(r>>>0)+(n>>>0);d.add4L=De;var Me=(t,e,r,n,i)=>e+r+n+i+(t/2**32|0)|0;d.add4H=Me;var ke=(t,e,r,n,i)=>(t>>>0)+(e>>>0)+(r>>>0)+(n>>>0)+(i>>>0);d.add5L=ke;var He=(t,e,r,n,i,o)=>e+r+n+i+o+(t/2**32|0)|0;d.add5H=He;var Ki={fromBig:Rt,split:ge,toBig:Ie,shrSH:Se,shrSL:be,rotrSH:ye,rotrSL:Re,rotrBH:Te,rotrBL:Ce,rotr32H:Be,rotr32L:Ae,rotlSH:Ue,rotlSL:Pe,rotlBH:Le,rotlBL:we,add:xe,add3L:Oe,add3H:Ne,add4L:De,add4H:Me,add5H:He,add5L:ke};d.default=Ki;});var $e=h(tt=>{Object.defineProperty(tt,\"__esModule\",{value:true});tt.crypto=void 0;var R=S(\"crypto\");tt.crypto=R&&typeof R==\"object\"&&\"webcrypto\"in R?R.webcrypto:R&&typeof R==\"object\"&&\"randomBytes\"in R?R:void 0;});var Ye=h(f=>{Object.defineProperty(f,\"__esModule\",{value:true});f.wrapXOFConstructorWithOpts=f.wrapConstructorWithOpts=f.wrapConstructor=f.Hash=f.nextTick=f.swap32IfBE=f.byteSwapIfBE=f.swap8IfBE=f.isLE=void 0;f.isBytes=Fe;f.anumber=Tt;f.abytes=x;f.ahash=vi;f.aexists=Yi;f.aoutput=zi;f.u8=Ji;f.u32=Qi;f.clean=Xi;f.createView=Zi;f.rotr=to;f.rotl=eo;f.byteSwap=Bt;f.byteSwap32=Ve;f.bytesToHex=no;f.hexToBytes=io;f.asyncLoop=so;f.utf8ToBytes=At;f.bytesToUtf8=ao;f.toBytes=et;f.kdfInputToBytes=co;f.concatBytes=uo;f.checkOpts=lo;f.createHasher=qe;f.createOptHasher=Ke;f.createXOFer=ve;f.randomBytes=fo;var w=$e();function Fe(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name===\"Uint8Array\"}function Tt(t){if(!Number.isSafeInteger(t)||t<0)throw new Error(\"positive integer expected, got \"+t)}function x(t,...e){if(!Fe(t))throw new Error(\"Uint8Array expected\");if(e.length>0&&!e.includes(t.length))throw new Error(\"Uint8Array expected of length \"+e+\", got length=\"+t.length)}function vi(t){if(typeof t!=\"function\"||typeof t.create!=\"function\")throw new Error(\"Hash should be wrapped by utils.createHasher\");Tt(t.outputLen),Tt(t.blockLen);}function Yi(t,e=true){if(t.destroyed)throw new Error(\"Hash instance has been destroyed\");if(e&&t.finished)throw new Error(\"Hash#digest() has already been called\")}function zi(t,e){x(t);let r=e.outputLen;if(t.length<r)throw new Error(\"digestInto() expects output buffer of length at least \"+r)}function Ji(t){return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}function Qi(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function Xi(...t){for(let e=0;e<t.length;e++)t[e].fill(0);}function Zi(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function to(t,e){return t<<32-e|t>>>e}function eo(t,e){return t<<e|t>>>32-e>>>0}f.isLE=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Bt(t){return t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255}f.swap8IfBE=f.isLE?t=>t:t=>Bt(t);f.byteSwapIfBE=f.swap8IfBE;function Ve(t){for(let e=0;e<t.length;e++)t[e]=Bt(t[e]);return t}f.swap32IfBE=f.isLE?t=>t:Ve;var We=typeof Uint8Array.from([]).toHex==\"function\"&&typeof Uint8Array.fromHex==\"function\",ro=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,\"0\"));function no(t){if(x(t),We)return t.toHex();let e=\"\";for(let r=0;r<t.length;r++)e+=ro[t[r]];return e}var y={_0:48,_9:57,A:65,F:70,a:97,f:102};function je(t){if(t>=y._0&&t<=y._9)return t-y._0;if(t>=y.A&&t<=y.F)return t-(y.A-10);if(t>=y.a&&t<=y.f)return t-(y.a-10)}function io(t){if(typeof t!=\"string\")throw new Error(\"hex string expected, got \"+typeof t);if(We)return Uint8Array.fromHex(t);let e=t.length,r=e/2;if(e%2)throw new Error(\"hex string expected, got unpadded hex of length \"+e);let n=new Uint8Array(r);for(let i=0,o=0;i<r;i++,o+=2){let s=je(t.charCodeAt(o)),a=je(t.charCodeAt(o+1));if(s===void 0||a===void 0){let c=t[o]+t[o+1];throw new Error('hex string expected, got non-hex character \"'+c+'\" at index '+o)}n[i]=s*16+a;}return n}var oo=async()=>{};f.nextTick=oo;async function so(t,e,r){let n=Date.now();for(let i=0;i<t;i++){r(i);let o=Date.now()-n;o>=0&&o<e||(await(0, f.nextTick)(),n+=o);}}function At(t){if(typeof t!=\"string\")throw new Error(\"string expected\");return new Uint8Array(new TextEncoder().encode(t))}function ao(t){return new TextDecoder().decode(t)}function et(t){return typeof t==\"string\"&&(t=At(t)),x(t),t}function co(t){return typeof t==\"string\"&&(t=At(t)),x(t),t}function uo(...t){let e=0;for(let n=0;n<t.length;n++){let i=t[n];x(i),e+=i.length;}let r=new Uint8Array(e);for(let n=0,i=0;n<t.length;n++){let o=t[n];r.set(o,i),i+=o.length;}return r}function lo(t,e){if(e!==void 0&&{}.toString.call(e)!==\"[object Object]\")throw new Error(\"options should be object or undefined\");return Object.assign(t,e)}var Ct=class{};f.Hash=Ct;function qe(t){let e=n=>t().update(et(n)).digest(),r=t();return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=()=>t(),e}function Ke(t){let e=(n,i)=>t(i).update(et(n)).digest(),r=t({});return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=n=>t(n),e}function ve(t){let e=(n,i)=>t(i).update(et(n)).digest(),r=t({});return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=n=>t(n),e}f.wrapConstructor=qe;f.wrapConstructorWithOpts=Ke;f.wrapXOFConstructorWithOpts=ve;function fo(t=32){if(w.crypto&&typeof w.crypto.getRandomValues==\"function\")return w.crypto.getRandomValues(new Uint8Array(t));if(w.crypto&&typeof w.crypto.randomBytes==\"function\")return Uint8Array.from(w.crypto.randomBytes(t));throw new Error(\"crypto.getRandomValues must be defined\")}});var nr=h(m=>{Object.defineProperty(m,\"__esModule\",{value:true});m.shake256=m.shake128=m.keccak_512=m.keccak_384=m.keccak_256=m.keccak_224=m.sha3_512=m.sha3_384=m.sha3_256=m.sha3_224=m.Keccak=void 0;m.keccakP=er;var H=Ge(),g=Ye(),po=BigInt(0),k=BigInt(1),mo=BigInt(2),ho=BigInt(7),_o=BigInt(256),Eo=BigInt(113),Qe=[],Xe=[],Ze=[];for(let t=0,e=k,r=1,n=0;t<24;t++){[r,n]=[n,(2*r+3*n)%5],Qe.push(2*(5*n+r)),Xe.push((t+1)*(t+2)/2%64);let i=po;for(let o=0;o<7;o++)e=(e<<k^(e>>ho)*Eo)%_o,e&mo&&(i^=k<<(k<<BigInt(o))-k);Ze.push(i);}var tr=(0, H.split)(Ze,true),go=tr[0],Io=tr[1],ze=(t,e,r)=>r>32?(0, H.rotlBH)(t,e,r):(0, H.rotlSH)(t,e,r),Je=(t,e,r)=>r>32?(0, H.rotlBL)(t,e,r):(0, H.rotlSL)(t,e,r);function er(t,e=24){let r=new Uint32Array(10);for(let n=24-e;n<24;n++){for(let s=0;s<10;s++)r[s]=t[s]^t[s+10]^t[s+20]^t[s+30]^t[s+40];for(let s=0;s<10;s+=2){let a=(s+8)%10,c=(s+2)%10,u=r[c],l=r[c+1],p=ze(u,l,1)^r[a],_=Je(u,l,1)^r[a+1];for(let E=0;E<50;E+=10)t[s+E]^=p,t[s+E+1]^=_;}let i=t[2],o=t[3];for(let s=0;s<24;s++){let a=Xe[s],c=ze(i,o,a),u=Je(i,o,a),l=Qe[s];i=t[l],o=t[l+1],t[l]=c,t[l+1]=u;}for(let s=0;s<50;s+=10){for(let a=0;a<10;a++)r[a]=t[s+a];for(let a=0;a<10;a++)t[s+a]^=~r[(a+2)%10]&r[(a+4)%10];}t[0]^=go[n],t[1]^=Io[n];}(0, g.clean)(r);}var G=class t extends g.Hash{constructor(e,r,n,i=false,o=24){if(super(),this.pos=0,this.posOut=0,this.finished=false,this.destroyed=false,this.enableXOF=false,this.blockLen=e,this.suffix=r,this.outputLen=n,this.enableXOF=i,this.rounds=o,(0, g.anumber)(n),!(0<e&&e<200))throw new Error(\"only keccak-f1600 function is supported\");this.state=new Uint8Array(200),this.state32=(0, g.u32)(this.state);}clone(){return this._cloneInto()}keccak(){(0, g.swap32IfBE)(this.state32),er(this.state32,this.rounds),(0, g.swap32IfBE)(this.state32),this.posOut=0,this.pos=0;}update(e){(0, g.aexists)(this),e=(0, g.toBytes)(e),(0, g.abytes)(e);let{blockLen:r,state:n}=this,i=e.length;for(let o=0;o<i;){let s=Math.min(r-this.pos,i-o);for(let a=0;a<s;a++)n[this.pos++]^=e[o++];this.pos===r&&this.keccak();}return this}finish(){if(this.finished)return;this.finished=true;let{state:e,suffix:r,pos:n,blockLen:i}=this;e[n]^=r,(r&128)!==0&&n===i-1&&this.keccak(),e[i-1]^=128,this.keccak();}writeInto(e){(0, g.aexists)(this,false),(0, g.abytes)(e),this.finish();let r=this.state,{blockLen:n}=this;for(let i=0,o=e.length;i<o;){this.posOut>=n&&this.keccak();let s=Math.min(n-this.posOut,o-i);e.set(r.subarray(this.posOut,this.posOut+s),i),this.posOut+=s,i+=s;}return e}xofInto(e){if(!this.enableXOF)throw new Error(\"XOF is not possible for this instance\");return this.writeInto(e)}xof(e){return (0, g.anumber)(e),this.xofInto(new Uint8Array(e))}digestInto(e){if((0, g.aoutput)(e,this),this.finished)throw new Error(\"digest() was already called\");return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=true,(0, g.clean)(this.state);}_cloneInto(e){let{blockLen:r,suffix:n,outputLen:i,rounds:o,enableXOF:s}=this;return e||(e=new t(r,n,i,s,o)),e.state32.set(this.state32),e.pos=this.pos,e.posOut=this.posOut,e.finished=this.finished,e.rounds=o,e.suffix=n,e.outputLen=i,e.enableXOF=s,e.destroyed=this.destroyed,e}};m.Keccak=G;var T=(t,e,r)=>(0, g.createHasher)(()=>new G(e,t,r));m.sha3_224=T(6,144,224/8);m.sha3_256=T(6,136,256/8);m.sha3_384=T(6,104,384/8);m.sha3_512=T(6,72,512/8);m.keccak_224=T(1,144,224/8);m.keccak_256=T(1,136,256/8);m.keccak_384=T(1,104,384/8);m.keccak_512=T(1,72,512/8);var rr=(t,e,r)=>(0, g.createXOFer)((n={})=>new G(e,t,n.dkLen===void 0?r:n.dkLen,true));m.shake128=rr(31,168,128/8);m.shake256=rr(31,136,256/8);});var fr=h((nc,C)=>{var{sha3_512:So}=nr(),or=24,$=32,Ut=(t=4,e=Math.random)=>{let r=\"\";for(;r.length<t;)r=r+Math.floor(e()*36).toString(36);return r};function sr(t){let e=8n,r=0n;for(let n of t.values()){let i=BigInt(n);r=(r<<e)+i;}return r}var ar=(t=\"\")=>sr(So(t)).toString(36).slice(1),ir=Array.from({length:26},(t,e)=>String.fromCharCode(e+97)),bo=t=>ir[Math.floor(t()*ir.length)],cr=({globalObj:t=typeof global<\"u\"?global:typeof window<\"u\"?window:{},random:e=Math.random}={})=>{let r=Object.keys(t).toString(),n=r.length?r+Ut($,e):Ut($,e);return ar(n).substring(0,$)},ur=t=>()=>t++,yo=476782367,lr=({random:t=Math.random,counter:e=ur(Math.floor(t()*yo)),length:r=or,fingerprint:n=cr({random:t})}={})=>function(){let o=bo(t),s=Date.now().toString(36),a=e().toString(36),c=Ut(r,t),u=`${s+c+a+n}`;return `${o+ar(u).substring(1,r)}`},Ro=lr(),To=(t,{minLength:e=2,maxLength:r=$}={})=>{let n=t.length,i=/^[0-9a-z]+$/;try{if(typeof t==\"string\"&&n>=e&&n<=r&&i.test(t))return !0}finally{}return false};C.exports.getConstants=()=>({defaultLength:or,bigLength:$});C.exports.init=lr;C.exports.createId=Ro;C.exports.bufToBigInt=sr;C.exports.createCounter=ur;C.exports.createFingerprint=cr;C.exports.isCuid=To;});var dr=h((ic,j)=>{var{createId:Co,init:Bo,getConstants:Ao,isCuid:Uo}=fr();j.exports.createId=Co;j.exports.init=Bo;j.exports.getConstants=Ao;j.exports.isCuid=Uo;});var Rr=h((_c,yr)=>{yr.exports=br;br.sync=Lo;var Ir=S(\"fs\");function Po(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(\";\"),r.indexOf(\"\")!==-1))return true;for(var n=0;n<r.length;n++){var i=r[n].toLowerCase();if(i&&t.substr(-i.length).toLowerCase()===i)return true}return false}function Sr(t,e,r){return !t.isSymbolicLink()&&!t.isFile()?false:Po(e,r)}function br(t,e,r){Ir.stat(t,function(n,i){r(n,n?false:Sr(i,t,e));});}function Lo(t,e){return Sr(Ir.statSync(t),t,e)}});var Ur=h((Ec,Ar)=>{Ar.exports=Cr;Cr.sync=wo;var Tr=S(\"fs\");function Cr(t,e,r){Tr.stat(t,function(n,i){r(n,n?false:Br(i,e));});}function wo(t,e){return Br(Tr.statSync(t),e)}function Br(t,e){return t.isFile()&&xo(t,e)}function xo(t,e){var r=t.mode,n=t.uid,i=t.gid,o=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),s=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt(\"100\",8),c=parseInt(\"010\",8),u=parseInt(\"001\",8),l=a|c,p=r&u||r&c&&i===s||r&a&&n===o||r&l&&o===0;return p}});var Lr=h((Ic,Pr)=>{S(\"fs\");var it;process.platform===\"win32\"||global.TESTING_WINDOWS?it=Rr():it=Ur();Pr.exports=Lt;Lt.sync=Oo;function Lt(t,e,r){if(typeof e==\"function\"&&(r=e,e={}),!r){if(typeof Promise!=\"function\")throw new TypeError(\"callback not provided\");return new Promise(function(n,i){Lt(t,e||{},function(o,s){o?i(o):n(s);});})}it(t,e||{},function(n,i){n&&(n.code===\"EACCES\"||e&&e.ignoreErrors)&&(n=null,i=false),r(n,i);});}function Oo(t,e){try{return it.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code===\"EACCES\")return false;throw r}}});var kr=h((Sc,Mr)=>{var O=process.platform===\"win32\"||process.env.OSTYPE===\"cygwin\"||process.env.OSTYPE===\"msys\",wr=S(\"path\"),No=O?\";\":\":\",xr=Lr(),Or=t=>Object.assign(new Error(`not found: ${t}`),{code:\"ENOENT\"}),Nr=(t,e)=>{let r=e.colon||No,n=t.match(/\\//)||O&&t.match(/\\\\/)?[\"\"]:[...O?[process.cwd()]:[],...(e.path||process.env.PATH||\"\").split(r)],i=O?e.pathExt||process.env.PATHEXT||\".EXE;.CMD;.BAT;.COM\":\"\",o=O?i.split(r):[\"\"];return O&&t.indexOf(\".\")!==-1&&o[0]!==\"\"&&o.unshift(\"\"),{pathEnv:n,pathExt:o,pathExtExe:i}},Dr=(t,e,r)=>{typeof e==\"function\"&&(r=e,e={}),e||(e={});let{pathEnv:n,pathExt:i,pathExtExe:o}=Nr(t,e),s=[],a=u=>new Promise((l,p)=>{if(u===n.length)return e.all&&s.length?l(s):p(Or(t));let _=n[u],E=/^\".*\"$/.test(_)?_.slice(1,-1):_,I=wr.join(E,t),b=!E&&/^\\.[\\\\\\/]/.test(t)?t.slice(0,2)+I:I;l(c(b,u,0));}),c=(u,l,p)=>new Promise((_,E)=>{if(p===i.length)return _(a(l+1));let I=i[p];xr(u+I,{pathExt:o},(b,L)=>{if(!b&&L)if(e.all)s.push(u+I);else return _(u+I);return _(c(u,l,p+1))});});return r?a(0).then(u=>r(null,u),r):a(0)},Do=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:n,pathExtExe:i}=Nr(t,e),o=[];for(let s=0;s<r.length;s++){let a=r[s],c=/^\".*\"$/.test(a)?a.slice(1,-1):a,u=wr.join(c,t),l=!c&&/^\\.[\\\\\\/]/.test(t)?t.slice(0,2)+u:u;for(let p=0;p<n.length;p++){let _=l+n[p];try{if(xr.sync(_,{pathExt:i}))if(e.all)o.push(_);else return _}catch{}}}if(e.all&&o.length)return o;if(e.nothrow)return null;throw Or(t)};Mr.exports=Dr;Dr.sync=Do;});var Gr=h((bc,wt)=>{var Hr=(t={})=>{let e=t.env||process.env;return (t.platform||process.platform)!==\"win32\"?\"PATH\":Object.keys(e).reverse().find(n=>n.toUpperCase()===\"PATH\")||\"Path\"};wt.exports=Hr;wt.exports.default=Hr;});var Vr=h((yc,Fr)=>{var $r=S(\"path\"),Mo=kr(),ko=Gr();function jr(t,e){let r=t.options.env||process.env,n=process.cwd(),i=t.options.cwd!=null,o=i&&process.chdir!==void 0&&!process.chdir.disabled;if(o)try{process.chdir(t.options.cwd);}catch{}let s;try{s=Mo.sync(t.command,{path:r[ko({env:r})],pathExt:e?$r.delimiter:void 0});}catch{}finally{o&&process.chdir(n);}return s&&(s=$r.resolve(i?t.options.cwd:\"\",s)),s}function Ho(t){return jr(t)||jr(t,true)}Fr.exports=Ho;});var Wr=h((Rc,Ot)=>{var xt=/([()\\][%!^\"`<>&|;, *?])/g;function Go(t){return t=t.replace(xt,\"^$1\"),t}function $o(t,e){return t=`${t}`,t=t.replace(/(?=(\\\\+?)?)\\1\"/g,'$1$1\\\\\"'),t=t.replace(/(?=(\\\\+?)?)\\1$/,\"$1$1\"),t=`\"${t}\"`,t=t.replace(xt,\"^$1\"),e&&(t=t.replace(xt,\"^$1\")),t}Ot.exports.command=Go;Ot.exports.argument=$o;});var Kr=h((Tc,qr)=>{qr.exports=/^#!(.*)/;});var Yr=h((Cc,vr)=>{var jo=Kr();vr.exports=(t=\"\")=>{let e=t.match(jo);if(!e)return null;let[r,n]=e[0].replace(/#! ?/,\"\").split(\" \"),i=r.split(\"/\").pop();return i===\"env\"?n:n?`${i} ${n}`:i};});var Jr=h((Bc,zr)=>{var Nt=S(\"fs\"),Fo=Yr();function Vo(t){let r=Buffer.alloc(150),n;try{n=Nt.openSync(t,\"r\"),Nt.readSync(n,r,0,150,0),Nt.closeSync(n);}catch{}return Fo(r.toString())}zr.exports=Vo;});var tn=h((Ac,Zr)=>{var Wo=S(\"path\"),Qr=Vr(),Xr=Wr(),qo=Jr(),Ko=process.platform===\"win32\",vo=/\\.(?:com|exe)$/i,Yo=/node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;function zo(t){t.file=Qr(t);let e=t.file&&qo(t.file);return e?(t.args.unshift(t.file),t.command=e,Qr(t)):t.file}function Jo(t){if(!Ko)return t;let e=zo(t),r=!vo.test(e);if(t.options.forceShell||r){let n=Yo.test(e);t.command=Wo.normalize(t.command),t.command=Xr.command(t.command),t.args=t.args.map(o=>Xr.argument(o,n));let i=[t.command].concat(t.args).join(\" \");t.args=[\"/d\",\"/s\",\"/c\",`\"${i}\"`],t.command=process.env.comspec||\"cmd.exe\",t.options.windowsVerbatimArguments=true;}return t}function Qo(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let n={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?n:Jo(n)}Zr.exports=Qo;});var nn=h((Uc,rn)=>{var Dt=process.platform===\"win32\";function Mt(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:\"ENOENT\",errno:\"ENOENT\",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function Xo(t,e){if(!Dt)return;let r=t.emit;t.emit=function(n,i){if(n===\"exit\"){let o=en(i,e);if(o)return r.call(t,\"error\",o)}return r.apply(t,arguments)};}function en(t,e){return Dt&&t===1&&!e.file?Mt(e.original,\"spawn\"):null}function Zo(t,e){return Dt&&t===1&&!e.file?Mt(e.original,\"spawnSync\"):null}rn.exports={hookChildProcess:Xo,verifyENOENT:en,verifyENOENTSync:Zo,notFoundError:Mt};});var an=h((Pc,N)=>{var on=S(\"child_process\"),kt=tn(),Ht=nn();function sn(t,e,r){let n=kt(t,e,r),i=on.spawn(n.command,n.args,n.options);return Ht.hookChildProcess(i,n),i}function ts(t,e,r){let n=kt(t,e,r),i=on.spawnSync(n.command,n.args,n.options);return i.error=i.error||Ht.verifyENOENTSync(i.status,n),i}N.exports=sn;N.exports.spawn=sn;N.exports.sync=ts;N.exports._parse=kt;N.exports._enoent=Ht;});var Dn=h((Ou,Nn)=>{var{PassThrough:Xs}=S(\"stream\");Nn.exports=function(){var t=[],e=new Xs({objectMode:true});return e.setMaxListeners(0),e.add=r,e.isEmpty=n,e.on(\"unpipe\",i),Array.prototype.slice.call(arguments).forEach(r),e;function r(o){return Array.isArray(o)?(o.forEach(r),this):(t.push(o),o.once(\"end\",i.bind(null,o)),o.once(\"error\",e.emit.bind(e,\"error\")),o.pipe(e,{end:false}),this)}function n(){return t.length==0}function i(o){t=t.filter(function(s){return s!==o}),!t.length&&e.readable&&e.end();}};});var Si=h(M=>{Object.defineProperty(M,\"__esModule\",{value:true});M.of=M.PropertiesFile=void 0;var Ca=Ba(S(\"fs\"));function Ba(t){return t&&t.__esModule?t:{default:t}}var It=class{constructor(...e){this.objs={},e.length&&this.of.apply(this,e);}makeKeys(e){if(e&&e.indexOf(\"#\")!==0){let r=[\"=\",\":\"].map(s=>e.indexOf(s)).filter(s=>s>-1),n=Math.min(...r),i=e.substring(0,n).trim(),o=e.substring(n+1).trim();if(this.objs.hasOwnProperty(i))if(Array.isArray(this.objs[i]))this.objs[i].push(o);else {let s=this.objs[i];this.objs[i]=[s,o];}else {let s=o.replace(/\"/g,'\\\\\"').replace(/\\\\:/g,\":\").replace(/\\\\=/g,\"=\");this.objs[i]=unescape(JSON.parse('\"'+s+'\"'));}}}addFile(e){let n=Ca.default.readFileSync(e,\"utf-8\").split(/\\r?\\n/),i=this;for(let o=0;o<n.length;o++){let s=n[o];for(;s.substring(s.length-1)===\"\\\\\";){s=s.slice(0,-1);let a=n[o+1];s=s+a.trim(),o++;}i.makeKeys(s);}}of(...e){for(let r=0;r<e.length;r++)this.addFile(e[r]);}get(e,r){if(this.objs.hasOwnProperty(e))if(Array.isArray(this.objs[e])){let n=[];for(let i=0;i<this.objs[e].length;i++)n[i]=this.interpolate(this.objs[e][i]);return n}else return typeof this.objs[e]>\"u\"?\"\":this.interpolate(this.objs[e]);return r}getLast(e,r){if(this.objs.hasOwnProperty(e))if(Array.isArray(this.objs[e])){var n=this.objs[e].length;return this.interpolate(this.objs[e][n-1])}else return typeof this.objs[e]>\"u\"?\"\":this.interpolate(this.objs[e]);return r}getFirst(e,r){return this.objs.hasOwnProperty(e)?Array.isArray(this.objs[e])?this.interpolate(this.objs[e][0]):typeof this.objs[e]>\"u\"?\"\":this.interpolate(this.objs[e]):r}getInt(e,r){let n=this.getLast(e);return n?parseInt(n,10):r}getFloat(e,r){let n=this.getLast(e);return n?parseFloat(n):r}getBoolean(e,r){function n(o){return !/^(false|0)$/i.test(o)&&!!o}let i=this.getLast(e);return i?n(i):r||false}set(e,r){this.objs[e]=r;}interpolate(e){let r=this;return e.replace(/\\\\\\\\/g,\"\\\\\").replace(/\\$\\{([A-Za-z0-9\\.\\-\\_]*)\\}/g,function(n){return r.getLast(n.substring(2,n.length-1))})}getKeys(){let e=[];for(let r in this.objs)e.push(r);return e}getMatchingKeys(e){let r=[];for(let n in this.objs)n.search(e)!==-1&&r.push(n);return r}reset(){this.objs={};}};M.PropertiesFile=It;var Aa=function(...e){let r=new It;return r.of.apply(r,e),r};M.of=Aa;});var Y=X(dr());var Pt={AUTHENTICATION_FAILED:1008},rt=class{socket;url;apiKey;projectId;maxBufferSize;reconnectDelay;maxReconnectAttempts;onMessage;onError;buffer=[];reconnectAttempts=0;reconnectTimer;isManualClose=false;isAuthenticated=false;authenticationFailed=false;constructor({apiKey:e,maxBufferSize:r=1e3,maxReconnectAttempts:n=3,onError:i,onMessage:o,projectId:s,reconnectDelay:a=2e3,url:c}){this.url=c,this.apiKey=e,this.projectId=s,this.maxBufferSize=r,this.reconnectDelay=a,this.maxReconnectAttempts=n,this.onMessage=o,this.onError=i,this.connect();}connect(){try{let e={Authorization:this.apiKey??\"\",\"x-project-id\":this.projectId??\"\"};this.socket=new F(this.url,{headers:e}),this.socket.on(\"open\",()=>{this.reconnectAttempts=0;}),this.socket.on(\"message\",r=>{try{let n=typeof r==\"string\"?r:r.toString(),i=JSON.parse(n);i.type===\"connected\"?(this.isAuthenticated=!0,this.authenticationFailed=!1,this.flushBuffer()):this.onMessage&&this.onMessage(i);}catch{}}),this.socket.on(\"close\",(r,n)=>{this.isAuthenticated=!1,r===Pt.AUTHENTICATION_FAILED&&(this.authenticationFailed=!0,this.onError&&this.onError({code:r,message:n.toString()||\"Authentication failed\",reason:n.toString()})),!this.isManualClose&&!this.authenticationFailed&&this.reconnectAttempts<this.maxReconnectAttempts&&this.scheduleReconnect();}),this.socket.on(\"error\",()=>{});}catch{this.scheduleReconnect();}}scheduleReconnect(){this.reconnectTimer&&clearTimeout(this.reconnectTimer),this.reconnectAttempts++,this.reconnectTimer=setTimeout(()=>{this.connect();},this.reconnectDelay);}flushBuffer(){if(this.buffer.length===0||!this.socket||this.socket.readyState!==F.OPEN)return;let e=[...this.buffer];this.buffer=[];for(let r of e)try{let n=JSON.stringify(r);this.socket.send(n,i=>{i&&this.bufferEvent(r);});}catch{this.bufferEvent(r);}}bufferEvent(e){this.buffer.length>=this.maxBufferSize&&this.buffer.shift(),this.buffer.push(e);}async sendEvent(e){if(!this.socket||this.socket.readyState!==F.OPEN||!this.isAuthenticated){this.bufferEvent(e),this.socket?.readyState===F.CLOSED&&this.reconnectAttempts<this.maxReconnectAttempts&&this.scheduleReconnect();return}try{let r=JSON.stringify(e);this.socket.send(r,n=>{n&&this.bufferEvent(e);});}catch(r){throw this.bufferEvent(e),r}}close(){this.isManualClose=true,this.reconnectTimer&&clearTimeout(this.reconnectTimer),this.socket&&(this.socket.close(),this.socket=void 0);}get isConnected(){return this.socket?.readyState===F.OPEN&&this.isAuthenticated}get bufferedEventCount(){return this.buffer.length}getBufferedEvents(){return [...this.buffer]}};var pr={detect({env:t}){return !!t.APPVEYOR},configuration({env:t}){let e=t.APPVEYOR_PULL_REQUEST_NUMBER,r=!!e;return {name:\"Appveyor\",service:\"appveyor\",commit:t.APPVEYOR_REPO_COMMIT,tag:t.APPVEYOR_REPO_TAG_NAME,build:t.APPVEYOR_BUILD_NUMBER,buildUrl:`https://ci.appveyor.com/project/${t.APPVEYOR_PROJECT_SLUG}/build/${t.APPVEYOR_BUILD_VERSION}`,branch:t.APPVEYOR_REPO_BRANCH,job:t.APPVEYOR_JOB_NUMBER,jobUrl:`https://ci.appveyor.com/project/${t.APPVEYOR_PROJECT_SLUG}/build/job/${t.APPVEYOR_JOB_ID}`,pr:e,isPr:r,prBranch:t.APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH,slug:t.APPVEYOR_REPO_NAME,root:t.APPVEYOR_BUILD_FOLDER}}};function nt(t){return (/\\d+(?!.*\\d+)/.exec(t)||[])[0]}function B(t){return t?/^(?:refs\\/heads\\/)?(?<branch>.+)$/i.exec(t)[1]:void 0}var mr={detect({env:t}){return !!t.BUILD_BUILDURI},configuration({env:t}){let e=t.SYSTEM_PULLREQUEST_PULLREQUESTID,r=!!e;return {name:\"Azure Pipelines\",service:\"azurePipelines\",commit:t.BUILD_SOURCEVERSION,build:t.BUILD_BUILDNUMBER,branch:B(r?t.SYSTEM_PULLREQUEST_TARGETBRANCH:t.BUILD_SOURCEBRANCH),pr:e,isPr:r,prBranch:B(r?t.SYSTEM_PULLREQUEST_SOURCEBRANCH:void 0),root:t.BUILD_REPOSITORY_LOCALPATH}}};var hr={detect({env:t}){return !!t.bamboo_agentId},configuration({env:t}){return {name:\"Bamboo\",service:\"bamboo\",commit:t.bamboo_planRepository_1_revision,build:t.bamboo_buildNumber,buildUrl:t.bamboo_buildResultsUrl,branch:t.bamboo_planRepository_1_branchName,job:t.bamboo_buildKey,root:t.bamboo_build_working_directory}}};var _r={detect({env:t}){return !!t.BITBUCKET_BUILD_NUMBER},configuration({env:t}){return {name:\"Bitbucket Pipelines\",service:\"bitbucket\",commit:t.BITBUCKET_COMMIT,tag:t.BITBUCKET_TAG,build:t.BITBUCKET_BUILD_NUMBER,buildUrl:`https://bitbucket.org/${t.BITBUCKET_REPO_FULL_NAME}/addon/pipelines/home#!/results/${t.BITBUCKET_BUILD_NUMBER}`,branch:t.BITBUCKET_BRANCH,slug:t.BITBUCKET_REPO_FULL_NAME,root:t.BITBUCKET_CLONE_DIR}}};var Er={detect({env:t}){return !!t.BITRISE_IO},configuration({env:t}){let e=t.BITRISE_PULL_REQUEST===\"false\"?void 0:t.BITRISE_PULL_REQUEST,r=!!e;return {name:\"Bitrise\",service:\"bitrise\",commit:t.BITRISE_GIT_COMMIT,tag:t.BITRISE_GIT_TAG,build:t.BITRISE_BUILD_NUMBER,buildUrl:t.BITRISE_BUILD_URL,branch:r?t.BITRISEIO_GIT_BRANCH_DEST:t.BITRISE_GIT_BRANCH,pr:e,isPr:r,prBranch:r?t.BITRISE_GIT_BRANCH:void 0,slug:t.BITRISE_APP_SLUG}}};var gr={detect({env:t}){return !!t.BUDDY_WORKSPACE_ID},configuration({env:t}){let e=nt(t.BUDDY_EXECUTION_PULL_REQUEST_ID),r=!!e;return {name:\"Buddy\",service:\"buddy\",commit:t.BUDDY_EXECUTION_REVISION,tag:t.BUDDY_EXECUTION_TAG,build:t.BUDDY_EXECUTION_ID,buildUrl:t.BUDDY_EXECUTION_URL,branch:r?t.BUDDY_EXECUTION_PULL_REQUEST_HEAD_BRANCH:t.BUDDY_EXECUTION_BRANCH,pr:e,isPr:r,slug:t.BUDDY_REPO_SLUG}}};var Yn=X(an());function Gt(t){let e=typeof t==\"string\"?`\n`:10,r=typeof t==\"string\"?\"\\r\":13;return t[t.length-1]===e&&(t=t.slice(0,-1)),t[t.length-1]===r&&(t=t.slice(0,-1)),t}function ot(t={}){let{env:e=process.env,platform:r=process.platform}=t;return r!==\"win32\"?\"PATH\":Object.keys(e).reverse().find(n=>n.toUpperCase()===\"PATH\")||\"Path\"}var es=({cwd:t=st.cwd(),path:e=st.env[ot()],preferLocal:r=true,execPath:n=st.execPath,addExecPath:i=true}={})=>{let o=t instanceof URL?fileURLToPath(t):t,s=V.resolve(o),a=[];return r&&rs(a,s),i&&ns(a,n,s),[...a,e].join(V.delimiter)},rs=(t,e)=>{let r;for(;r!==e;)t.push(V.join(e,\"node_modules/.bin\")),r=e,e=V.resolve(e,\"..\");},ns=(t,e,r)=>{let n=e instanceof URL?fileURLToPath(e):e;t.push(V.resolve(r,n,\"..\"));},un=({env:t=st.env,...e}={})=>{t={...t};let r=ot({env:t});return e.path=t[r],t[r]=es(e),t};var dn=()=>{let t=mn-pn+1;return Array.from({length:t},fs)},fs=(t,e)=>({name:`SIGRT${e+1}`,number:pn+e,action:\"terminate\",description:\"Application-specific signal (realtime)\",standard:\"posix\"}),pn=34,mn=64;var hn=[{name:\"SIGHUP\",number:1,action:\"terminate\",description:\"Terminal closed\",standard:\"posix\"},{name:\"SIGINT\",number:2,action:\"terminate\",description:\"User interruption with CTRL-C\",standard:\"ansi\"},{name:\"SIGQUIT\",number:3,action:\"core\",description:\"User interruption with CTRL-\\\\\",standard:\"posix\"},{name:\"SIGILL\",number:4,action:\"core\",description:\"Invalid machine instruction\",standard:\"ansi\"},{name:\"SIGTRAP\",number:5,action:\"core\",description:\"Debugger breakpoint\",standard:\"posix\"},{name:\"SIGABRT\",number:6,action:\"core\",description:\"Aborted\",standard:\"ansi\"},{name:\"SIGIOT\",number:6,action:\"core\",description:\"Aborted\",standard:\"bsd\"},{name:\"SIGBUS\",number:7,action:\"core\",description:\"Bus error due to misaligned, non-existing address or paging error\",standard:\"bsd\"},{name:\"SIGEMT\",number:7,action:\"terminate\",description:\"Command should be emulated but is not implemented\",standard:\"other\"},{name:\"SIGFPE\",number:8,action:\"core\",description:\"Floating point arithmetic error\",standard:\"ansi\"},{name:\"SIGKILL\",number:9,action:\"terminate\",description:\"Forced termination\",standard:\"posix\",forced:true},{name:\"SIGUSR1\",number:10,action:\"terminate\",description:\"Application-specific signal\",standard:\"posix\"},{name:\"SIGSEGV\",number:11,action:\"core\",description:\"Segmentation fault\",standard:\"ansi\"},{name:\"SIGUSR2\",number:12,action:\"terminate\",description:\"Application-specific signal\",standard:\"posix\"},{name:\"SIGPIPE\",number:13,action:\"terminate\",description:\"Broken pipe or socket\",standard:\"posix\"},{name:\"SIGALRM\",number:14,action:\"terminate\",description:\"Timeout or timer\",standard:\"posix\"},{name:\"SIGTERM\",number:15,action:\"terminate\",description:\"Termination\",standard:\"ansi\"},{name:\"SIGSTKFLT\",number:16,action:\"terminate\",description:\"Stack is empty or overflowed\",standard:\"other\"},{name:\"SIGCHLD\",number:17,action:\"ignore\",description:\"Child process terminated, paused or unpaused\",standard:\"posix\"},{name:\"SIGCLD\",number:17,action:\"ignore\",description:\"Child process terminated, paused or unpaused\",standard:\"other\"},{name:\"SIGCONT\",number:18,action:\"unpause\",description:\"Unpaused\",standard:\"posix\",forced:true},{name:\"SIGSTOP\",number:19,action:\"pause\",description:\"Paused\",standard:\"posix\",forced:true},{name:\"SIGTSTP\",number:20,action:\"pause\",description:'Paused using CTRL-Z or \"suspend\"',standard:\"posix\"},{name:\"SIGTTIN\",number:21,action:\"pause\",description:\"Background process cannot read terminal input\",standard:\"posix\"},{name:\"SIGBREAK\",number:21,action:\"terminate\",description:\"User interruption with CTRL-BREAK\",standard:\"other\"},{name:\"SIGTTOU\",number:22,action:\"pause\",description:\"Background process cannot write to terminal output\",standard:\"posix\"},{name:\"SIGURG\",number:23,action:\"ignore\",description:\"Socket received out-of-band data\",standard:\"bsd\"},{name:\"SIGXCPU\",number:24,action:\"core\",description:\"Process timed out\",standard:\"bsd\"},{name:\"SIGXFSZ\",number:25,action:\"core\",description:\"File too big\",standard:\"bsd\"},{name:\"SIGVTALRM\",number:26,action:\"terminate\",description:\"Timeout or timer\",standard:\"bsd\"},{name:\"SIGPROF\",number:27,action:\"terminate\",description:\"Timeout or timer\",standard:\"bsd\"},{name:\"SIGWINCH\",number:28,action:\"ignore\",description:\"Terminal window size changed\",standard:\"bsd\"},{name:\"SIGIO\",number:29,action:\"terminate\",description:\"I/O is available\",standard:\"other\"},{name:\"SIGPOLL\",number:29,action:\"terminate\",description:\"Watched event\",standard:\"other\"},{name:\"SIGINFO\",number:29,action:\"ignore\",description:\"Request for process information\",standard:\"other\"},{name:\"SIGPWR\",number:30,action:\"terminate\",description:\"Device running out of power\",standard:\"systemv\"},{name:\"SIGSYS\",number:31,action:\"core\",description:\"Invalid system call\",standard:\"other\"},{name:\"SIGUNUSED\",number:31,action:\"terminate\",description:\"Invalid system call\",standard:\"other\"}];var jt=()=>{let t=dn();return [...hn,...t].map(ps)},ps=({name:t,number:e,description:r,action:n,forced:i=false,standard:o})=>{let{signals:{[t]:s}}=constants,a=s!==void 0;return {name:t,number:a?s:e,description:r,supported:a,action:n,forced:i,standard:o}};var hs=()=>{let t=jt();return Object.fromEntries(t.map(_s))},_s=({name:t,number:e,description:r,supported:n,action:i,forced:o,standard:s})=>[t,{name:t,number:e,description:r,supported:n,action:i,forced:o,standard:s}],_n=hs(),Es=()=>{let t=jt(),e=65,r=Array.from({length:e},(n,i)=>gs(i,t));return Object.assign({},...r)},gs=(t,e)=>{let r=Is(t,e);if(r===void 0)return {};let{name:n,description:i,supported:o,action:s,forced:a,standard:c}=r;return {[t]:{name:n,number:t,description:i,supported:o,action:s,forced:a,standard:c}}},Is=(t,e)=>{let r=e.find(({name:n})=>constants.signals[n]===t);return r!==void 0?r:e.find(n=>n.number===t)};Es();var bs=({timedOut:t,timeout:e,errorCode:r,signal:n,signalDescription:i,exitCode:o,isCanceled:s})=>t?`timed out after ${e} milliseconds`:s?\"was canceled\":r!==void 0?`failed with ${r}`:n!==void 0?`was killed with ${n} (${i})`:o!==void 0?`failed with exit code ${o}`:\"failed\",W=({stdout:t,stderr:e,all:r,error:n,signal:i,exitCode:o,command:s,escapedCommand:a,timedOut:c,isCanceled:u,killed:l,parsed:{options:{timeout:p,cwd:_=st.cwd()}}})=>{o=o===null?void 0:o,i=i===null?void 0:i;let E=i===void 0?void 0:_n[i].description,I=n&&n.code,L=`Command ${bs({timedOut:c,timeout:p,errorCode:I,signal:i,signalDescription:E,exitCode:o,isCanceled:u})}: ${s}`,z=Object.prototype.toString.call(n)===\"[object Error]\",J=z?`${L}\n${n.message}`:L,Q=[J,e,t].filter(Boolean).join(`\n`);return z?(n.originalMessage=n.message,n.message=Q):n=new Error(Q),n.shortMessage=J,n.command=s,n.escapedCommand=a,n.exitCode=o,n.signal=i,n.signalDescription=E,n.stdout=t,n.stderr=e,n.cwd=_,r!==void 0&&(n.all=r),\"bufferedData\"in n&&delete n.bufferedData,n.failed=true,n.timedOut=!!c,n.isCanceled=u,n.killed=l&&!c,n};var ct=[\"stdin\",\"stdout\",\"stderr\"],ys=t=>ct.some(e=>t[e]!==void 0),En=t=>{if(!t)return;let{stdio:e}=t;if(e===void 0)return ct.map(n=>t[n]);if(ys(t))throw new Error(`It's not possible to provide \\`stdio\\` in combination with one of ${ct.map(n=>`\\`${n}\\``).join(\", \")}`);if(typeof e==\"string\")return e;if(!Array.isArray(e))throw new TypeError(`Expected \\`stdio\\` to be of type \\`string\\` or \\`Array\\`, got \\`${typeof e}\\``);let r=Math.max(e.length,ct.length);return Array.from({length:r},(n,i)=>e[i])};var P=[];P.push(\"SIGHUP\",\"SIGINT\",\"SIGTERM\");process.platform!==\"win32\"&&P.push(\"SIGALRM\",\"SIGABRT\",\"SIGVTALRM\",\"SIGXCPU\",\"SIGXFSZ\",\"SIGUSR2\",\"SIGTRAP\",\"SIGSYS\",\"SIGQUIT\",\"SIGIOT\");process.platform===\"linux\"&&P.push(\"SIGIO\",\"SIGPOLL\",\"SIGPWR\",\"SIGSTKFLT\");var ut=t=>!!t&&typeof t==\"object\"&&typeof t.removeListener==\"function\"&&typeof t.emit==\"function\"&&typeof t.reallyExit==\"function\"&&typeof t.listeners==\"function\"&&typeof t.kill==\"function\"&&typeof t.pid==\"number\"&&typeof t.on==\"function\",Ft=Symbol.for(\"signal-exit emitter\"),Vt=globalThis,Rs=Object.defineProperty.bind(Object),Wt=class{emitted={afterExit:false,exit:false};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(Vt[Ft])return Vt[Ft];Rs(Vt,Ft,{value:this,writable:false,enumerable:false,configurable:false});}on(e,r){this.listeners[e].push(r);}removeListener(e,r){let n=this.listeners[e],i=n.indexOf(r);i!==-1&&(i===0&&n.length===1?n.length=0:n.splice(i,1));}emit(e,r,n){if(this.emitted[e])return false;this.emitted[e]=true;let i=false;for(let o of this.listeners[e])i=o(r,n)===true||i;return e===\"exit\"&&(i=this.emit(\"afterExit\",r,n)||i),i}},lt=class{},Ts=t=>({onExit(e,r){return t.onExit(e,r)},load(){return t.load()},unload(){return t.unload()}}),qt=class extends lt{onExit(){return ()=>{}}load(){}unload(){}},Kt=class extends lt{#s=vt.platform===\"win32\"?\"SIGINT\":\"SIGHUP\";#e=new Wt;#t;#i;#o;#n={};#r=false;constructor(e){super(),this.#t=e,this.#n={};for(let r of P)this.#n[r]=()=>{let n=this.#t.listeners(r),{count:i}=this.#e,o=e;if(typeof o.__signal_exit_emitter__==\"object\"&&typeof o.__signal_exit_emitter__.count==\"number\"&&(i+=o.__signal_exit_emitter__.count),n.length===i){this.unload();let s=this.#e.emit(\"exit\",null,r),a=r===\"SIGHUP\"?this.#s:r;s||e.kill(e.pid,a);}};this.#o=e.reallyExit,this.#i=e.emit;}onExit(e,r){if(!ut(this.#t))return ()=>{};this.#r===false&&this.load();let n=r?.alwaysLast?\"afterExit\":\"exit\";return this.#e.on(n,e),()=>{this.#e.removeListener(n,e),this.#e.listeners.exit.length===0&&this.#e.listeners.afterExit.length===0&&this.unload();}}load(){if(!this.#r){this.#r=true,this.#e.count+=1;for(let e of P)try{let r=this.#n[e];r&&this.#t.on(e,r);}catch{}this.#t.emit=(e,...r)=>this.#c(e,...r),this.#t.reallyExit=e=>this.#a(e);}}unload(){this.#r&&(this.#r=false,P.forEach(e=>{let r=this.#n[e];if(!r)throw new Error(\"Listener not defined for signal: \"+e);try{this.#t.removeListener(e,r);}catch{}}),this.#t.emit=this.#i,this.#t.reallyExit=this.#o,this.#e.count-=1);}#a(e){return ut(this.#t)?(this.#t.exitCode=e||0,this.#e.emit(\"exit\",this.#t.exitCode,null),this.#o.call(this.#t,this.#t.exitCode)):0}#c(e,...r){let n=this.#i;if(e===\"exit\"&&ut(this.#t)){typeof r[0]==\"number\"&&(this.#t.exitCode=r[0]);let i=n.call(this.#t,e,...r);return this.#e.emit(\"exit\",this.#t.exitCode,null),i}else return n.call(this.#t,e,...r)}},vt=globalThis.process;Ts(ut(vt)?new Kt(vt):new qt);function ft(t){return t!==null&&typeof t==\"object\"&&typeof t.pipe==\"function\"}new TextEncoder;X(Dn());var kn=t=>{if(t!==void 0)throw new TypeError(\"The `input` and `inputFile` options cannot be both set.\")},ra=({input:t,inputFile:e})=>typeof e!=\"string\"?t:(kn(t),readFileSync(e)),Hn=t=>{let e=ra(t);if(ft(e))throw new TypeError(\"The `input` option cannot be a stream in sync mode\");return e};var oa=(async()=>{})().constructor.prototype;[\"then\",\"catch\",\"finally\"].map(t=>[t,Reflect.getOwnPropertyDescriptor(oa,t)]);var qn=(t,e=[])=>Array.isArray(e)?[t,...e]:[t],ua=/^[\\w.-]+$/,la=t=>typeof t!=\"string\"||ua.test(t)?t:`\"${t.replaceAll('\"','\\\\\"')}\"`,ie=(t,e)=>qn(t,e).join(\" \"),oe=(t,e)=>qn(t,e).map(r=>la(r)).join(\" \");var Kn=debuglog(\"execa\").enabled,Et=(t,e)=>String(t).padStart(e,\"0\"),ha=()=>{let t=new Date;return `${Et(t.getHours(),2)}:${Et(t.getMinutes(),2)}:${Et(t.getSeconds(),2)}.${Et(t.getMilliseconds(),3)}`},ae=(t,{verbose:e})=>{e&&st.stderr.write(`[${ha()}] ${t}\n`);};var ga=1e3*1e3*100,Ia=({env:t,extendEnv:e,preferLocal:r,localDir:n,execPath:i})=>{let o=e?{...st.env,...t}:t;return r?un({env:o,cwd:n,execPath:i}):o},zn=(t,e,r={})=>{let n=Yn.default._parse(t,e,r);return t=n.command,e=n.args,r=n.options,r={maxBuffer:ga,buffer:true,stripFinalNewline:true,extendEnv:true,preferLocal:false,localDir:r.cwd||st.cwd(),execPath:st.execPath,encoding:\"utf8\",reject:true,cleanup:true,all:false,windowsHide:true,verbose:Kn,...r},r.env=Ia(r),r.stdio=En(r),st.platform===\"win32\"&&V.basename(t,\".exe\")===\"cmd\"&&e.unshift(\"/q\"),{file:t,args:e,options:r,parsed:n}},K=(t,e,r)=>typeof e!=\"string\"&&!Buffer$1.isBuffer(e)?r===void 0?void 0:\"\":t.stripFinalNewline?Gt(e):e;function v(t,e,r){let n=zn(t,e,r),i=ie(t,e),o=oe(t,e);ae(o,n.options);let s=Hn(n.options),a;try{a=ce.spawnSync(n.file,n.args,{...n.options,input:s});}catch(l){throw W({error:l,stdout:\"\",stderr:\"\",all:\"\",command:i,escapedCommand:o,parsed:n,timedOut:false,isCanceled:false,killed:false})}let c=K(n.options,a.stdout,a.error),u=K(n.options,a.stderr,a.error);if(a.error||a.status!==0||a.signal!==null){let l=W({stdout:c,stderr:u,error:a.error,signal:a.signal,exitCode:a.status,command:i,escapedCommand:o,parsed:n,timedOut:a.error&&a.error.code===\"ETIMEDOUT\",isCanceled:false,killed:a.signal!==null});if(!n.options.reject)return l;throw l}return {command:i,escapedCommand:o,exitCode:0,stdout:c,stderr:u,failed:false,timedOut:false,isCanceled:false,killed:false}}function A(t){try{return v(\"git\",[\"rev-parse\",\"HEAD\"],t).stdout}catch{return}}function D(t){try{let e=v(\"git\",[\"rev-parse\",\"--abbrev-ref\",\"HEAD\"],t).stdout;if(e===\"HEAD\"){let r=v(\"git\",[\"show\",\"-s\",\"--pretty=%d\",\"HEAD\"],t).stdout.replace(/^\\(|\\)$/g,\"\").split(\", \").find(n=>n.startsWith(\"origin/\"));return r?r.match(/^origin\\/(?<branch>.+)/)[1]:void 0}return e}catch{return}}var Qn=/^(?:.*)@(?:.*):(?:\\d+\\/)?(.*)\\.git$/,ya=/^\\/(.*)\\.git$/;function Xn(t){if(t){if(t.match(Qn))return t.replace(Qn,\"$1\");try{return new URL(t).pathname.replace(ya,\"$1\")}catch{return}}}var Zn={detect({env:t}){return !!t.BUILDKITE},configuration({env:t}){let e=t.BUILDKITE_PULL_REQUEST===\"false\"?void 0:t.BUILDKITE_PULL_REQUEST,r=!!e;return {name:\"Buildkite\",service:\"buildkite\",build:t.BUILDKITE_BUILD_NUMBER,buildUrl:t.BUILDKITE_BUILD_URL,commit:t.BUILDKITE_COMMIT,tag:t.BUILDKITE_TAG,branch:r?t.BUILDKITE_PULL_REQUEST_BASE_BRANCH:t.BUILDKITE_BRANCH,slug:Xn(t.BUILDKITE_REPO),pr:e,isPr:r,prBranch:r?t.BUILDKITE_BRANCH:void 0,root:t.BUILDKITE_BUILD_CHECKOUT_PATH}}};var ti={detect({env:t}){return !!t.CIRCLECI},configuration({env:t}){let e=t.CIRCLE_PR_NUMBER||nt(t.CIRCLE_PULL_REQUEST||t.CI_PULL_REQUEST),r=!!e;return {name:\"CircleCI\",service:\"circleci\",build:t.CIRCLE_BUILD_NUM,buildUrl:t.CIRCLE_BUILD_URL,job:`${t.CIRCLE_BUILD_NUM}.${t.CIRCLE_NODE_INDEX}`,commit:t.CIRCLE_SHA1,tag:t.CIRCLE_TAG,branch:r?void 0:t.CIRCLE_BRANCH,pr:e,isPr:r,prBranch:r?t.CIRCLE_BRANCH:void 0,slug:`${t.CIRCLE_PROJECT_USERNAME}/${t.CIRCLE_PROJECT_REPONAME}`}}};var ei=\"https://cirrus-ci.com\",ri={detect({env:t}){return !!t.CIRRUS_CI},configuration({env:t}){let e=t.CIRRUS_PR,r=!!e;return {name:\"Cirrus CI\",service:\"cirrus\",commit:t.CIRRUS_CHANGE_IN_REPO,tag:t.CIRRUS_TAG,build:t.CIRRUS_BUILD_ID,buildUrl:`${ei}/build/${t.CIRRUS_BUILD_ID}`,job:t.CIRRUS_TASK_ID,jobUrl:`${ei}/task/${t.CIRRUS_TASK_ID}`,branch:r?t.CIRRUS_BASE_BRANCH:t.CIRRUS_BRANCH,pr:e,isPr:r,prBranch:r?t.CIRRUS_BRANCH:void 0,slug:t.CIRRUS_REPO_FULL_NAME,root:t.CIRRUS_WORKING_DIR}}};var ni={detect({env:t}){return t.CF_PAGES===\"1\"},configuration({env:t}){return {name:\"Cloudflare Pages\",service:\"cloudflarePages\",commit:t.CF_PAGES_COMMIT_SHA,branch:t.CF_PAGES_BRANCH,root:t.PWD}}};var ii={detect({env:t}){return !!t.CODEBUILD_BUILD_ID},configuration({env:t,cwd:e}){return {name:\"AWS CodeBuild\",service:\"codebuild\",commit:A({env:t,cwd:e}),build:t.CODEBUILD_BUILD_ID,branch:D({env:t,cwd:e}),buildUrl:`https://console.aws.amazon.com/codebuild/home?region=${t.AWS_REGION}#/builds/${t.CODEBUILD_BUILD_ID}/view/new`,root:t.PWD}}};var oi={detect({env:t}){return !!t.CF_BUILD_ID},configuration({env:t}){let e=t.CF_PULL_REQUEST_NUMBER,r=!!e;return {name:\"Codefresh\",service:\"codefresh\",commit:t.CF_REVISION,build:t.CF_BUILD_ID,buildUrl:t.CF_BUILD_URL,branch:r?t.CF_PULL_REQUEST_TARGET:t.CF_BRANCH,pr:e,isPr:r,prBranch:r?t.CF_BRANCH:void 0,slug:`${t.CF_REPO_OWNER}/${t.CF_REPO_NAME}`,root:t.CF_VOLUME_PATH}}};var si={detect({env:t}){return t.CI_NAME&&t.CI_NAME===\"codeship\"},configuration({env:t}){return {name:\"Codeship\",service:\"codeship\",build:t.CI_BUILD_NUMBER,buildUrl:t.CI_BUILD_URL,commit:t.CI_COMMIT_ID,branch:t.CI_BRANCH,slug:t.CI_REPO_NAME}}};var ai={detect({env:t}){return !!t.DRONE},configuration({env:t}){let e=t.DRONE_BUILD_EVENT===\"pull_request\";return {name:\"Drone\",service:\"drone\",commit:t.DRONE_COMMIT_SHA,tag:t.DRONE_TAG,build:t.DRONE_BUILD_NUMBER,buildUrl:t.DRONE_BUILD_LINK,branch:e?t.DRONE_TARGET_BRANCH:t.DRONE_BRANCH,job:t.DRONE_JOB_NUMBER,jobUrl:t.DRONE_BUILD_LINK,pr:t.DRONE_PULL_REQUEST,isPr:e,prBranch:e?t.DRONE_SOURCE_BRANCH:void 0,slug:`${t.DRONE_REPO_OWNER}/${t.DRONE_REPO_NAME}`,root:t.DRONE_WORKSPACE}}};var ci={configuration(t){return {commit:A(t),branch:D(t)}}};var Ra=({env:t})=>{try{let e=t.GITHUB_EVENT_PATH?JSON.parse(readFileSync(t.GITHUB_EVENT_PATH,\"utf-8\")):void 0;if(e&&e.pull_request)return {branch:e.pull_request.base?B(e.pull_request.base.ref):void 0,pr:e.pull_request.number}}catch{}return {pr:void 0,branch:void 0}},Ta=t=>{let e=t.GITHUB_EVENT_PATH?JSON.parse(readFileSync(t.GITHUB_EVENT_PATH,\"utf-8\")):void 0;return e&&e.pull_request?e.pull_request.number:void 0},li={detect({env:t}){return !!t.GITHUB_ACTIONS},configuration({env:t,cwd:e}){let r=t.GITHUB_EVENT_NAME===\"pull_request\"||t.GITHUB_EVENT_NAME===\"pull_request_target\",n=B(t.GITHUB_EVENT_NAME===\"pull_request_target\"?`refs/pull/${Ta(t)}/merge`:t.GITHUB_REF);return {name:\"GitHub Actions\",service:\"github\",commit:t.GITHUB_SHA,build:t.GITHUB_RUN_ID,buildUrl:`${t.GITHUB_SERVER_URL}/${t.GITHUB_REPOSITORY}/actions/runs/${t.GITHUB_RUN_ID}`,isPr:r,branch:n,prBranch:r?n:void 0,slug:t.GITHUB_REPOSITORY,root:t.GITHUB_WORKSPACE,...r?Ra({env:t}):void 0}}};var fi={detect({env:t}){return !!t.GITLAB_CI},configuration({env:t}){let e=t.CI_MERGE_REQUEST_ID,r=!!e;return {name:\"GitLab CI/CD\",service:\"gitlab\",commit:t.CI_COMMIT_SHA,tag:t.CI_COMMIT_TAG,build:t.CI_PIPELINE_ID,buildUrl:`${t.CI_PROJECT_URL}/pipelines/${t.CI_PIPELINE_ID}`,job:t.CI_JOB_ID,jobUrl:`${t.CI_PROJECT_URL}/-/jobs/${t.CI_JOB_ID}`,branch:r?t.CI_MERGE_REQUEST_TARGET_BRANCH_NAME:t.CI_COMMIT_REF_NAME,pr:e,isPr:r,prBranch:t.CI_MERGE_REQUEST_SOURCE_BRANCH_NAME,slug:t.CI_PROJECT_PATH,root:t.CI_PROJECT_DIR}}};var di={detect({env:t}){return !!t.JENKINS_URL},configuration({env:t,cwd:e}){let r=t.ghprbPullId||t.gitlabMergeRequestId||t.CHANGE_ID,n=!!r,i=t.GIT_LOCAL_BRANCH||t.GIT_BRANCH||t.gitlabBranch||t.BRANCH_NAME;return {name:\"Jenkins\",service:\"jenkins\",commit:t.ghprbActualCommit||t.GIT_COMMIT||A({env:t,cwd:e}),branch:n?t.ghprbTargetBranch||t.gitlabTargetBranch:i,build:t.BUILD_NUMBER,buildUrl:t.BUILD_URL,root:t.WORKSPACE,pr:r,isPr:n,prBranch:n?t.ghprbSourceBranch||t.gitlabSourceBranch||i:void 0}}};var pi={detect({env:t}){return t.NETLIFY===\"true\"},configuration({env:t}){let e=t.PULL_REQUEST===\"true\";return {name:\"Netlify\",service:\"netlify\",commit:t.COMMIT_REF,build:t.DEPLOY_ID,buildUrl:`https://app.netlify.com/sites/${t.SITE_NAME}/deploys/${t.DEPLOY_ID}`,branch:e?void 0:t.HEAD,pr:t.REVIEW_ID,isPr:e,prBranch:e?t.HEAD:void 0,slug:t.REPOSITORY_URL.match(/[^/:]+\\/[^/]+?$/)[0],root:t.PWD}}};var mi={detect({env:t}){return !!t.DISTELLI_APPNAME},configuration({env:t}){return {name:\"Puppet\",service:\"puppet\",build:t.DISTELLI_BUILDNUM,buildUrl:t.DISTELLI_RELEASE,commit:t.DISTELLI_RELREVISION,branch:t.DISTELLI_RELBRANCH,root:t.DISTELLI_INSTALLHOME}}};var hi={detect({env:t}){return !!t.SAILCI},configuration({env:t}){let e=t.SAIL_PULL_REQUEST_NUMBER,r=!!e;return {name:\"Sail CI\",service:\"sail\",commit:t.SAIL_COMMIT_SHA,branch:r?void 0:t.SAIL_COMMIT_BRANCH,pr:e,isPr:r,slug:`${t.SAIL_REPO_OWNER}/${t.SAIL_REPO_NAME}`,root:t.SAIL_CLONE_DIR}}};var _i={detect({env:t}){return !!t.SCREWDRIVER},configuration({env:t}){let e=t.SD_PULL_REQUEST,r=!!e;return {name:\"Screwdriver.cd\",service:\"screwdriver\",branch:r?t.PR_BASE_BRANCH_NAME:t.GIT_BRANCH,prBranch:r?t.PR_BRANCH_NAME:void 0,commit:t.SD_BUILD_SHA,build:t.SD_BUILD_ID,buildUrl:t.SD_UI_BUILD_URL,job:t.SD_JOB_ID,pr:e,isPr:r,slug:t.SD_PIPELINE_NAME,root:t.SD_ROOT_DIR}}};var Ei={detect({env:t}){return !!t.SCRUTINIZER},configuration({env:t}){let e=t.SCRUTINIZER_PR_NUMBER,r=!!e;return {name:\"Scrutinizer\",service:\"scrutinizer\",commit:t.SCRUTINIZER_SHA1,build:t.SCRUTINIZER_INSPECTION_UUID,branch:t.SCRUTINIZER_BRANCH,pr:e,isPr:r,prBranch:t.SCRUTINIZER_PR_SOURCE_BRANCH}}};var gi={detect({env:t}){return !!t.SEMAPHORE},configuration({env:t,cwd:e}){let r=t.SEMAPHORE_GIT_PR_NUMBER||t.PULL_REQUEST_NUMBER,n=!!r;return {name:\"Semaphore\",service:\"semaphore\",commit:t.SEMAPHORE_GIT_SHA||A({env:t,cwd:e}),tag:t.SEMAPHORE_GIT_TAG_NAME,build:t.SEMAPHORE_JOB_ID||t.SEMAPHORE_BUILD_NUMBER,branch:t.SEMAPHORE_GIT_BRANCH||(n?void 0:t.BRANCH_NAME),pr:r,isPr:n,prBranch:t.SEMAPHORE_GIT_PR_BRANCH||(n?t.BRANCH_NAME:void 0),slug:t.SEMAPHORE_GIT_REPO_SLUG||t.SEMAPHORE_REPO_SLUG,root:t.SEMAPHORE_GIT_DIR||t.SEMAPHORE_PROJECT_DIR}}};var Ii={detect({env:t}){return !!t.SHIPPABLE},configuration({env:t}){let e=t.IS_PULL_REQUEST===\"true\"?t.PULL_REQUEST:void 0,r=!!e;return {name:\"Shippable\",service:\"shippable\",commit:t.COMMIT,tag:t.GIT_TAG_NAME,build:t.BUILD_NUMBER,buildUrl:t.BUILD_URL,branch:r?t.BASE_BRANCH:t.BRANCH,job:t.JOB_NUMBER,pr:e,isPr:r,prBranch:r?t.HEAD_BRANCH:void 0,slug:t.SHIPPABLE_REPO_SLUG,root:t.SHIPPABLE_BUILD_DIR}}};var yi=X(Si());var ue={root:\"teamcity.build.workingDir\",branch:\"teamcity.build.branch\"},bi=t=>{try{return yi.default.of(t)}catch{return}},Ua=({env:t,cwd:e})=>{let r=t.TEAMCITY_BUILD_PROPERTIES_FILE?bi(t.TEAMCITY_BUILD_PROPERTIES_FILE):void 0,n=r?r.get(\"teamcity.configuration.properties.file\"):void 0,i=n&&bi(n);return Object.fromEntries(Object.keys(ue).map(o=>[o,(r?r.get(ue[o]):void 0)||(i?i.get(ue[o]):void 0)||(o===\"branch\"?D({env:t,cwd:e}):void 0)]))},Ri={detect({env:t}){return !!t.TEAMCITY_VERSION},configuration({env:t,cwd:e}){return {name:\"TeamCity\",service:\"teamcity\",commit:t.BUILD_VCS_NUMBER,build:t.BUILD_NUMBER,slug:t.TEAMCITY_BUILDCONF_NAME,...Ua({env:t,cwd:e})}}};var Ti={detect({env:t}){return !!t.TRAVIS},configuration({env:t}){let e=t.TRAVIS_PULL_REQUEST===\"false\"?void 0:t.TRAVIS_PULL_REQUEST,r=!!e;return {name:\"Travis CI\",service:\"travis\",commit:t.TRAVIS_COMMIT,tag:t.TRAVIS_TAG,build:t.TRAVIS_BUILD_NUMBER,buildUrl:t.TRAVIS_BUILD_WEB_URL,branch:t.TRAVIS_BRANCH,job:t.TRAVIS_JOB_NUMBER,jobUrl:t.TRAVIS_JOB_WEB_URL,pr:e,isPr:r,prBranch:t.TRAVIS_PULL_REQUEST_BRANCH,slug:t.TRAVIS_REPO_SLUG,root:t.TRAVIS_BUILD_DIR}}};var Ci={detect({env:t}){return !!t.VELA},configuration({env:t}){let e=t.VELA_BUILD_EVENT===\"pull_request\";return {name:\"Vela\",service:\"vela\",branch:e?t.VELA_PULL_REQUEST_TARGET:t.VELA_BUILD_BRANCH,commit:t.VELA_BUILD_COMMIT,tag:t.VELA_BUILD_TAG,build:t.VELA_BUILD_NUMBER,buildUrl:t.VELA_BUILD_LINK,job:void 0,jobUrl:void 0,isPr:e,pr:t.VELA_BUILD_PULL_REQUEST,prBranch:t.VELA_PULL_REQUEST_SOURCE,slug:t.VELA_REPO_FULL_NAME,root:t.VELA_BUILD_WORKSPACE}}};var Bi={detect({env:t}){return !!t.VERCEL||!!t.NOW_GITHUB_DEPLOYMENT},configuration({env:t}){let e=\"Vercel\",r=\"vercel\";return t.VERCEL?{name:e,service:r,commit:t.VERCEL_GIT_COMMIT_SHA,branch:t.VERCEL_GIT_COMMIT_REF,slug:`${t.VERCEL_GIT_REPO_OWNER}/${t.VERCEL_GIT_REPO_SLUG}`}:{name:e,service:r,commit:t.NOW_GITHUB_COMMIT_SHA,branch:t.NOW_GITHUB_COMMIT_REF,slug:`${t.NOW_GITHUB_ORG}/${t.NOW_GITHUB_REPO}`}}};var Ai={detect({env:t}){return !!t.WERCKER_MAIN_PIPELINE_STARTED},configuration({env:t}){return {name:\"Wercker\",service:\"wercker\",commit:t.WERCKER_GIT_COMMIT,build:t.WERCKER_MAIN_PIPELINE_STARTED,buildUrl:t.WERCKER_RUN_URL,branch:t.WERCKER_GIT_BRANCH,slug:`${t.WERCKER_GIT_OWNER}/${t.WERCKER_GIT_REPOSITORY}`,root:t.WERCKER_ROOT}}};var Ui={detect({env:t}){return t.CI&&t.CI===\"woodpecker\"},configuration({env:t}){let e=t.CI_PIPELINE_EVENT===\"pull_request\";return {name:\"Woodpecker CI\",service:\"woodpecker\",commit:t.CI_COMMIT_SHA,tag:t.CI_COMMIT_TAG,build:t.CI_PIPELINE_NUMBER,buildUrl:t.CI_PIPELINE_URL,branch:e?t.CI_COMMIT_TARGET_BRANCH:t.CI_COMMIT_BRANCH,job:t.CI_STEP_NUMBER,jobUrl:t.CI_STEP_URL,pr:t.CI_COMMIT_PULL_REQUEST,isPr:e,prBranch:e?t.CI_COMMIT_SOURCE_BRANCH:void 0,slug:`${t.CI_REPO_OWNER}/${t.CI_REPO_NAME}`,root:t.CI_WORKSPACE}}};var Pi={detect({env:t}){return !!t.JB_SPACE_EXECUTION_NUMBER},configuration({env:t}){let e=t.JB_SPACE_PROJECT_KEY,r=t.JB_SPACE_GIT_REPOSITORY_NAME;return {name:\"JetBrains Space\",service:\"jetbrainsSpace\",commit:t.JB_SPACE_GIT_REVISION,build:t.JB_SPACE_EXECUTION_NUMBER,branch:B(t.JB_SPACE_GIT_BRANCH),slug:e&&r?`${e.toLowerCase()}/${r}`:void 0}}};var le={appveyor:pr,azurePipelines:mr,bamboo:hr,bitbucket:_r,bitrise:Er,buddy:gr,buildkite:Zn,circleci:ti,cirrus:ri,cloudflarePages:ni,codebuild:ii,codefresh:oi,codeship:si,drone:ai,github:li,gitlab:fi,jenkins:di,netlify:pi,puppet:mi,sail:hi,screwdriver:_i,scrutinizer:Ei,semaphore:gi,shippable:Ii,teamcity:Ri,travis:Ti,vela:Ci,vercel:Bi,wercker:Ai,woodpecker:Ui,jetbrainsSpace:Pi},Li=({env:t=process.env,cwd:e=process.cwd()}={})=>{for(let r of Object.keys(le))if(le[r].detect({env:t,cwd:e}))return {isCi:true,...le[r].configuration({env:t,cwd:e})};return {isCi:!!t.CI,...ci.configuration({env:t,cwd:e})}};function wi(){let t=Li();return {branch:t.branch,commit:{message:xa(),sha:t.commit},isCI:t.isCi,pr:wa()}}function wa(){try{let t=process.env.GITHUB_EVENT_PATH;if(t){let e=JSON.parse(readFileSync(t,\"utf-8\"));if(e.pull_request)return {author:e.pull_request.user.login,number:e.pull_request.number,title:e.pull_request.title}}return}catch{return}}function xa(){try{return execSync(\"git log -1 --pretty=%B\",{encoding:\"utf-8\",stdio:[\"pipe\",\"pipe\",\"ignore\"]}).trim()}catch{return}}function Oi(){return {hostname:xi.hostname(),platform:xi.platform()}}var Oa=new Error(\"request for lock canceled\"),Na=function(t,e,r,n){function i(o){return o instanceof r?o:new r(function(s){s(o);})}return new(r||(r=Promise))(function(o,s){function a(l){try{u(n.next(l));}catch(p){s(p);}}function c(l){try{u(n.throw(l));}catch(p){s(p);}}function u(l){l.done?o(l.value):i(l.value).then(a,c);}u((n=n.apply(t,e||[])).next());})},fe=class{constructor(e,r=Oa){this._value=e,this._cancelError=r,this._queue=[],this._weightedWaiters=[];}acquire(e=1,r=0){if(e<=0)throw new Error(`invalid weight ${e}: must be positive`);return new Promise((n,i)=>{let o={resolve:n,reject:i,weight:e,priority:r},s=Ni(this._queue,a=>r<=a.priority);s===-1&&e<=this._value?this._dispatchItem(o):this._queue.splice(s+1,0,o);})}runExclusive(e){return Na(this,arguments,void 0,function*(r,n=1,i=0){let[o,s]=yield this.acquire(n,i);try{return yield r(o)}finally{s();}})}waitForUnlock(e=1,r=0){if(e<=0)throw new Error(`invalid weight ${e}: must be positive`);return this._couldLockImmediately(e,r)?Promise.resolve():new Promise(n=>{this._weightedWaiters[e-1]||(this._weightedWaiters[e-1]=[]),Da(this._weightedWaiters[e-1],{resolve:n,priority:r});})}isLocked(){return this._value<=0}getValue(){return this._value}setValue(e){this._value=e,this._dispatchQueue();}release(e=1){if(e<=0)throw new Error(`invalid weight ${e}: must be positive`);this._value+=e,this._dispatchQueue();}cancel(){this._queue.forEach(e=>e.reject(this._cancelError)),this._queue=[];}_dispatchQueue(){for(this._drainUnlockWaiters();this._queue.length>0&&this._queue[0].weight<=this._value;)this._dispatchItem(this._queue.shift()),this._drainUnlockWaiters();}_dispatchItem(e){let r=this._value;this._value-=e.weight,e.resolve([r,this._newReleaser(e.weight)]);}_newReleaser(e){let r=false;return ()=>{r||(r=true,this.release(e));}}_drainUnlockWaiters(){if(this._queue.length===0)for(let e=this._value;e>0;e--){let r=this._weightedWaiters[e-1];r&&(r.forEach(n=>n.resolve()),this._weightedWaiters[e-1]=[]);}else {let e=this._queue[0].priority;for(let r=this._value;r>0;r--){let n=this._weightedWaiters[r-1];if(!n)continue;let i=n.findIndex(o=>o.priority<=e);(i===-1?n:n.splice(0,i)).forEach(o=>o.resolve());}}}_couldLockImmediately(e,r){return (this._queue.length===0||this._queue[0].priority<r)&&e<=this._value}};function Da(t,e){let r=Ni(t,n=>e.priority<=n.priority);t.splice(r+1,0,e);}function Ni(t,e){for(let r=t.length-1;r>=0;r--)if(e(t[r]))return r;return -1}var Ma=function(t,e,r,n){function i(o){return o instanceof r?o:new r(function(s){s(o);})}return new(r||(r=Promise))(function(o,s){function a(l){try{u(n.next(l));}catch(p){s(p);}}function c(l){try{u(n.throw(l));}catch(p){s(p);}}function u(l){l.done?o(l.value):i(l.value).then(a,c);}u((n=n.apply(t,e||[])).next());})},St=class{constructor(e){this._semaphore=new fe(1,e);}acquire(){return Ma(this,arguments,void 0,function*(e=0){let[,r]=yield this._semaphore.acquire(1,e);return r})}runExclusive(e,r=0){return this._semaphore.runExclusive(()=>e(),1,r)}isLocked(){return this._semaphore.isLocked()}waitForUnlock(e=0){return this._semaphore.waitForUnlock(1,e)}release(){this._semaphore.isLocked()&&this._semaphore.release();}cancel(){return this._semaphore.cancel()}};function de(t,e){let r=t.length,n=0,i=0,o=new St;return e({completed:n,errors:i,total:r}),t.map(s=>s.then(async a=>(await o.runExclusive(()=>{n++,e({completed:n,errors:i,total:r});}),a)).catch(async a=>{throw await o.runExclusive(()=>{n++,i++,e({completed:n,errors:i,total:r});}),a}))}function Di({result:t,sensitiveValues:e}){return t.steps.map(r=>Mi({sensitiveValues:e,step:r}))}function Mi({sensitiveValues:t,step:e}){let r=n=>n&&t?.length?scrubString({sensitiveValues:t,str:n}):n;return {category:e.category,duration:e.duration,error:e.error?{message:r(e.error.message)||\"Unknown error\",stack:r(e.error.stack)}:void 0,location:e.location?{column:e.location.column,file:e.location.file,line:e.location.line}:void 0,startedAt:new Date(e.startTime),steps:e.steps&&e.steps.length>0?e.steps.map(n=>Mi({sensitiveValues:t,step:n})):void 0,title:r(e.title)??e.title}}async function ki({fileData:t,maxRetries:e=3,uploadUrl:r}){await Ha(async()=>{let n=await fetch(r,{body:t,method:\"PUT\"});if(!n.ok)throw n.status>=400&&n.status<500?new AbortError(`Upload failed with status ${n.status}: ${n.statusText}`):new Error(`Upload failed with status ${n.status}: ${n.statusText}`)},{minTimeout:2e3,randomize:true,retries:e});}var va=process.env.STABLY_WS_URL||\"wss://api.stably.ai/reporter\",Gi=2*60*1e3,Ya=({notificationConfigs:t,suite:e})=>{if(!t||t.length===0)return;let r=new Set(e.allTests().map(i=>i.parent.project()?.name).filter(Boolean)),n=t.filter(i=>r.has(i.projectName));return n.length>0?n:void 0},za=t=>t?{configFile:t.configFile,forbidOnly:t.forbidOnly,fullyParallel:t.fullyParallel,globalSetup:t.globalSetup,globalTeardown:t.globalTeardown,globalTimeout:t.globalTimeout,grep:t.grep?.toString(),grepInvert:t.grepInvert?.toString(),maxFailures:t.maxFailures,metadata:t.metadata,preserveOutput:t.preserveOutput,quiet:t.quiet,reporter:t.reporter,reportSlowTests:t.reportSlowTests,rootDir:t.rootDir,shard:t.shard,updateSnapshots:t.updateSnapshots,version:t.version,webServer:t.webServer,workers:t.workers}:void 0,Ja=({absolutePath:t,rootDir:e})=>{if(e&&t.startsWith(e)){let r=t.slice(e.length);return r.startsWith(\"/\")?r.slice(1):r}return t},bt=class{wsClient;pendingOperations=[];pendingUploads=[];testSuiteRunId=\"\";createdSuiteRun;suiteData;testCases=[];testStepsMap=new Map;rootDir=\"\";isListMode=false;config;notificationConfigs;sensitiveValues;filteredNotificationConfigs;attachmentFiles=new Map;pendingUploadUrlRequests=new Map;constructor(e){let r=e?.apiKey??process.env.STABLY_API_KEY,n=e?.projectId??process.env.STABLY_PROJECT_ID;if(!r)throw new Error(\"STABLY_API_KEY is required. Provide it via options or environment variable.\");if(!n)throw new Error(\"STABLY_PROJECT_ID is required. Provide it via options or environment variable.\");if(this.notificationConfigs=e?.notificationConfigs,e?.sensitiveValues?.length){let i=filterSensitiveValues(e.sensitiveValues);this.sensitiveValues=[...i].sort((o,s)=>s.length-o.length);}this.wsClient=new rt({apiKey:r,maxBufferSize:1e3,maxReconnectAttempts:3,onError:i=>this.handleWebSocketError(i),onMessage:i=>this.handleWebSocketMessage(i),projectId:n,reconnectDelay:2e3,url:va});}onBegin(e,r){if(this.isListMode=process.argv.includes(\"--list\"),this.isListMode)return;r.allTests().length===0&&process.exit(1),this.config=e,this.testSuiteRunId=this.getSuiteRunId(e),this.rootDir=e.rootDir,this.suiteData=this.extractSuiteInfo(e,r);let i=Ya({notificationConfigs:this.notificationConfigs,suite:r});this.filteredNotificationConfigs=i,this.pendingOperations.push(this.wsClient.sendEvent({payload:{...this.suiteData,notificationRequest:i?{notificationConfigs:i,totalShards:this.config?.shard?.total}:void 0,status:\"running\"},type:\"suite_start\"}));}getSuiteRunId(e){return getCiRunKey()??e.metadata?.testSuiteRunId??(0, Y.createId)()}onTestBegin(e,r){if(this.isListMode)return;let n=this.extractTestCaseInfo(e,r);this.pendingOperations.push(this.wsClient.sendEvent({payload:{...n,status:n.expectedStatus===\"skipped\"?\"skipped\":\"running\"},type:\"test_start\"}));}onTestEnd(e,r){if(this.isListMode)return;let n=this.extractTestCaseInfo(e,r);this.testCases.push(n),this.testStepsMap.set(n.id,r);let i=Di({result:r,sensitiveValues:this.sensitiveValues}),o=[...r.attachments,{contentType:\"text/plain\",name:\"source-code\",path:e.location.file}],s=(async()=>{let a=await this.extractAttachmentMetadata({attachments:o,attemptNumber:n.attemptNumber,testId:n.id}),c,u;a.length>0&&(c=`${n.id}-${n.attemptNumber}`,u=new Promise(l=>{this.pendingUploadUrlRequests.set(c,l);}),this.pendingOperations.push(u));try{await this.wsClient.sendEvent({payload:{...n,attachments:a,steps:i},type:\"test_end\"});}catch(l){if(c&&u){let p=this.pendingUploadUrlRequests.get(c);p&&(p(),this.pendingUploadUrlRequests.delete(c));}throw l}})();this.pendingOperations.push(s);}async onEnd(e){if(this.isListMode)return;this.pendingOperations.push(this.wsClient.sendEvent({payload:{duration:e.duration,notificationRequest:this.filteredNotificationConfigs?{notificationConfigs:this.filteredNotificationConfigs,totalShards:this.config?.shard?.total}:void 0,status:e.status===\"timedout\"?\"timedOut\":e.status,suiteId:this.testSuiteRunId},type:\"suite_end\"})),intro(\"[Stably reporter] Waiting for pending tasks to finish...\");let r=spinner();r.start(\"Waiting for tasks to finish...\");let n=Promise.allSettled(de(this.pendingOperations,({completed:c,errors:u,total:l})=>{r.message(`${c}/${l} tasks finished${u>0?`, ${u} errors`:\"\"}`);})),i=new Promise((c,u)=>{setTimeout(()=>{u(new Error(`Tasks timeout: Some operations did not complete within ${Gi/1e3}s`));},Gi);});try{await Promise.race([n,i]);}catch(c){let u=c instanceof Error?c.message:String(c);console.warn(`[StablyAI reporter] Tasks timeout reached. Some operations may still be pending: ${u}`);}this.wsClient.flushBuffer(),r.stop(\"All tasks finished\");let o=spinner();o.start(\"Waiting for file uploads to finish...\"),await Promise.allSettled(de(this.pendingUploads,({completed:c,errors:u,total:l})=>{o.message(`${c}/${l} uploads finished${u>0?`, ${u} errors`:\"\"}`);})),o.stop(\"All file uploads finished\"),this.wsClient.close();let s=this.createdSuiteRun?.name||this.suiteData?.title||\"Test Suite\",a=e.status===\"failed\"||e.status===\"timedout\";outro(U.cyan(`\\u2728 Suite \"${U.bold(s)}\" run complete!${this.createdSuiteRun?`\n \\u{1F4CA} View results: ${U.bold(U.underline(this.createdSuiteRun.url))}`:\"\"}${a?`\n\n \\u{1F527} To auto-heal failed tests, run:\n ${U.bold(U.underline(`stably fix ${this.testSuiteRunId}`))}`:\"\"}`));}scrubSensitiveString(e){return !e||!this.sensitiveValues?.length?e:scrubString({sensitiveValues:this.sensitiveValues,str:e})}extractSuiteInfo(e,r){let n=wi(),i=Oi(),o=new Date;return {id:(0, Y.createId)(),projectSettings:za(e),startedAt:o,suiteId:this.testSuiteRunId,title:r.title||\"Playwright Test Suite\",createdAt:o,git:{branch:n.branch,commit:{message:n.commit.message,sha:n.commit.sha},pr:n.pr},isCI:n.isCI,shards:e.shard?.total??1,workers:e.workers,machineInfo:i,updatedAt:o}}extractTestCaseInfo(e,r){let n=Ja({absolutePath:e.location.file,rootDir:this.rootDir}),i=e.parent.project(),o=i?.name,s=i?.use?.defaultBrowserType;return {fullTitle:this.scrubSensitiveString(e.titlePath().join(\" \\u203A \"))??\"\",id:(0, Y.createId)(),location:`${n}:${e.location.line}:${e.location.column}`,suiteId:this.testSuiteRunId,testIdentifier:e.id,title:this.scrubSensitiveString(e.title)??e.title,browserName:s,duration:r.duration,expectedStatus:e.expectedStatus,finishedAt:r.startTime&&r.duration?new Date(r.startTime.getTime()+r.duration):void 0,outcome:e.outcome(),projectName:o,startedAt:new Date(r.startTime),status:r.status,attemptNumber:r.retry+1,maxRetries:e.retries,retryCount:r.retry,errorMessage:this.scrubSensitiveString(r.error?.message),errorStack:this.scrubSensitiveString(r.error?.stack),errorType:r.error?.value,annotations:e.annotations.length>0?e.annotations:void 0,tags:e.tags.length>0?e.tags:void 0}}async extractAttachmentMetadata({attachments:e,attemptNumber:r,testId:n}){let i=[];for(let o of e)try{let s;if(o.body)s=Buffer.from(o.body);else if(o.path)s=readFileSync(o.path);else continue;o.name===\"trace\"&&this.sensitiveValues&&this.sensitiveValues.length>0&&(s=Buffer.from(await scrubTrace({sensitiveValues:this.sensitiveValues,traceBuffer:s})));let c=(0,Y.createId)(),u=`${n}-${r}-${c}`;this.attachmentFiles.set(u,s),i.push({artifactId:c,attemptNumber:r,contentType:o.contentType,name:o.name,sizeBytes:s.length,testId:n});}catch(s){let a=s instanceof Error?s.message:String(s);console.error(`[StablyAI reporter] Failed to read attachment ${o.name}: ${a}`);}return i}handleWebSocketError(e){e.code===Pt.AUTHENTICATION_FAILED&&(console.error(U.bold(U.red(\"[StablyAI reporter] Could not authenticate with the server. Either the API Key or Project ID is invalid\"))),process.exit(1)),console.error(\"[StablyAI reporter] Could not connect to the server. Please check your internet connection and try again.\"),process.exit(1);}handleWebSocketMessage(e){if(e.type===\"suite_created\")this.createdSuiteRun={id:e.id,name:e.name,url:e.url};else if(e.type===\"upload_urls\"){let r=`${e.testId}-${e.attemptNumber}`,n=this.pendingUploadUrlRequests.get(r);if(!n)return;n(),this.pendingUploadUrlRequests.delete(r);let i=this.uploadAttachments(e.testId,e.attemptNumber,e.uploadUrls);this.pendingUploads.push(i);}}async uploadAttachments(e,r,n){let i=n.map(async({artifactId:o,name:s,uploadUrl:a})=>{let c=`${e}-${r}-${o}`,u=this.attachmentFiles.get(c);if(u)try{await ki({fileData:u,maxRetries:3,uploadUrl:a}),this.attachmentFiles.delete(c);}catch(l){let p=l instanceof Error?l.message:String(l);console.error(`[StablyAI reporter] Failed to upload ${s} after retries: ${p}`);}});await Promise.allSettled(i);}};function Qa(t){return [\"@stablyai/playwright-test/reporter\",t]}/*! Bundled license information:\n\n@noble/hashes/utils.js:\n (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)\n*/export{bt as StablyReporter,bt as default,Qa as stablyReporter};","import { isBinaryFile } from \"isbinaryfile\";\nimport type { Unzipped } from \"fflate\";\nimport { unzip, zip } from \"fflate\";\n\nimport { filterSensitiveValues } from \"./filter-sensitive-values\";\nimport { scrubJsonLinesFile, scrubTextFile } from \"./scrubbers/files\";\nimport { promisify } from \"node:util\";\n\nexport const unzipAsync = promisify(unzip);\nexport const zipAsync = promisify(zip);\n\n/**\n * Scrubs sensitive values from a Playwright trace zip file.\n *\n * @param traceBuffer - The raw trace.zip file (ArrayBuffer, Uint8Array, or Node.js Buffer)\n * @param sensitiveValues - Array of literal strings to redact\n * @returns The scrubbed trace.zip as a Uint8Array\n */\nexport async function scrubTrace({\n sensitiveValues,\n traceBuffer,\n}: {\n traceBuffer: ArrayBuffer | Uint8Array;\n sensitiveValues: readonly string[];\n}): Promise<Uint8Array> {\n // Step 1: Pre-filter and sort sensitive values (longest first to prevent partial replacements)\n const filteredValues = filterSensitiveValues(sensitiveValues);\n if (filteredValues.length === 0) {\n return new Uint8Array(traceBuffer);\n }\n const sortedValues = filteredValues.sort((a, b) => b.length - a.length);\n\n // Step 2: Unzip and process each file in parallel\n const files = await unzipAsync(new Uint8Array(traceBuffer));\n const entries = Object.entries(files);\n\n const scrubbedEntries = await Promise.all(\n entries.map(async ([filename, content]) => [\n filename,\n await scrubFile({\n content,\n filename,\n sensitiveValues: sortedValues,\n }),\n ]),\n );\n\n const scrubbedFiles: Unzipped = Object.fromEntries(scrubbedEntries);\n return zipAsync(scrubbedFiles);\n}\n\n/**\n * Routes a file to the appropriate scrubbing strategy based on its extension.\n */\nasync function scrubFile({\n content,\n filename,\n sensitiveValues,\n}: {\n filename: string;\n content: Uint8Array;\n sensitiveValues: readonly string[];\n}): Promise<Uint8Array> {\n const lower = filename.toLowerCase();\n\n // Route to appropriate scrubbing strategy based on file type\n return lower.endsWith(\".trace\") || lower.endsWith(\".network\")\n ? scrubJsonLinesFile({ content, sensitiveValues }) // JSON Lines files\n : lower.endsWith(\".html\") ||\n lower.endsWith(\".dat\") ||\n lower.endsWith(\".json\")\n ? scrubTextFile({ content, sensitiveValues }) // DOM snapshots and JSON resources\n : lower.startsWith(\"resources/\")\n ? scrubResourceFile({ content, sensitiveValues }) // Resource payloads - scrub if text\n : content; // Everything else (.stacks, binary artifacts) - pass through\n}\n\n// Scrubs sensitive values from a resource file.\n// Binary files are returned unchanged to avoid corrupting non-text formats.\nasync function scrubResourceFile({\n content,\n sensitiveValues,\n}: {\n content: Uint8Array;\n sensitiveValues: readonly string[];\n}): Promise<Uint8Array> {\n return (await isBinaryFile(Buffer.from(content)))\n ? content\n : scrubTextFile({ content, sensitiveValues });\n}\n","import { createRequire } from 'module';\nvar require = createRequire('/');\n// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\n// Mediocre shim\nvar Worker;\nvar workerAdd = \";var __w=require('worker_threads');__w.parentPort.on('message',function(m){onmessage({data:m})}),postMessage=function(m,t){__w.parentPort.postMessage(m,t)},close=process.exit;self=global\";\ntry {\n Worker = require('worker_threads').Worker;\n}\ncatch (e) {\n}\nvar wk = Worker ? function (c, _, msg, transfer, cb) {\n var done = false;\n var w = new Worker(c + workerAdd, { eval: true })\n .on('error', function (e) { return cb(e, null); })\n .on('message', function (m) { return cb(null, m); })\n .on('exit', function (c) {\n if (c && !done)\n cb(new Error('exited with code ' + c), null);\n });\n w.postMessage(msg, transfer);\n w.terminate = function () {\n done = true;\n return Worker.prototype.terminate.call(w);\n };\n return w;\n} : function (_, __, ___, ____, cb) {\n setImmediate(function () { return cb(new Error('async operations unsupported - update to Node 12+ (or Node 10-11 with the --experimental-worker CLI flag)'), null); });\n var NOP = function () { };\n return {\n terminate: NOP,\n postMessage: NOP\n };\n};\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new i32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 1; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n ,\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n // source length dict length\n var sl = dat.length, dl = dict ? dict.length : 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n // have to estimate size\n var resize = noBuf || st.i != 2;\n // no state\n var noSt = st.i;\n // Assumes roughly 33% compression ratio average\n if (noBuf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (resize)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n // don't reallocate for streams or user buffers\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return { t: et, l: 0 };\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return { t: v, l: 1 };\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n ++lcfreq[lclt[i] & 31];\n for (var i = 0; i < lcdt.length; ++i)\n ++lcfreq[lcdt[i] & 31];\n var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n var sym = syms[i];\n if (sym > 255) {\n var len = (sym >> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n var dst = sym & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[sym]), p += ll[sym];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n var s = st.z || dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var lst = st.l;\n var pos = (st.r || 0) & 7;\n if (lvl) {\n if (pos)\n w[0] = st.r >> 3;\n var opt = deo[lvl - 1];\n var n = opt >> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new i32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx blkpos\n var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n for (; i + 2 < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j & 32767;\n var pti = prev[ti];\n var cd = ti - pti & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one int32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n for (i = Math.max(i, wi); i < s; ++i) {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n if (!lst) {\n st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n // shft(pos) now 1 less if pos & 7 != 0\n pos -= 7;\n st.h = head, st.p = prev, st.i = i, st.w = wi;\n }\n }\n else {\n for (var i = st.w || 0; i < s + lst; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[(pos / 8) | 0] = lst;\n e = s;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n st.i = s;\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Adler32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n if (!st) {\n st = { l: 1 };\n if (opt.dictionary) {\n var dict = opt.dictionary.subarray(-32768);\n var newDat = new u8(dict.length + dat.length);\n newDat.set(dict);\n newDat.set(dat, dict.length);\n dat = newDat;\n st.w = dict.length;\n }\n }\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n fnStr = wcln(fns[i], fnStr, td_1);\n ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n }\n var td = mrg({}, ch[id].e);\n return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n out: o.size && new u8(o.size),\n dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) {\n if (ev.data.length) {\n strm.push(ev.data[0], ev.data[1]);\n postMessage([ev.data[0].length]);\n }\n else\n strm.flush();\n };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else if (!Array.isArray(dat))\n ext(dat);\n else if (dat.length == 1) {\n strm.queuedSize -= dat[0];\n if (strm.ondrain)\n strm.ondrain(dat[0]);\n }\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.queuedSize = 0;\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n strm.queuedSize += d.length;\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n if (flush) {\n strm.flush = function () { w.postMessage([]); };\n }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n if (o.dictionary) {\n var h = adler();\n h.p(o.dictionary);\n wbytes(c, 2, h.d());\n }\n};\n// zlib start\nvar zls = function (d, dict) {\n if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if ((d[1] >> 5 & 1) == +!dict)\n err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n // 98304 = 32768 (lookback) + 65536 (common chunk size)\n this.b = new u8(98304);\n if (this.o.dictionary) {\n var dict = this.o.dictionary.subarray(-32768);\n this.b.set(dict, 32768 - dict.length);\n this.s.i = 32768 - dict.length;\n }\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n var endLen = chunk.length + this.s.z;\n if (endLen > this.b.length) {\n if (endLen > 2 * this.b.length - 32768) {\n var newBuf = new u8(endLen & -32768);\n newBuf.set(this.b.subarray(0, this.s.z));\n this.b = newBuf;\n }\n var split = this.b.length - this.s.z;\n this.b.set(chunk.subarray(0, split), this.s.z);\n this.s.z = this.b.length;\n this.p(this.b, false);\n this.b.set(this.b.subarray(-32768));\n this.b.set(chunk.subarray(split), 32768);\n this.s.z = chunk.length - split + 32768;\n this.s.i = 32766, this.s.w = 32768;\n }\n else {\n this.b.set(chunk, this.s.z);\n this.s.z += chunk.length;\n }\n this.s.l = final & 1;\n if (this.s.z > this.s.w + 8191 || final) {\n this.p(this.b, final || false);\n this.s.w = this.s.i, this.s.i -= 2;\n }\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * deflated output for small inputs.\n */\n Deflate.prototype.flush = function () {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n this.p(this.b, false);\n this.s.w = this.s.i, this.s.i -= 2;\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6, 1);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n function Inflate(opts, cb) {\n // no StrmOpt here to avoid adding to workerizer\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate.prototype.c = function (final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n function AsyncInflate(opts, cb) {\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Inflate(ev.data);\n onmessage = astrm(strm);\n }, 7, 0);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, opts) {\n return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n this.l += chunk.length;\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * GZIPped output for small inputs.\n */\n Gzip.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8, 1);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n function Gunzip(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n }\n else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n // process concatenated GZIP\n if (this.s.f && !this.s.l && !final) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n this.push(new u8(0), final);\n }\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n function AsyncGunzip(opts, cb) {\n var _this = this;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gunzip(ev.data);\n strm.onmember = function (offset) { return postMessage(offset); };\n onmessage = astrm(strm);\n }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, opts) {\n var st = gzs(data);\n if (st + 8 > data.length)\n err(6, 'invalid gzip data');\n return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * zlibbed output for small inputs.\n */\n Zlib.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10, 1);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n function Unzlib(opts, cb) {\n Inflate.call(this, opts, cb);\n this.v = opts && opts.dictionary ? 2 : 1;\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 6 && !final)\n return;\n this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n function AsyncUnzlib(opts, cb) {\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Unzlib(ev.data);\n onmessage = astrm(strm);\n }, 11, 0);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, opts) {\n return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n function Decompress(opts, cb) {\n this.o = StrmOpt.call(this, opts, cb) || {};\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n }\n // init substream\n // overriden by AsyncDecompress\n Decompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (dat, final) {\n _this.ondata(dat, final);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(this.o)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(this.o)\n : new this.Z(this.o);\n this.i();\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n function AsyncDecompress(opts, cb) {\n Decompress.call(this, opts, cb);\n this.queuedSize = 0;\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n }\n AsyncDecompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (err, dat, final) {\n _this.ondata(err, dat, final);\n };\n this.s.ondrain = function (size) {\n _this.queuedSize -= size;\n if (_this.ondrain)\n _this.ondrain(size);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n this.queuedSize += chunk.length;\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, opts)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, opts)\n : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (val instanceof u8)\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return { s: r, r: slc(d, i - 1) };\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (final) {\n if (r.length)\n err(8);\n this.p = null;\n }\n else\n this.p = r;\n this.ondata(s, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td) {\n return td.decode(dat);\n }\n else {\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (r.length)\n err(8);\n return s;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n if (c != -1) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u, -1);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this.ondata(err, dat, final);\n _this.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this.d & 1))\n return;\n _this.u.splice(-1, 1);\n _this.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (data, final) {\n this.ondata(null, data, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this = this;\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (data, final) {\n try {\n this.i.push(data, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (data, final) {\n if (this.i.terminate)\n data = slc(data, 0);\n this.i.push(data, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var _a;\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n if (sc_1 == 4294967295) {\n _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n }\n else if (dd)\n sc_1 = -1;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this.k[0] == chks_3 && _this.c)\n _this.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n // Synchronously decompress under 512KB, or barely-compressed data\n if (su < 524288 || sc > 0.8 * su) {\n try {\n cbl(null, inflateSync(infl, { out: new u8(su) }));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n","/*\n * This filter should match checkly's ignore list: https://www.checklyhq.com/docs/platform/variables/\n * \"The characters / and * and the full or partial match of /artifact/, https://, http://, *********, and 123.\n * Values of the keys sha1, _sha1, pageref, downloadsPath, tracesDir, pageId and any string that ends with sha1\n * will not be scrubbed from the Playwright trace... Numbers are not scrubbed from the Playwright trace\"\n */\n\nconst SKIP_PATTERNS = [\n /^\\/$/, // Just a slash\n /^\\*+$/, // Just asterisks (single or multiple)\n /^[0-9]+$/, // Numbers (Checkly skips numbers in Playwright traces)\n // Note: ^[0-9]+$ already handles \"123\" as a numeric value, no need for explicit pattern\n] as const;\n\nconst SKIP_SUBSTRINGS = [\n \"/artifact/\", // Internal Playwright paths\n \"https://\", // Protocol markers should not be scrubbed\n \"http://\",\n \"*********\", // Placeholder value\n] as const;\n\nconst MIN_LENGTH = 3; // Skip very short values\n\nexport function filterSensitiveValues(values: readonly string[]): string[] {\n return values.filter(\n (value) =>\n !(\n value.length < MIN_LENGTH ||\n SKIP_PATTERNS.some((pattern) => pattern.test(value)) ||\n SKIP_SUBSTRINGS.some((sub) => value.includes(sub))\n ),\n );\n}\n","import { TextDecoder, TextEncoder } from \"node:util\";\n\nimport type { TraceEvent } from \"../trace-types\";\n\nimport { scrubTraceEvent } from \"./events\";\nimport { scrubString } from \"./primitives\";\n\n/**\n * Scrubs a JSON Lines file (like .trace or .network files).\n * Parses each line as JSON, scrubs it, and returns the result.\n */\nexport function scrubJsonLinesFile({\n content,\n sensitiveValues,\n}: {\n content: Uint8Array;\n sensitiveValues: readonly string[];\n}): Uint8Array {\n const decoder = new TextDecoder();\n const encoder = new TextEncoder();\n const text = decoder.decode(content);\n const lines = text.split(\"\\n\");\n\n const scrubbedLines = lines.map((line) => {\n if (!line.trim()) {\n return line;\n }\n\n try {\n const event: TraceEvent = JSON.parse(line);\n const scrubbed = scrubTraceEvent({ event, sensitiveValues });\n return JSON.stringify(scrubbed);\n } catch {\n // We've verified coverage of all 13 Playwright trace event types (see trace-types.ts).\n // The ts-pattern .exhaustive() provides compile-time guarantees, so this catch is\n // most likely malformed JSON rather than a missing event type.\n //\n // Fall back to text-based scrubbing rather than throwing or passing through:\n // - Throwing would fail the entire trace for one bad line\n // - Passing through unchanged could leak sensitive data\n // - Text-based scrubbing (replaceAll) ensures sensitive values are replaced\n //\n // The risk is false positives (e.g., scrubbing sha1 hashes that happen to match\n // a sensitive value), but that's safer than false negatives (leaking data).\n // If it truly is a malformed JSON, then the user probably wouldn't be able to see it via the trace anyway,\n // so the risk that scrubbing a false positive sensitive value would break the trace is acceptable.\n return scrubString({ sensitiveValues, str: line });\n }\n });\n\n return encoder.encode(scrubbedLines.join(\"\\n\"));\n}\n\n/**\n * Scrubs a text file by replacing all sensitive values.\n */\nexport function scrubTextFile({\n content,\n sensitiveValues,\n}: {\n content: Uint8Array;\n sensitiveValues: readonly string[];\n}): Uint8Array {\n const decoder = new TextDecoder();\n const encoder = new TextEncoder();\n const text = scrubString({ sensitiveValues, str: decoder.decode(content) });\n return encoder.encode(text);\n}\n","/**\n * Symbols used internally within ts-pattern to construct and discriminate\n * Guard, Not, and Select, and AnonymousSelect patterns\n *\n * Symbols have the advantage of not appearing in auto-complete suggestions in\n * user defined patterns, and eliminate the risk of property\n * overlap between ts-pattern internals and user defined patterns.\n *\n * These symbols have to be visible to tsc for type inference to work, but\n * users should not import them\n * @module\n * @private\n * @internal\n */\n\nexport const matcher = Symbol.for('@ts-pattern/matcher');\nexport type matcher = typeof matcher;\n\nexport const unset = Symbol.for('@ts-pattern/unset');\nexport type unset = typeof unset;\n\nexport const isVariadic = Symbol.for('@ts-pattern/isVariadic');\nexport type isVariadic = typeof isVariadic;\n\n// can't be a symbol because this key has to be enumerable.\nexport const anonymousSelectKey = '@ts-pattern/anonymous-select-key';\nexport type anonymousSelectKey = typeof anonymousSelectKey;\n\nexport const override = Symbol.for('@ts-pattern/override');\nexport type override = typeof override;\n","/**\n * @module\n * @private\n * @internal\n */\n\nimport * as symbols from './symbols';\nimport { SelectionType } from '../types/FindSelected';\nimport { Pattern, Matcher, MatcherType, AnyMatcher } from '../types/Pattern';\n\n// @internal\nexport const isObject = (value: unknown): value is Object =>\n Boolean(value && typeof value === 'object');\n\n// @internal\nexport const isMatcher = (\n x: unknown\n): x is Matcher<unknown, unknown, MatcherType, SelectionType> => {\n const pattern = x as Matcher<unknown, unknown, MatcherType, SelectionType>;\n return pattern && !!pattern[symbols.matcher];\n};\n\n// @internal\nconst isOptionalPattern = (\n x: unknown\n): x is Matcher<unknown, unknown, 'optional', SelectionType> => {\n return isMatcher(x) && x[symbols.matcher]().matcherType === 'optional';\n};\n\n// tells us if the value matches a given pattern.\n// @internal\nexport const matchPattern = (\n pattern: any,\n value: any,\n select: (key: string, value: unknown) => void\n): boolean => {\n if (isMatcher(pattern)) {\n const matcher = pattern[symbols.matcher]();\n const { matched, selections } = matcher.match(value);\n if (matched && selections) {\n Object.keys(selections).forEach((key) => select(key, selections[key]));\n }\n return matched;\n }\n\n if (isObject(pattern)) {\n if (!isObject(value)) return false;\n\n // Tuple pattern\n if (Array.isArray(pattern)) {\n if (!Array.isArray(value)) return false;\n let startPatterns = [];\n let endPatterns = [];\n let variadicPatterns: AnyMatcher[] = [];\n\n for (const i of pattern.keys()) {\n const subpattern = pattern[i];\n if (isMatcher(subpattern) && subpattern[symbols.isVariadic]) {\n variadicPatterns.push(subpattern);\n } else if (variadicPatterns.length) {\n endPatterns.push(subpattern);\n } else {\n startPatterns.push(subpattern);\n }\n }\n\n if (variadicPatterns.length) {\n if (variadicPatterns.length > 1) {\n throw new Error(\n `Pattern error: Using \\`...P.array(...)\\` several times in a single pattern is not allowed.`\n );\n }\n\n if (value.length < startPatterns.length + endPatterns.length) {\n return false;\n }\n\n const startValues = value.slice(0, startPatterns.length);\n const endValues =\n endPatterns.length === 0 ? [] : value.slice(-endPatterns.length);\n const middleValues = value.slice(\n startPatterns.length,\n endPatterns.length === 0 ? Infinity : -endPatterns.length\n );\n\n return (\n startPatterns.every((subPattern, i) =>\n matchPattern(subPattern, startValues[i], select)\n ) &&\n endPatterns.every((subPattern, i) =>\n matchPattern(subPattern, endValues[i], select)\n ) &&\n (variadicPatterns.length === 0\n ? true\n : matchPattern(variadicPatterns[0], middleValues, select))\n );\n }\n\n return pattern.length === value.length\n ? pattern.every((subPattern, i) =>\n matchPattern(subPattern, value[i], select)\n )\n : false;\n }\n\n return Reflect.ownKeys(pattern).every((k): boolean => {\n const subPattern = pattern[k];\n\n return (\n (k in value || isOptionalPattern(subPattern)) &&\n matchPattern(subPattern, value[k], select)\n );\n });\n }\n\n return Object.is(value, pattern);\n};\n\n// @internal\nexport const getSelectionKeys = (pattern: any): string[] => {\n if (isObject(pattern)) {\n if (isMatcher(pattern)) {\n return pattern[symbols.matcher]().getSelectionKeys?.() ?? [];\n }\n if (Array.isArray(pattern)) return flatMap(pattern, getSelectionKeys);\n return flatMap(Object.values(pattern), getSelectionKeys);\n }\n return [];\n};\n\n// @internal\nexport const flatMap = <a, b>(\n xs: readonly a[],\n f: (v: a) => readonly b[]\n): b[] => xs.reduce<b[]>((acc, x) => acc.concat(f(x)), []);\n","import { MatchedValue, Pattern, UnknownProperties } from './types/Pattern';\nimport * as P from './patterns';\nimport { matchPattern } from './internals/helpers';\nimport { WithDefault } from './types/helpers';\n\n/**\n * This constraint allows using additional properties\n * in object patterns. See \"should allow targetting unknown properties\"\n * unit test in `is-matching.test.ts`.\n */\ntype PatternConstraint<T> = T extends readonly any[]\n ? P.Pattern<T>\n : T extends object\n ? P.Pattern<T> & UnknownProperties\n : P.Pattern<T>;\n\n/**\n * `isMatching` takes pattern and returns a **type guard** function, cheching if a value matches this pattern.\n *\n * [Read documentation for `isMatching` on GitHub](https://github.com/gvergnaud/ts-pattern#ismatching)\n *\n * @example\n * const hasName = isMatching({ name: P.string })\n *\n * declare let input: unknown\n *\n * if (hasName(input)) {\n * // `input` inferred as { name: string }\n * return input.name\n * }\n */\nexport function isMatching<const p extends Pattern<unknown>>(\n pattern: p\n): (value: unknown) => value is P.infer<p>;\n/**\n * `isMatching` takes pattern and a value and checks if the value matches this pattern.\n *\n * [Read documentation for `isMatching` on GitHub](https://github.com/gvergnaud/ts-pattern#ismatching)\n *\n * @example\n * declare let input: unknown\n *\n * if (isMatching({ name: P.string }, input)) {\n * // `input` inferred as { name: string }\n * return input.name\n * }\n */\nexport function isMatching<const T, const P extends PatternConstraint<T>>(\n pattern: P,\n value: T\n): value is T & WithDefault<P.narrow<T, P>, P.infer<P>>;\n\nexport function isMatching<const p extends Pattern<any>>(\n ...args: [pattern: p, value?: any]\n): boolean | ((vale: any) => boolean) {\n if (args.length === 1) {\n const [pattern] = args;\n return (value: any): value is MatchedValue<any, P.infer<p>> =>\n matchPattern(pattern, value, () => {});\n }\n if (args.length === 2) {\n const [pattern, value] = args;\n return matchPattern(pattern, value, () => {});\n }\n\n throw new Error(\n `isMatching wasn't given the right number of arguments: expected 1 or 2, received ${args.length}.`\n );\n}\n","/**\n * The `P` module contains patterns for primitive types, wildcards and\n * other pattern-matching utilities.\n *\n * @module\n */\n\nimport { matchPattern, getSelectionKeys, flatMap } from './internals/helpers';\nimport * as symbols from './internals/symbols';\nimport { matcher } from './internals/symbols';\nimport { isMatching } from './is-matching';\nimport { ExtractPreciseValue } from './types/ExtractPreciseValue';\nimport { Fn } from './types/helpers';\nimport { InvertPattern } from './types/InvertPattern';\nimport {\n Pattern,\n UnknownValuePattern,\n OptionalP,\n ArrayP,\n MapP,\n SetP,\n AndP,\n OrP,\n NotP,\n GuardP,\n SelectP,\n AnonymousSelectP,\n GuardExcludeP,\n CustomP,\n Matcher,\n StringPattern,\n UnknownPattern,\n NumberPattern,\n BooleanPattern,\n BigIntPattern,\n NullishPattern,\n SymbolPattern,\n Chainable,\n BigIntChainable,\n NumberChainable,\n StringChainable,\n ArrayChainable,\n Variadic,\n NonNullablePattern,\n RecordP,\n} from './types/Pattern';\n\nexport type {\n /**\n * `Pattern<T>` is the type of all patterns\n * that can match a value of type `T`.\n */\n Pattern,\n\n /**\n * `unstable_Fn` can be used to created a\n * a Matchable instance – a custom type that\n * can be used as a pattern.\n *\n * @experimental This feature is unstable.\n */\n Fn as unstable_Fn,\n};\n\nexport { matcher };\n\n/**\n * A `Matchable` is an object implementing\n * the Matcher Protocol. It must have a `[P.matcher]: P.Matcher<NarrowFn>`\n * key, which defines how this object should be matched by TS-Pattern.\n *\n * @experimental This feature is unstable.\n *\n * @example\n * ```ts\n * class Some<T> implements P.unstable_Matchable {\n * [P.matcher](): P.unstable_Matcher<Some<T>>\n * }\n * ```\n */\nexport type unstable_Matchable<\n narrowedOrFn,\n input = unknown,\n pattern = never\n> = CustomP<input, pattern, narrowedOrFn>;\n\n/**\n * A `Matcher` is an object with `match` function, which\n * defines how this object should be matched by TS-Pattern.\n *\n * @experimental This feature is unstable.\n *\n * @example\n * ```ts\n * class Some<T> implements P.unstable_Matchable {\n * [P.matcher](): P.unstable_Matcher<Some<T>>\n * }\n * ```\n */\nexport type unstable_Matcher<\n narrowedOrFn,\n input = unknown,\n pattern = never\n> = ReturnType<CustomP<input, pattern, narrowedOrFn>[matcher]>;\n\n/**\n * `P.infer<typeof somePattern>` will return the type of the value\n * matched by this pattern.\n *\n * [Read the documentation for `P.infer` on GitHub](https://github.com/gvergnaud/ts-pattern#pinfer)\n *\n * @example\n * const userPattern = { name: P.string }\n * type User = P.infer<typeof userPattern>\n */\nexport type infer<pattern> = InvertPattern<NoInfer<pattern>, unknown>;\n\n/**\n * `P.narrow<Input, Pattern>` will narrow the input type to only keep\n * the set of values that are compatible with the provided pattern type.\n *\n * [Read the documentation for `P.narrow` on GitHub](https://github.com/gvergnaud/ts-pattern#pnarrow)\n *\n * @example\n * type Input = ['a' | 'b' | 'c', 'a' | 'b' | 'c']\n * const Pattern = ['a', P.union('a', 'b')] as const\n *\n * type Narrowed = P.narrow<Input, typeof Pattern>\n * // ^? ['a', 'a' | 'b']\n */\nexport type narrow<input, pattern> = ExtractPreciseValue<\n input,\n InvertPattern<pattern, input>\n>;\n\nfunction chainable<pattern extends Matcher<any, any, any, any, any>>(\n pattern: pattern\n): Chainable<pattern> {\n return Object.assign(pattern, {\n optional: () => optional(pattern),\n and: (p2: any) => intersection(pattern, p2),\n or: (p2: any) => union(pattern, p2),\n select: (key: any) =>\n key === undefined ? select(pattern) : select(key, pattern),\n }) as Chainable<pattern>;\n}\n\nconst variadic = <pattern extends {}>(pattern: pattern): Variadic<pattern> =>\n Object.assign(pattern, {\n [Symbol.iterator](): Iterator<pattern, void, undefined> {\n let i = 0;\n const variadicPattern = Object.assign(pattern, {\n [symbols.isVariadic]: true,\n });\n const values: IteratorResult<pattern, void>[] = [\n { value: variadicPattern, done: false },\n { done: true, value: undefined },\n ];\n return {\n next: () => values[i++] ?? values.at(-1)!,\n };\n },\n });\n\nfunction arrayChainable<pattern extends Matcher<any, any, any, any, any>>(\n pattern: pattern\n): ArrayChainable<pattern> {\n return Object.assign(variadic(pattern), {\n optional: () => arrayChainable(optional(pattern)),\n select: (key: any) =>\n arrayChainable(\n key === undefined ? select(pattern) : select(key, pattern)\n ),\n }) as any;\n}\n\n/**\n * `P.optional(subpattern)` takes a sub pattern and returns a pattern which matches if the\n * key is undefined or if it is defined and the sub pattern matches its value.\n *\n * [Read the documentation for `P.optional` on GitHub](https://github.com/gvergnaud/ts-pattern#poptional-patterns)\n *\n * @example\n * match(value)\n * .with({ greeting: P.optional('Hello') }, () => 'will match { greeting?: \"Hello\" }')\n */\nexport function optional<\n input,\n const pattern extends unknown extends input\n ? UnknownValuePattern\n : Pattern<input>\n>(pattern: pattern): Chainable<OptionalP<input, pattern>, 'optional'> {\n return chainable({\n [matcher]() {\n return {\n match: <UnknownInput>(value: UnknownInput | input) => {\n let selections: Record<string, unknown[]> = {};\n const selector = (key: string, value: any) => {\n selections[key] = value;\n };\n if (value === undefined) {\n getSelectionKeys(pattern).forEach((key) =>\n selector(key, undefined)\n );\n return { matched: true, selections };\n }\n const matched = matchPattern(pattern, value, selector);\n return { matched, selections };\n },\n getSelectionKeys: () => getSelectionKeys(pattern),\n matcherType: 'optional',\n };\n },\n });\n}\n\ntype UnwrapArray<xs> = xs extends readonly (infer x)[] ? x : never;\n\ntype UnwrapSet<xs> = xs extends Set<infer x> ? x : never;\n\ntype UnwrapMapKey<xs> = xs extends Map<infer k, any> ? k : never;\n\ntype UnwrapMapValue<xs> = xs extends Map<any, infer v> ? v : never;\n\ntype UnwrapRecordKey<xs> = xs extends Record<infer k, any> ? k : never;\n\ntype UnwrapRecordValue<xs> = xs extends Record<any, infer v> ? v : never;\n\ntype WithDefault<a, b> = [a] extends [never] ? b : a;\n\n/**\n * `P.array(subpattern)` takes a sub pattern and returns a pattern, which matches\n * arrays if all their elements match the sub pattern.\n *\n * [Read the documentation for `P.array` on GitHub](https://github.com/gvergnaud/ts-pattern#parray-patterns)\n *\n * @example\n * match(value)\n * .with({ users: P.array({ name: P.string }) }, () => 'will match { name: string }[]')\n */\nexport function array<input>(): ArrayChainable<ArrayP<input, unknown>>;\nexport function array<\n input,\n const pattern extends Pattern<WithDefault<UnwrapArray<input>, unknown>>\n>(pattern: pattern): ArrayChainable<ArrayP<input, pattern>>;\nexport function array(\n ...args: [pattern?: any]\n): ArrayChainable<ArrayP<any, any>> {\n return arrayChainable({\n [matcher]() {\n return {\n match: (value: any) => {\n if (!Array.isArray(value)) return { matched: false };\n\n if (args.length === 0) return { matched: true };\n\n const pattern = args[0];\n let selections: Record<string, unknown[]> = {};\n\n if (value.length === 0) {\n getSelectionKeys(pattern).forEach((key) => {\n selections[key] = [];\n });\n return { matched: true, selections };\n }\n\n const selector = (key: string, value: unknown) => {\n selections[key] = (selections[key] || []).concat([value]);\n };\n\n const matched = value.every((v) =>\n matchPattern(pattern, v, selector)\n );\n\n return { matched, selections };\n },\n getSelectionKeys: () =>\n args.length === 0 ? [] : getSelectionKeys(args[0]),\n };\n },\n });\n}\n\n/**\n * `P.set(subpattern)` takes a sub pattern and returns a pattern that matches\n * sets if all their elements match the sub pattern.\n *\n * [Read `P.set` documentation on GitHub](https://github.com/gvergnaud/ts-pattern#pset-patterns)\n *\n * @example\n * match(value)\n * .with({ users: P.set(P.string) }, () => 'will match Set<string>')\n */\nexport function set<input>(): Chainable<SetP<input, unknown>>;\nexport function set<\n input,\n const pattern extends Pattern<WithDefault<UnwrapSet<input>, unknown>>\n>(pattern: pattern): Chainable<SetP<input, pattern>>;\nexport function set<\n input,\n const pattern extends Pattern<WithDefault<UnwrapSet<input>, unknown>>\n>(...args: [pattern?: pattern]): Chainable<SetP<input, pattern>> {\n return chainable({\n [matcher]() {\n return {\n match: <UnknownInput>(value: UnknownInput | input) => {\n if (!(value instanceof Set)) return { matched: false };\n\n let selections: Record<string, unknown[]> = {};\n\n if (value.size === 0) {\n return { matched: true, selections };\n }\n\n if (args.length === 0) return { matched: true };\n\n const selector = (key: string, value: unknown) => {\n selections[key] = (selections[key] || []).concat([value]);\n };\n\n const pattern = args[0];\n\n const matched = setEvery(value, (v) =>\n matchPattern(pattern, v, selector)\n );\n\n return { matched, selections };\n },\n getSelectionKeys: () =>\n args.length === 0 ? [] : getSelectionKeys(args[0]),\n };\n },\n });\n}\n\nconst setEvery = <T>(set: Set<T>, predicate: (value: T) => boolean) => {\n for (const value of set) {\n if (predicate(value)) continue;\n return false;\n }\n return true;\n};\n\n/**\n * `P.map(keyPattern, valuePattern)` takes a subpattern to match against the\n * key, a subpattern to match against the value and returns a pattern that\n * matches on maps where all elements inside the map match those two\n * subpatterns.\n *\n * [Read `P.map` documentation on GitHub](https://github.com/gvergnaud/ts-pattern#pmap-patterns)\n *\n * @example\n * match(value)\n * .with({ users: P.map(P.map(P.string, P.number)) }, (map) => `map's type is Map<string, number>`)\n */\nexport function map<input>(): Chainable<MapP<input, unknown, unknown>>;\nexport function map<\n input,\n const pkey extends Pattern<WithDefault<UnwrapMapKey<input>, unknown>>,\n const pvalue extends Pattern<WithDefault<UnwrapMapValue<input>, unknown>>\n>(patternKey: pkey, patternValue: pvalue): Chainable<MapP<input, pkey, pvalue>>;\nexport function map<\n input,\n const pkey extends Pattern<WithDefault<UnwrapMapKey<input>, unknown>>,\n const pvalue extends Pattern<WithDefault<UnwrapMapValue<input>, unknown>>\n>(\n ...args: [patternKey?: pkey, patternValue?: pvalue]\n): Chainable<MapP<input, pkey, pvalue>> {\n return chainable({\n [matcher]() {\n return {\n match: <UnknownInput>(value: UnknownInput | input) => {\n if (!(value instanceof Map)) return { matched: false };\n\n let selections: Record<string, unknown[]> = {};\n\n if (value.size === 0) {\n return { matched: true, selections };\n }\n\n const selector = (key: string, value: unknown) => {\n selections[key] = (selections[key] || []).concat([value]);\n };\n\n if (args.length === 0) return { matched: true };\n if (args.length === 1) {\n throw new Error(\n `\\`P.map\\` wasn\\'t given enough arguments. Expected (key, value), received ${args[0]?.toString()}`\n );\n }\n const [patternKey, patternValue] = args;\n\n const matched = mapEvery(value, (v, k) => {\n const keyMatch = matchPattern(patternKey, k, selector);\n const valueMatch = matchPattern(patternValue, v, selector);\n return keyMatch && valueMatch;\n });\n\n return { matched, selections };\n },\n getSelectionKeys: () =>\n args.length === 0\n ? []\n : [...getSelectionKeys(args[0]), ...getSelectionKeys(args[1])],\n };\n },\n });\n}\n\nconst mapEvery = <K, T>(\n map: Map<K, T>,\n predicate: (value: T, key: K) => boolean\n) => {\n for (const [key, value] of map.entries()) {\n if (predicate(value, key)) continue;\n return false;\n }\n return true;\n};\n\n/**\n * `P.record(keyPattern, valuePattern)` takes a subpattern to match against the\n * key, a subpattern to match against the value and returns a pattern that\n * matches on objects where all entries match those two\n * subpatterns.\n *\n * [Read `P.record` documentation on GitHub](https://github.com/gvergnaud/ts-pattern#precord-patterns)\n *\n * @example\n * match(value)\n * .with({ users: P.record(P.string, P.number) }, (obj) => `object's type is Record<string, number>`)\n */\nexport function record<\n input,\n const pvalue extends Pattern<UnwrapRecordValue<input>>\n>(patternValue: pvalue): Chainable<RecordP<input, StringPattern, pvalue>>;\nexport function record<\n input,\n const pkey extends Pattern<WithDefault<UnwrapRecordKey<input>, PropertyKey>>,\n const pvalue extends Pattern<WithDefault<UnwrapRecordValue<input>, unknown>>\n>(\n patternKey: pkey,\n patternValue?: pvalue\n): Chainable<RecordP<input, pkey, pvalue>>;\nexport function record(\n ...args: [patternKey?: unknown, patternValue?: unknown]\n): Chainable<RecordP<unknown, unknown, unknown>> {\n return chainable({\n [matcher]() {\n return {\n match: (value: unknown) => {\n if (\n value === null ||\n typeof value !== 'object' ||\n Array.isArray(value)\n ) {\n return { matched: false };\n }\n\n if (args.length === 0) {\n throw new Error(\n `\\`P.record\\` wasn\\'t given enough arguments. Expected (value) or (key, value), received ${args[0]?.toString()}`\n );\n }\n\n let selections: Record<string, unknown[]> = {};\n\n const selector = (key: string, value: unknown) => {\n selections[key] = (selections[key] || []).concat([value]);\n };\n\n const [patternKey, patternValue] =\n args.length === 1 ? [string, args[0]] : args;\n\n const matched = recordEvery(value, (k, v) => {\n // since number keys are coerced to strings, we need to coerce them back to numbers if the pattern is `number`\n const coercedKey =\n typeof k === 'string' && !Number.isNaN(Number(k))\n ? Number(k)\n : null;\n\n const coercedKeyMatch =\n coercedKey !== null\n ? matchPattern(patternKey, coercedKey, selector)\n : false;\n\n const keyMatch = matchPattern(patternKey, k, selector);\n\n const valueMatch = matchPattern(patternValue, v, selector);\n\n return (keyMatch || coercedKeyMatch) && valueMatch;\n });\n\n return { matched, selections };\n },\n getSelectionKeys: () =>\n args.length === 0\n ? []\n : [...getSelectionKeys(args[0]), ...getSelectionKeys(args[1])],\n };\n },\n });\n}\n\nconst recordEvery = <K extends PropertyKey, T>(\n record: Record<K, T>,\n predicate: (key: K, value: T) => boolean\n) => {\n const keys = Reflect.ownKeys(record);\n for (const key of keys) {\n if (predicate(key as K, record[key as K] as T)) continue;\n return false;\n }\n return true;\n};\n\n/**\n * `P.intersection(...patterns)` returns a pattern which matches\n * only if **every** patterns provided in parameter match the input.\n *\n * [Read the documentation for `P.intersection` on GitHub](https://github.com/gvergnaud/ts-pattern#pintersection-patterns)\n *\n * @example\n * match(value)\n * .with(\n * {\n * user: P.intersection(\n * { firstname: P.string },\n * { lastname: P.string },\n * { age: P.when(age => age > 21) }\n * )\n * },\n * ({ user }) => 'will match { firstname: string, lastname: string, age: number } if age > 21'\n * )\n */\nexport function intersection<\n input,\n const patterns extends readonly [Pattern<input>, ...Pattern<input>[]]\n>(...patterns: patterns): Chainable<AndP<input, patterns>> {\n return chainable({\n [matcher]: () => ({\n match: (value) => {\n let selections: Record<string, unknown[]> = {};\n const selector = (key: string, value: any) => {\n selections[key] = value;\n };\n const matched = (patterns as readonly UnknownValuePattern[]).every(\n (p) => matchPattern(p, value, selector)\n );\n return { matched, selections };\n },\n getSelectionKeys: () =>\n flatMap(patterns as readonly UnknownValuePattern[], getSelectionKeys),\n matcherType: 'and',\n }),\n });\n}\n\n/**\n * `P.union(...patterns)` returns a pattern which matches\n * if **at least one** of the patterns provided in parameter match the input.\n *\n * [Read the documentation for `P.union` on GitHub](https://github.com/gvergnaud/ts-pattern#punion-patterns)\n *\n * @example\n * match(value)\n * .with(\n * { type: P.union('a', 'b', 'c') },\n * ({ type }) => 'will match { type: \"a\" | \"b\" | \"c\" }'\n * )\n */\nexport function union<\n input,\n const patterns extends readonly [Pattern<input>, ...Pattern<input>[]]\n>(...patterns: patterns): Chainable<OrP<input, patterns>> {\n return chainable({\n [matcher]: () => ({\n match: <UnknownInput>(value: UnknownInput | input) => {\n let selections: Record<string, unknown[]> = {};\n const selector = (key: string, value: any) => {\n selections[key] = value;\n };\n flatMap(\n patterns as readonly UnknownValuePattern[],\n getSelectionKeys\n ).forEach((key) => selector(key, undefined));\n const matched = (patterns as readonly UnknownValuePattern[]).some((p) =>\n matchPattern(p, value, selector)\n );\n return { matched, selections };\n },\n getSelectionKeys: () =>\n flatMap(patterns as readonly UnknownValuePattern[], getSelectionKeys),\n matcherType: 'or',\n }),\n });\n}\n\n/**\n * `P.not(pattern)` returns a pattern which matches if the sub pattern\n * doesn't match.\n *\n * [Read the documentation for `P.not` on GitHub](https://github.com/gvergnaud/ts-pattern#pnot-patterns)\n *\n * @example\n * match<{ a: string | number }>(value)\n * .with({ a: P.not(P.string) }, (x) => 'will match { a: number }'\n * )\n */\n\nexport function not<\n input,\n const pattern extends Pattern<input> | UnknownValuePattern\n>(pattern: pattern): Chainable<NotP<input, pattern>> {\n return chainable({\n [matcher]: () => ({\n match: <UnknownInput>(value: UnknownInput | input) => ({\n matched: !matchPattern(pattern, value, () => {}),\n }),\n getSelectionKeys: () => [],\n matcherType: 'not',\n }),\n });\n}\n\n/**\n * `P.when((value) => boolean)` returns a pattern which matches\n * if the predicate returns true for the current input.\n *\n * [Read the documentation for `P.when` on GitHub](https://github.com/gvergnaud/ts-pattern#pwhen-patterns)\n *\n * @example\n * match<{ age: number }>(value)\n * .with({ age: P.when(age => age > 21) }, (x) => 'will match if value.age > 21'\n * )\n */\nexport function when<input, predicate extends (value: input) => unknown>(\n predicate: predicate\n): GuardP<\n input,\n predicate extends (value: any) => value is infer narrowed ? narrowed : never\n>;\nexport function when<input, narrowed extends input, excluded>(\n predicate: (input: input) => input is narrowed\n): GuardExcludeP<input, narrowed, excluded>;\nexport function when<input, predicate extends (value: input) => unknown>(\n predicate: predicate\n): GuardP<\n input,\n predicate extends (value: any) => value is infer narrowed ? narrowed : never\n> {\n return {\n [matcher]: () => ({\n match: <UnknownInput>(value: UnknownInput | input) => ({\n matched: Boolean(predicate(value as input)),\n }),\n }),\n };\n}\n\n/**\n * `P.select()` is a pattern which will always match,\n * and will inject the selected piece of input in the handler function.\n *\n * [Read the documentation for `P.select` on GitHub](https://github.com/gvergnaud/ts-pattern#pselect-patterns)\n *\n * @example\n * match<{ age: number }>(value)\n * .with({ age: P.select() }, (age) => 'age: number'\n * )\n */\nexport function select(): Chainable<AnonymousSelectP, 'select' | 'or' | 'and'>;\nexport function select<\n input,\n const patternOrKey extends\n | string\n | (unknown extends input ? UnknownValuePattern : Pattern<input>)\n>(\n patternOrKey: patternOrKey\n): patternOrKey extends string\n ? Chainable<SelectP<patternOrKey, 'select' | 'or' | 'and'>>\n : Chainable<\n SelectP<symbols.anonymousSelectKey, input, patternOrKey>,\n 'select' | 'or' | 'and'\n >;\nexport function select<\n input,\n const pattern extends unknown extends input\n ? UnknownValuePattern\n : Pattern<input>,\n const k extends string\n>(\n key: k,\n pattern: pattern\n): Chainable<SelectP<k, input, pattern>, 'select' | 'or' | 'and'>;\nexport function select(\n ...args: [keyOrPattern?: unknown | string, pattern?: unknown]\n): Chainable<SelectP<string>, 'select' | 'or' | 'and'> {\n const key: string | undefined =\n typeof args[0] === 'string' ? args[0] : undefined;\n const pattern: unknown =\n args.length === 2\n ? args[1]\n : typeof args[0] === 'string'\n ? undefined\n : args[0];\n return chainable({\n [matcher]() {\n return {\n match: (value) => {\n let selections: Record<string, unknown> = {\n [key ?? symbols.anonymousSelectKey]: value,\n };\n const selector = (key: string, value: any) => {\n selections[key] = value;\n };\n return {\n matched:\n pattern === undefined\n ? true\n : matchPattern(pattern, value, selector),\n selections: selections,\n };\n },\n getSelectionKeys: () =>\n [key ?? symbols.anonymousSelectKey].concat(\n pattern === undefined ? [] : getSelectionKeys(pattern)\n ),\n };\n },\n });\n}\n\nfunction isUnknown(x: unknown): x is unknown {\n return true;\n}\n\nfunction isNumber<T>(x: T | number): x is number {\n return typeof x === 'number';\n}\n\nfunction isString<T>(x: T | string): x is string {\n return typeof x === 'string';\n}\n\nfunction isBoolean<T>(x: T | boolean): x is boolean {\n return typeof x === 'boolean';\n}\n\nfunction isBigInt<T>(x: T | bigint): x is bigint {\n return typeof x === 'bigint';\n}\n\nfunction isSymbol<T>(x: T | symbol): x is symbol {\n return typeof x === 'symbol';\n}\n\nfunction isNullish<T>(x: T | null | undefined): x is null | undefined {\n return x === null || x === undefined;\n}\n\nfunction isNonNullable(x: unknown): x is {} {\n return x !== null && x !== undefined;\n}\n\ntype AnyConstructor = abstract new (...args: any[]) => any;\n\nfunction isInstanceOf<T extends AnyConstructor>(classConstructor: T) {\n return (val: unknown): val is InstanceType<T> =>\n val instanceof classConstructor;\n}\n\n/**\n * `P.any` is a wildcard pattern, matching **any value**.\n *\n * [Read the documentation for `P.any` on GitHub](https://github.com/gvergnaud/ts-pattern#p_-wildcard)\n *\n * @example\n * match(value)\n * .with(P.any, () => 'will always match')\n */\nexport const any: UnknownPattern = chainable(when(isUnknown));\n\n/**\n * `P.unknown` is a wildcard pattern, matching **unknown value**.\n *\n * [Read the documentation for `P.unknown` on GitHub](https://github.com/gvergnaud/ts-pattern#p_-wildcard)\n *\n * @example\n * match(value)\n * .with(P.unknown, () => 'will always match')\n */\nexport const unknown: UnknownPattern = chainable(when(isUnknown));\n\n/**\n * `P._` is a wildcard pattern, matching **any value**.\n * It's an alias to `P.any`.\n *\n * [Read the documentation for `P._` on GitHub](https://github.com/gvergnaud/ts-pattern#p_-wildcard)\n *\n * @example\n * match(value)\n * .with(P._, () => 'will always match')\n */\nexport const _ = any;\n\n/**\n * `P.string.startsWith(start)` is a pattern, matching **strings** starting with `start`.\n *\n * [Read the documentation for `P.string.startsWith` on GitHub](https://github.com/gvergnaud/ts-pattern#pstringstartsWith)\n *\n * @example\n * match(value)\n * .with(P.string.startsWith('A'), () => 'value starts with an A')\n */\n\nconst startsWith = <input, const start extends string>(\n start: start\n): GuardP<input, `${start}${string}`> =>\n when((value) => isString(value) && value.startsWith(start));\n\n/**\n * `P.string.endsWith(end)` is a pattern, matching **strings** ending with `end`.\n *\n * [Read the documentation for `P.string.endsWith` on GitHub](https://github.com/gvergnaud/ts-pattern#pstringendsWith)\n *\n * @example\n * match(value)\n * .with(P.string.endsWith('!'), () => 'value ends with an !')\n */\nconst endsWith = <input, const end extends string>(\n end: end\n): GuardP<input, `${string}${end}`> =>\n when((value) => isString(value) && value.endsWith(end));\n\n/**\n * `P.string.minLength(min)` is a pattern, matching **strings** with at least `min` characters.\n *\n * [Read the documentation for `P.string.minLength` on GitHub](https://github.com/gvergnaud/ts-pattern#pstringminLength)\n *\n * @example\n * match(value)\n * .with(P.string.minLength(10), () => 'string with more length >= 10')\n */\nconst minLength = <const min extends number>(min: min) =>\n when((value) => isString(value) && value.length >= min);\n\n/**\n * `P.string.length(len)` is a pattern, matching **strings** with exactly `len` characters.\n *\n * [Read the documentation for `P.string.length` on GitHub](https://github.com/gvergnaud/ts-pattern#pstringlength)\n *\n * @example\n * match(value)\n * .with(P.string.length(10), () => 'strings with length === 10')\n */\nconst length = <const len extends number>(len: len) =>\n when((value) => isString(value) && value.length === len);\n\n/**\n * `P.string.maxLength(max)` is a pattern, matching **strings** with at most `max` characters.\n *\n * [Read the documentation for `P.string.maxLength` on GitHub](https://github.com/gvergnaud/ts-pattern#pstringmaxLength)\n *\n * @example\n * match(value)\n * .with(P.string.maxLength(10), () => 'string with more length <= 10')\n */\nconst maxLength = <const max extends number>(max: max) =>\n when((value) => isString(value) && value.length <= max);\n\n/**\n * `P.string.includes(substr)` is a pattern, matching **strings** containing `substr`.\n *\n * [Read the documentation for `P.string.includes` on GitHub](https://github.com/gvergnaud/ts-pattern#pstringincludes)\n *\n * @example\n * match(value)\n * .with(P.string.includes('http'), () => 'value contains http')\n */\nconst includes = <input, const substr extends string>(\n substr: substr\n): GuardExcludeP<input, string, never> =>\n when((value) => isString(value) && value.includes(substr));\n\n/**\n * `P.string.regex(expr)` is a pattern, matching **strings** that `expr` regular expression.\n *\n * [Read the documentation for `P.string.regex` on GitHub](https://github.com/gvergnaud/ts-pattern#pstringregex)\n *\n * @example\n * match(value)\n * .with(P.string.regex(/^https?:\\/\\//), () => 'url')\n */\nconst regex = <input, const expr extends string | RegExp>(\n expr: expr\n): GuardExcludeP<input, string, never> =>\n when((value) => isString(value) && Boolean(value.match(expr)));\n\nconst stringChainable = <pattern extends Matcher<any, any, any, any, any>>(\n pattern: pattern\n): StringChainable<pattern> =>\n Object.assign(chainable(pattern), {\n startsWith: (str: string) =>\n stringChainable(intersection(pattern, startsWith(str))),\n endsWith: (str: string) =>\n stringChainable(intersection(pattern, endsWith(str))),\n minLength: (min: number) =>\n stringChainable(intersection(pattern, minLength(min))),\n length: (len: number) =>\n stringChainable(intersection(pattern, length(len))),\n maxLength: (max: number) =>\n stringChainable(intersection(pattern, maxLength(max))),\n includes: (str: string) =>\n stringChainable(intersection(pattern, includes(str))),\n regex: (str: string) => stringChainable(intersection(pattern, regex(str))),\n }) as any;\n\n/**\n * `P.string` is a wildcard pattern, matching any **string**.\n *\n * [Read the documentation for `P.string` on GitHub](https://github.com/gvergnaud/ts-pattern#pstring-wildcard)\n *\n * @example\n * match(value)\n * .with(P.string, () => 'will match on strings')\n */\nexport const string: StringPattern = stringChainable(when(isString));\n\n/**\n * `P.number.between(min, max)` matches **numbers** between `min` and `max`,\n * equal to min or equal to max.\n *\n * [Read the documentation for `P.number.between` on GitHub](https://github.com/gvergnaud/ts-pattern#pnumberbetween)\n *\n * @example\n * match(value)\n * .with(P.number.between(0, 10), () => '0 <= numbers <= 10')\n */\nconst between = <input, const min extends number, const max extends number>(\n min: min,\n max: max\n): GuardExcludeP<input, number, never> =>\n when((value) => isNumber(value) && min <= value && max >= value);\n\n/**\n * `P.number.lt(max)` matches **numbers** smaller than `max`.\n *\n * [Read the documentation for `P.number.lt` on GitHub](https://github.com/gvergnaud/ts-pattern#pnumberlt)\n *\n * @example\n * match(value)\n * .with(P.number.lt(10), () => 'numbers < 10')\n */\nconst lt = <input, const max extends number>(\n max: max\n): GuardExcludeP<input, number, never> =>\n when((value) => isNumber(value) && value < max);\n\n/**\n * `P.number.gt(min)` matches **numbers** greater than `min`.\n *\n * [Read the documentation for `P.number.gt` on GitHub](https://github.com/gvergnaud/ts-pattern#pnumbergt)\n *\n * @example\n * match(value)\n * .with(P.number.gt(10), () => 'numbers > 10')\n */\nconst gt = <input, const min extends number>(\n min: min\n): GuardExcludeP<input, number, never> =>\n when((value) => isNumber(value) && value > min);\n\n/**\n * `P.number.lte(max)` matches **numbers** smaller than or equal to `max`.\n *\n * [Read the documentation for `P.number.lte` on GitHub](https://github.com/gvergnaud/ts-pattern#pnumberlte)\n *\n * @example\n * match(value)\n * .with(P.number.lte(10), () => 'numbers <= 10')\n */\nconst lte = <input, const max extends number>(\n max: max\n): GuardExcludeP<input, number, never> =>\n when((value) => isNumber(value) && value <= max);\n\n/**\n * `P.number.gte(min)` matches **numbers** greater than or equal to `min`.\n *\n * [Read the documentation for `P.number.gte` on GitHub](https://github.com/gvergnaud/ts-pattern#pnumbergte)\n *\n * @example\n * match(value)\n * .with(P.number.gte(10), () => 'numbers >= 10')\n */\nconst gte = <input, const min extends number>(\n min: min\n): GuardExcludeP<input, number, never> =>\n when((value) => isNumber(value) && value >= min);\n\n/**\n * `P.number.int()` matches **integer** numbers.\n *\n * [Read the documentation for `P.number.int()` on GitHub](https://github.com/gvergnaud/ts-pattern#pnumberint)\n *\n * @example\n * match(value)\n * .with(P.number.int(), () => 'an integer')\n */\nconst int = <input>(): GuardExcludeP<input, number, never> =>\n when((value) => isNumber(value) && Number.isInteger(value));\n\n/**\n * `P.number.finite` matches **finite numbers**.\n *\n * [Read the documentation for `P.number.finite` on GitHub](https://github.com/gvergnaud/ts-pattern#pnumberfinite)\n *\n * @example\n * match(value)\n * .with(P.number.finite, () => 'not Infinity')\n */\nconst finite = <input>(): GuardExcludeP<input, number, never> =>\n when((value) => isNumber(value) && Number.isFinite(value));\n\n/**\n * `P.number.positive()` matches **positive** numbers.\n *\n * [Read the documentation for `P.number.positive()` on GitHub](https://github.com/gvergnaud/ts-pattern#pnumberpositive)\n *\n * @example\n * match(value)\n * .with(P.number.positive(), () => 'number > 0')\n */\nconst positive = <input>(): GuardExcludeP<input, number, never> =>\n when((value) => isNumber(value) && value > 0);\n\n/**\n * `P.number.negative()` matches **negative** numbers.\n *\n * [Read the documentation for `P.number.negative()` on GitHub](https://github.com/gvergnaud/ts-pattern#pnumbernegative)\n *\n * @example\n * match(value)\n * .with(P.number.negative(), () => 'number < 0')\n */\nconst negative = <input>(): GuardExcludeP<input, number, never> =>\n when((value) => isNumber(value) && value < 0);\n\nconst numberChainable = <pattern extends Matcher<any, any, any, any, any>>(\n pattern: pattern\n): NumberChainable<pattern> =>\n Object.assign(chainable(pattern), {\n between: (min: number, max: number) =>\n numberChainable(intersection(pattern, between(min, max))),\n lt: (max: number) => numberChainable(intersection(pattern, lt(max))),\n gt: (min: number) => numberChainable(intersection(pattern, gt(min))),\n lte: (max: number) => numberChainable(intersection(pattern, lte(max))),\n gte: (min: number) => numberChainable(intersection(pattern, gte(min))),\n int: () => numberChainable(intersection(pattern, int())),\n finite: () => numberChainable(intersection(pattern, finite())),\n positive: () => numberChainable(intersection(pattern, positive())),\n negative: () => numberChainable(intersection(pattern, negative())),\n }) as any;\n\n/**\n * `P.number` is a wildcard pattern, matching any **number**.\n *\n * [Read the documentation for `P.number` on GitHub](https://github.com/gvergnaud/ts-pattern#pnumber-wildcard)\n *\n * @example\n * match(value)\n * .with(P.number, () => 'will match on numbers')\n */\nexport const number: NumberPattern = numberChainable(when(isNumber));\n\n/**\n * `P.bigint.between(min, max)` matches **bigint** between `min` and `max`,\n * equal to min or equal to max.\n *\n * [Read the documentation for `P.bigint.between` on GitHub](https://github.com/gvergnaud/ts-pattern#pnumberbetween)\n *\n * @example\n * match(value)\n * .with(P.bigint.between(0, 10), () => '0 <= bigints <= 10')\n */\nconst betweenBigInt = <\n input,\n const min extends bigint,\n const max extends bigint\n>(\n min: min,\n max: max\n): GuardExcludeP<input, bigint, never> =>\n when((value) => isBigInt(value) && min <= value && max >= value);\n\n/**\n * `P.bigint.lt(max)` matches **bigint** smaller than `max`.\n *\n * [Read the documentation for `P.bigint.lt` on GitHub](https://github.com/gvergnaud/ts-pattern#pnumberlt)\n *\n * @example\n * match(value)\n * .with(P.bigint.lt(10), () => 'bigints < 10')\n */\nconst ltBigInt = <input, const max extends bigint>(\n max: max\n): GuardExcludeP<input, bigint, never> =>\n when((value) => isBigInt(value) && value < max);\n\n/**\n * `P.bigint.gt(min)` matches **bigint** greater than `min`.\n *\n * [Read the documentation for `P.bigint.gt` on GitHub](https://github.com/gvergnaud/ts-pattern#pnumbergt)\n *\n * @example\n * match(value)\n * .with(P.bigint.gt(10), () => 'bigints > 10')\n */\nconst gtBigInt = <input, const min extends bigint>(\n min: min\n): GuardExcludeP<input, bigint, never> =>\n when((value) => isBigInt(value) && value > min);\n\n/**\n * `P.bigint.lte(max)` matches **bigint** smaller than or equal to `max`.\n *\n * [Read the documentation for `P.bigint.lte` on GitHub](https://github.com/gvergnaud/ts-pattern#pnumberlte)\n *\n * @example\n * match(value)\n * .with(P.bigint.lte(10), () => 'bigints <= 10')\n */\nconst lteBigInt = <input, const max extends bigint>(\n max: max\n): GuardExcludeP<input, bigint, never> =>\n when((value) => isBigInt(value) && value <= max);\n\n/**\n * `P.bigint.gte(min)` matches **bigint** greater than or equal to `min`.\n *\n * [Read the documentation for `P.bigint.gte` on GitHub](https://github.com/gvergnaud/ts-pattern#pbigintgte)\n *\n * @example\n * match(value)\n * .with(P.bigint.gte(10), () => 'bigints >= 10')\n */\nconst gteBigInt = <input, const min extends bigint>(\n min: min\n): GuardExcludeP<input, bigint, never> =>\n when((value) => isBigInt(value) && value >= min);\n\n/**\n * `P.bigint.positive()` matches **positive** bigints.\n *\n * [Read the documentation for `P.bigint.positive()` on GitHub](https://github.com/gvergnaud/ts-pattern#pbigintpositive)\n *\n * @example\n * match(value)\n * .with(P.bigint.positive(), () => 'bigint > 0')\n */\nconst positiveBigInt = <input>(): GuardExcludeP<input, bigint, never> =>\n when((value) => isBigInt(value) && value > 0);\n\n/**\n * `P.bigint.negative()` matches **negative** bigints.\n *\n * [Read the documentation for `P.bigint.negative()` on GitHub](https://github.com/gvergnaud/ts-pattern#pbigintnegative)\n *\n * @example\n * match(value)\n * .with(P.bigint.negative(), () => 'bigint < 0')\n */\nconst negativeBigInt = <input>(): GuardExcludeP<input, bigint, never> =>\n when((value) => isBigInt(value) && value < 0);\n\nconst bigintChainable = <pattern extends Matcher<any, any, any, any, any>>(\n pattern: pattern\n): BigIntChainable<pattern> =>\n Object.assign(chainable(pattern), {\n between: (min: bigint, max: bigint) =>\n bigintChainable(intersection(pattern, betweenBigInt(min, max))),\n lt: (max: bigint) => bigintChainable(intersection(pattern, ltBigInt(max))),\n gt: (min: bigint) => bigintChainable(intersection(pattern, gtBigInt(min))),\n lte: (max: bigint) =>\n bigintChainable(intersection(pattern, lteBigInt(max))),\n gte: (min: bigint) =>\n bigintChainable(intersection(pattern, gteBigInt(min))),\n positive: () => bigintChainable(intersection(pattern, positiveBigInt())),\n negative: () => bigintChainable(intersection(pattern, negativeBigInt())),\n }) as any;\n\n/**\n * `P.bigint` is a wildcard pattern, matching any **bigint**.\n *\n * [Read the documentation for `P.bigint` on GitHub](https://github.com/gvergnaud/ts-pattern#number-wildcard)\n *\n * @example\n * .with(P.bigint, () => 'will match on bigints')\n */\nexport const bigint: BigIntPattern = bigintChainable(when(isBigInt));\n\n/**\n * `P.boolean` is a wildcard pattern, matching any **boolean**.\n *\n * [Read the documentation for `P.boolean` on GitHub](https://github.com/gvergnaud/ts-pattern#boolean-wildcard)\n *\n * @example\n * .with(P.boolean, () => 'will match on booleans')\n */\nexport const boolean: BooleanPattern = chainable(when(isBoolean));\n\n/**\n * `P.symbol` is a wildcard pattern, matching any **symbol**.\n *\n * [Read the documentation for `P.symbol` on GitHub](https://github.com/gvergnaud/ts-pattern#symbol-wildcard)\n *\n * @example\n * .with(P.symbol, () => 'will match on symbols')\n */\nexport const symbol: SymbolPattern = chainable(when(isSymbol));\n\n/**\n * `P.nullish` is a wildcard pattern, matching **null** or **undefined**.\n *\n * [Read the documentation for `P.nullish` on GitHub](https://github.com/gvergnaud/ts-pattern#nullish-wildcard)\n *\n * @example\n * .with(P.nullish, (x) => `${x} is null or undefined`)\n */\nexport const nullish: NullishPattern = chainable(when(isNullish));\n\n/**\n * `P.nonNullable` is a wildcard pattern, matching everything except **null** or **undefined**.\n *\n * [Read the documentation for `P.nonNullable` on GitHub](https://github.com/gvergnaud/ts-pattern#nonNullable-wildcard)\n *\n * @example\n * .with(P.nonNullable, (x) => `${x} isn't null nor undefined`)\n */\nexport const nonNullable: NonNullablePattern = chainable(when(isNonNullable));\n\n/**\n * `P.instanceOf(SomeClass)` is a pattern matching instances of a given class.\n *\n * [Read the documentation for `P.instanceOf` on GitHub](https://github.com/gvergnaud/ts-pattern#pinstanceof-patterns)\n *\n * @example\n * .with(P.instanceOf(SomeClass), () => 'will match on SomeClass instances')\n */\nexport function instanceOf<T extends AnyConstructor>(\n classConstructor: T\n): Chainable<GuardP<unknown, InstanceType<T>>> {\n return chainable(when(isInstanceOf(classConstructor)));\n}\n\n/**\n * `P.shape(somePattern)` lets you call methods like `.optional()`, `.and`, `.or` and `.select()`\n * On structural patterns, like objects and arrays.\n *\n * [Read the documentation for `P.shape` on GitHub](https://github.com/gvergnaud/ts-pattern#pshape-patterns)\n *\n * @example\n * .with(\n * {\n * state: P.shape({ status: \"success\" }).optional().select()\n * },\n * (state) => 'match the success state, or undefined.'\n * )\n */\nexport function shape<input, const pattern extends Pattern<input>>(\n pattern: pattern\n): Chainable<GuardP<input, InvertPattern<pattern, input>>>;\nexport function shape(pattern: UnknownValuePattern) {\n return chainable(when(isMatching(pattern)));\n}\n","/**\n * Error when the given input value does not match any included pattern\n * and .exhaustive() was specified\n */\nexport class NonExhaustiveError extends Error {\n constructor(public input: unknown) {\n let displayedValue;\n try {\n displayedValue = JSON.stringify(input);\n } catch (e) {\n displayedValue = input;\n }\n super(`Pattern matching error: no pattern matches value ${displayedValue}`);\n }\n}\n","import { Pattern } from './types/Pattern';\nimport { Match } from './types/Match';\nimport * as symbols from './internals/symbols';\nimport { matchPattern } from './internals/helpers';\nimport { NonExhaustiveError } from './errors';\n\ntype MatchState<output> =\n | { matched: true; value: output }\n | { matched: false; value: undefined };\n\nconst unmatched: MatchState<never> = {\n matched: false,\n value: undefined,\n};\n\n/**\n * `match` creates a **pattern matching expression**.\n * * Use `.with(pattern, handler)` to pattern match on the input.\n * * Use `.exhaustive()` or `.otherwise(() => defaultValue)` to end the expression and get the result.\n *\n * [Read the documentation for `match` on GitHub](https://github.com/gvergnaud/ts-pattern#match)\n *\n * @example\n * declare let input: \"A\" | \"B\";\n *\n * return match(input)\n * .with(\"A\", () => \"It's an A!\")\n * .with(\"B\", () => \"It's a B!\")\n * .exhaustive();\n *\n */\nexport function match<const input, output = symbols.unset>(\n value: input\n): Match<input, output> {\n return new MatchExpression(value, unmatched) as any;\n}\n\n/**\n * This class represents a match expression. It follows the\n * builder pattern, we chain methods to add features to the expression\n * until we call `.exhaustive`, `.otherwise` or the unsafe `.run`\n * method to execute it.\n *\n * The types of this class aren't public, the public type definition\n * can be found in src/types/Match.ts.\n */\nclass MatchExpression<input, output> {\n constructor(private input: input, private state: MatchState<output>) {}\n\n with(...args: any[]): MatchExpression<input, output> {\n if (this.state.matched) return this;\n\n const handler: (selection: unknown, value: input) => output =\n args[args.length - 1];\n\n const patterns: Pattern<input>[] = [args[0]];\n let predicate: ((value: input) => unknown) | undefined = undefined;\n\n if (args.length === 3 && typeof args[1] === 'function') {\n // case with guard as second argument\n predicate = args[1];\n } else if (args.length > 2) {\n // case with several patterns\n patterns.push(...args.slice(1, args.length - 1));\n }\n\n let hasSelections = false;\n let selected: Record<string, unknown> = {};\n const select = (key: string, value: unknown) => {\n hasSelections = true;\n selected[key] = value;\n };\n\n const matched =\n patterns.some((pattern) => matchPattern(pattern, this.input, select)) &&\n (predicate ? Boolean(predicate(this.input)) : true);\n\n const selections = hasSelections\n ? symbols.anonymousSelectKey in selected\n ? selected[symbols.anonymousSelectKey]\n : selected\n : this.input;\n\n const state = matched\n ? {\n matched: true as const,\n value: handler(selections, this.input),\n }\n : unmatched;\n\n return new MatchExpression(this.input, state);\n }\n\n when(\n predicate: (value: input) => unknown,\n handler: (selection: input, value: input) => output\n ): MatchExpression<input, output> {\n if (this.state.matched) return this;\n\n const matched = Boolean(predicate(this.input));\n\n return new MatchExpression<input, output>(\n this.input,\n matched\n ? { matched: true, value: handler(this.input, this.input) }\n : unmatched\n );\n }\n\n otherwise(handler: (value: input) => output): output {\n if (this.state.matched) return this.state.value;\n return handler(this.input);\n }\n\n exhaustive(unexpectedValueHandler = defaultCatcher): output {\n if (this.state.matched) return this.state.value;\n return unexpectedValueHandler(this.input);\n }\n\n run(): output {\n return this.exhaustive();\n }\n\n returnType() {\n return this;\n }\n\n narrow() {\n return this;\n }\n}\n\nfunction defaultCatcher(input: unknown): never {\n throw new NonExhaustiveError(input);\n}\n","const REDACTED_PLACEHOLDER = \"[REDACTED]\" as const;\n\n// Match Checkly behavior here: https://www.checklyhq.com/docs/platform/variables/\n// Don't scrub artifact references or page identifiers in traces.\nconst NON_SCRUB_KEYS = new Set([\n \"sha1\",\n \"_sha1\",\n \"pageref\",\n \"downloadsPath\",\n \"tracesDir\",\n \"pageId\",\n]);\n\n/**\n * Scrubs a string by replacing all sensitive values with the redacted placeholder.\n * Assumes sensitiveValues are pre-sorted by length (longest first) in scrubTrace()\n * to prevent partial replacements (e.g., 'password' before 'password123' would leave '123').\n */\nexport function scrubString({\n sensitiveValues,\n str,\n}: {\n str: string;\n sensitiveValues: readonly string[];\n}): string {\n return sensitiveValues.reduce(\n (result, value) => result.replaceAll(value, REDACTED_PLACEHOLDER),\n str,\n );\n}\n\n/**\n * Helper function to check if a value is a record.\n * @param value - The value to check if it is a record.\n * @returns True if the value is a record, false otherwise.\n */\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n/**\n * Recursively scrubs an unknown value, handling strings, arrays, and objects.\n */\nexport function scrubValue({\n sensitiveValues,\n value,\n}: {\n value: unknown;\n sensitiveValues: readonly string[];\n}): unknown {\n return typeof value === \"string\"\n ? scrubString({ sensitiveValues, str: value })\n : Array.isArray(value)\n ? value.map((v) => scrubValue({ sensitiveValues, value: v }))\n : isRecord(value)\n ? scrubObject({ obj: value, sensitiveValues })\n : value; // numbers, booleans, null - pass through\n}\n\nfunction shouldPreserveKey(key: string): boolean {\n return NON_SCRUB_KEYS.has(key) ? true : key.toLowerCase().endsWith(\"sha1\");\n}\n\n/**\n * Scrubs an object's values, but never scrubs sha1-related keys.\n * Generic to preserve the input type and avoid repetitive casting at call sites.\n */\nexport function scrubObject<T extends Record<string, unknown>>({\n obj,\n sensitiveValues,\n}: {\n obj: T;\n sensitiveValues: readonly string[];\n}): T {\n // Never scrub sha1-like keys or page identifiers - they're file references\n return Object.fromEntries(\n Object.entries(obj).map(([key, value]) => [\n key,\n shouldPreserveKey(key) ? value : scrubValue({ sensitiveValues, value }),\n ]),\n ) as T;\n}\n","import { match } from \"ts-pattern\";\n\nimport type { TraceEvent } from \"../trace-types\";\n\nimport { scrubObject, scrubString, scrubValue } from \"./primitives\";\n\n// Integrity guardrails:\n// - We never touch sha1-like keys, page identifiers, or screencast/input events so artifact references remain valid.\n// - We keep the original structure/ordering of events and only swap literal values, so traces stay readable by Playwright.\n\n/**\n * Scrubs a trace event based on its type.\n * Returns the scrubbed event or the original if no scrubbing is needed.\n */\nexport function scrubTraceEvent({\n event,\n sensitiveValues,\n}: {\n event: TraceEvent;\n sensitiveValues: readonly string[];\n}): TraceEvent {\n return (\n match(event)\n .with({ type: \"console\" }, (e) => ({\n // Scrubs: text, args[].preview, args[].value\n // Preserves: type, time, pageId, messageType, location\n ...e,\n args: e.args?.map((arg) => ({\n ...arg,\n preview: scrubString({ sensitiveValues, str: arg.preview }),\n value: scrubValue({ sensitiveValues, value: arg.value }),\n })),\n text: scrubString({ sensitiveValues, str: e.text }),\n }))\n .with({ type: \"before\" }, (e) => ({\n // Scrubs: params values, title\n // Preserves: type, method, class, callId, stepId, pageId, beforeSnapshot, stack\n ...e,\n params: scrubObject({ obj: e.params, sensitiveValues }),\n title: e.title\n ? scrubString({ sensitiveValues, str: e.title })\n : undefined,\n }))\n .with({ type: \"after\" }, (e) => ({\n // Scrubs: result values, error.message\n // Preserves: type, callId, endTime, afterSnapshot, attachments, annotations, point\n ...e,\n error: e.error\n ? {\n ...e.error,\n message: scrubString({ sensitiveValues, str: e.error.message }),\n }\n : undefined,\n result:\n e.result !== undefined\n ? scrubValue({ sensitiveValues, value: e.result })\n : undefined,\n }))\n .with({ type: \"action\" }, (e) => ({\n // Scrubs: params values, title, result, error.message\n // Preserves: type, method, class, callId, stepId, pageId, snapshots, stack, attachments, annotations, point\n ...e,\n error: e.error\n ? {\n ...e.error,\n message: scrubString({ sensitiveValues, str: e.error.message }),\n }\n : undefined,\n params: scrubObject({ obj: e.params, sensitiveValues }),\n result:\n e.result !== undefined\n ? scrubValue({ sensitiveValues, value: e.result })\n : undefined,\n title: e.title\n ? scrubString({ sensitiveValues, str: e.title })\n : undefined,\n }))\n .with({ type: \"event\" }, (e) => ({\n // Scrubs: params values\n // Preserves: type, class, method, pageId, time\n ...e,\n params: scrubObject({ obj: e.params, sensitiveValues }),\n }))\n .with({ type: \"stdout\" }, { type: \"stderr\" }, (e) => ({\n // Scrubs: text\n // Preserves: type, timestamp, base64\n ...e,\n text:\n e.text !== undefined\n ? scrubString({ sensitiveValues, str: e.text })\n : undefined,\n }))\n .with({ type: \"error\" }, (e) => ({\n // Scrubs: message\n // Preserves: type, stack\n ...e,\n message: scrubString({ sensitiveValues, str: e.message }),\n }))\n .with({ type: \"log\" }, (e) => ({\n // Scrubs: message (may contain locator descriptions with user data)\n // Preserves: type, callId, time\n ...e,\n message: scrubString({ sensitiveValues, str: e.message }),\n }))\n .with({ type: \"context-options\" }, (e) => ({\n // Scrubs: title, options (may contain sensitive config like baseURL, userAgent)\n // Preserves: type, version, origin, browserName, platform, timestamps, sdkLanguage\n ...e,\n options: scrubObject({ obj: e.options, sensitiveValues }),\n title: e.title\n ? scrubString({ sensitiveValues, str: e.title })\n : undefined,\n }))\n .with({ type: \"frame-snapshot\" }, (e) => ({\n // Scrubs: snapshot.url, snapshot.title, snapshot.html (may contain sensitive page content)\n // Preserves: type, snapshot.callId, snapshot.pageId, snapshot.frameId\n ...e,\n snapshot: scrubObject({ obj: e.snapshot, sensitiveValues }),\n }))\n .with({ type: \"resource-snapshot\" }, (e) => ({\n // Scrubs: snapshot.url (may contain sensitive URLs/params)\n // Preserves: type, snapshot sha1 refs, headers structure\n ...e,\n snapshot: scrubObject({ obj: e.snapshot, sensitiveValues }),\n }))\n // screencast-frame, input - pass through unchanged (coordinates and sha1 refs only)\n .with({ type: \"screencast-frame\" }, { type: \"input\" }, (e) => e)\n .exhaustive()\n );\n}\n","import createWebSocketStream from './lib/stream.js';\nimport Receiver from './lib/receiver.js';\nimport Sender from './lib/sender.js';\nimport WebSocket from './lib/websocket.js';\nimport WebSocketServer from './lib/websocket-server.js';\n\nexport { createWebSocketStream, Receiver, Sender, WebSocket, WebSocketServer };\nexport default WebSocket;\n","const objectToString = Object.prototype.toString;\n\nconst isError = value => objectToString.call(value) === '[object Error]';\n\nconst errorMessages = new Set([\n\t'network error', // Chrome\n\t'Failed to fetch', // Chrome\n\t'NetworkError when attempting to fetch resource.', // Firefox\n\t'The Internet connection appears to be offline.', // Safari 16\n\t'Network request failed', // `cross-fetch`\n\t'fetch failed', // Undici (Node.js)\n\t'terminated', // Undici (Node.js)\n\t' A network error occurred.', // Bun (WebKit)\n\t'Network connection lost', // Cloudflare Workers (fetch)\n]);\n\nexport default function isNetworkError(error) {\n\tconst isValid = error\n\t\t&& isError(error)\n\t\t&& error.name === 'TypeError'\n\t\t&& typeof error.message === 'string';\n\n\tif (!isValid) {\n\t\treturn false;\n\t}\n\n\tconst {message, stack} = error;\n\n\t// Safari 17+ has generic message but no stack for network errors\n\tif (message === 'Load failed') {\n\t\treturn stack === undefined\n\t\t\t// Sentry adds its own stack trace to the fetch error, so also check for that\n\t\t\t|| '__sentry_captured__' in error;\n\t}\n\n\t// Deno network errors start with specific text\n\tif (message.startsWith('error sending request for url')) {\n\t\treturn true;\n\t}\n\n\t// Standard network error messages\n\treturn errorMessages.has(message);\n}\n","import isNetworkError from 'is-network-error';\n\nfunction validateRetries(retries) {\n\tif (typeof retries === 'number') {\n\t\tif (retries < 0) {\n\t\t\tthrow new TypeError('Expected `retries` to be a non-negative number.');\n\t\t}\n\n\t\tif (Number.isNaN(retries)) {\n\t\t\tthrow new TypeError('Expected `retries` to be a valid number or Infinity, got NaN.');\n\t\t}\n\t} else if (retries !== undefined) {\n\t\tthrow new TypeError('Expected `retries` to be a number or Infinity.');\n\t}\n}\n\nfunction validateNumberOption(name, value, {min = 0, allowInfinity = false} = {}) {\n\tif (value === undefined) {\n\t\treturn;\n\t}\n\n\tif (typeof value !== 'number' || Number.isNaN(value)) {\n\t\tthrow new TypeError(`Expected \\`${name}\\` to be a number${allowInfinity ? ' or Infinity' : ''}.`);\n\t}\n\n\tif (!allowInfinity && !Number.isFinite(value)) {\n\t\tthrow new TypeError(`Expected \\`${name}\\` to be a finite number.`);\n\t}\n\n\tif (value < min) {\n\t\tthrow new TypeError(`Expected \\`${name}\\` to be \\u2265 ${min}.`);\n\t}\n}\n\nexport class AbortError extends Error {\n\tconstructor(message) {\n\t\tsuper();\n\n\t\tif (message instanceof Error) {\n\t\t\tthis.originalError = message;\n\t\t\t({message} = message);\n\t\t} else {\n\t\t\tthis.originalError = new Error(message);\n\t\t\tthis.originalError.stack = this.stack;\n\t\t}\n\n\t\tthis.name = 'AbortError';\n\t\tthis.message = message;\n\t}\n}\n\nfunction calculateDelay(retriesConsumed, options) {\n\tconst attempt = Math.max(1, retriesConsumed + 1);\n\tconst random = options.randomize ? (Math.random() + 1) : 1;\n\n\tlet timeout = Math.round(random * options.minTimeout * (options.factor ** (attempt - 1)));\n\ttimeout = Math.min(timeout, options.maxTimeout);\n\n\treturn timeout;\n}\n\nfunction calculateRemainingTime(start, max) {\n\tif (!Number.isFinite(max)) {\n\t\treturn max;\n\t}\n\n\treturn max - (performance.now() - start);\n}\n\nasync function onAttemptFailure({error, attemptNumber, retriesConsumed, startTime, options}) {\n\tconst normalizedError = error instanceof Error\n\t\t? error\n\t\t: new TypeError(`Non-error was thrown: \"${error}\". You should only throw errors.`);\n\n\tif (normalizedError instanceof AbortError) {\n\t\tthrow normalizedError.originalError;\n\t}\n\n\tconst retriesLeft = Number.isFinite(options.retries)\n\t\t? Math.max(0, options.retries - retriesConsumed)\n\t\t: options.retries;\n\n\tconst maxRetryTime = options.maxRetryTime ?? Number.POSITIVE_INFINITY;\n\n\tconst context = Object.freeze({\n\t\terror: normalizedError,\n\t\tattemptNumber,\n\t\tretriesLeft,\n\t\tretriesConsumed,\n\t});\n\n\tawait options.onFailedAttempt(context);\n\n\tif (calculateRemainingTime(startTime, maxRetryTime) <= 0) {\n\t\tthrow normalizedError;\n\t}\n\n\tconst consumeRetry = await options.shouldConsumeRetry(context);\n\n\tconst remainingTime = calculateRemainingTime(startTime, maxRetryTime);\n\n\tif (remainingTime <= 0 || retriesLeft <= 0) {\n\t\tthrow normalizedError;\n\t}\n\n\tif (normalizedError instanceof TypeError && !isNetworkError(normalizedError)) {\n\t\tif (consumeRetry) {\n\t\t\tthrow normalizedError;\n\t\t}\n\n\t\toptions.signal?.throwIfAborted();\n\t\treturn false;\n\t}\n\n\tif (!await options.shouldRetry(context)) {\n\t\tthrow normalizedError;\n\t}\n\n\tif (!consumeRetry) {\n\t\toptions.signal?.throwIfAborted();\n\t\treturn false;\n\t}\n\n\tconst delayTime = calculateDelay(retriesConsumed, options);\n\tconst finalDelay = Math.min(delayTime, remainingTime);\n\n\toptions.signal?.throwIfAborted();\n\n\tif (finalDelay > 0) {\n\t\tawait new Promise((resolve, reject) => {\n\t\t\tconst onAbort = () => {\n\t\t\t\tclearTimeout(timeoutToken);\n\t\t\t\toptions.signal?.removeEventListener('abort', onAbort);\n\t\t\t\treject(options.signal.reason);\n\t\t\t};\n\n\t\t\tconst timeoutToken = setTimeout(() => {\n\t\t\t\toptions.signal?.removeEventListener('abort', onAbort);\n\t\t\t\tresolve();\n\t\t\t}, finalDelay);\n\n\t\t\tif (options.unref) {\n\t\t\t\ttimeoutToken.unref?.();\n\t\t\t}\n\n\t\t\toptions.signal?.addEventListener('abort', onAbort, {once: true});\n\t\t});\n\t}\n\n\toptions.signal?.throwIfAborted();\n\n\treturn true;\n}\n\nexport default async function pRetry(input, options = {}) {\n\toptions = {...options};\n\n\tvalidateRetries(options.retries);\n\n\tif (Object.hasOwn(options, 'forever')) {\n\t\tthrow new Error('The `forever` option is no longer supported. For many use-cases, you can set `retries: Infinity` instead.');\n\t}\n\n\toptions.retries ??= 10;\n\toptions.factor ??= 2;\n\toptions.minTimeout ??= 1000;\n\toptions.maxTimeout ??= Number.POSITIVE_INFINITY;\n\toptions.maxRetryTime ??= Number.POSITIVE_INFINITY;\n\toptions.randomize ??= false;\n\toptions.onFailedAttempt ??= () => {};\n\toptions.shouldRetry ??= () => true;\n\toptions.shouldConsumeRetry ??= () => true;\n\n\t// Validate numeric options and normalize edge cases\n\tvalidateNumberOption('factor', options.factor, {min: 0, allowInfinity: false});\n\tvalidateNumberOption('minTimeout', options.minTimeout, {min: 0, allowInfinity: false});\n\tvalidateNumberOption('maxTimeout', options.maxTimeout, {min: 0, allowInfinity: true});\n\tvalidateNumberOption('maxRetryTime', options.maxRetryTime, {min: 0, allowInfinity: true});\n\n\t// Treat non-positive factor as 1 to avoid zero backoff or negative behavior\n\tif (!(options.factor > 0)) {\n\t\toptions.factor = 1;\n\t}\n\n\toptions.signal?.throwIfAborted();\n\n\tlet attemptNumber = 0;\n\tlet retriesConsumed = 0;\n\tconst startTime = performance.now();\n\n\twhile (Number.isFinite(options.retries) ? retriesConsumed <= options.retries : true) {\n\t\tattemptNumber++;\n\n\t\ttry {\n\t\t\toptions.signal?.throwIfAborted();\n\n\t\t\tconst result = await input(attemptNumber);\n\n\t\t\toptions.signal?.throwIfAborted();\n\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\tif (await onAttemptFailure({\n\t\t\t\terror,\n\t\t\t\tattemptNumber,\n\t\t\t\tretriesConsumed,\n\t\t\t\tstartTime,\n\t\t\t\toptions,\n\t\t\t})) {\n\t\t\t\tretriesConsumed++;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Should not reach here, but in case it does, throw an error\n\tthrow new Error('Retry attempts exhausted without throwing an error.');\n}\n\nexport function makeRetriable(function_, options) {\n\treturn function (...arguments_) {\n\t\treturn pRetry(() => function_.apply(this, arguments_), options);\n\t};\n}\n","import StablyReporter from \"@stablyai/playwright-reporter\";\n\nexport default StablyReporter;\n"],"mappings":"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QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aACA;IACA,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;IACT,QAAO;EACP;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;IACT,QAAO;EACP;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;IACT,QAAO;EACP;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,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AUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACA,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACA,QAAUA,MAA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","names":["x","y","i","p","fs","n","i","b","isBinaryFile","err","_","x","i","e","err","data","i","e","Receiver","n","err","Sender","err","_","i","i","k","v","URL","Receiver","Sender","WebSocket","head","err","e","key","WebSocket","err","createWebSocketStream","i","protocol","WebSocket","WebSocketServer","head","err","h","Buffer","path","process","constants","setTimeout","ChildProcess","readFileSync","__commonJS","fs","__require","path","i","p","u","g","o","ii","j","pathKey","err","e","fd","me","b","s","of","pr","branch","__toESM","process","onetime","signals","constants","isError","global","_","a","t","mergeStream","setTimeout","ChildProcess","Buffer","expression","crossSpawn","$","readFileSync","javaProperties","ci","ansiRegex","onlyFirst","pattern","regex","e","eaw","module","character","x","y","codePoint","code","stringToArray","string","characters","len","i","text","start","end","result","eawLen","chars","char","charLen","emojiRegex","ANSI_BACKGROUND_OFFSET","wrapAnsi16","offset","code","wrapAnsi256","wrapAnsi16m","red","green","blue","styles","foregroundColorNames","backgroundColorNames","assembleStyles","codes","groupName","group","styleName","style","hex","matches","colorString","character","integer","remainder","value","result","ansiStyles","ANSI_OSC","ANSI_ESCAPE_LINK","ANSI_OSC","actions","settings","isActionKey","key","action","settings","value","isWindows","CANCEL_SYMBOL","block","input","stdin","output","stdout","overwrite","hideCursor","rl","readline","clear","data","name","sequence","str","isActionKey","cursor","dx","dy","isWindows","_selectableGroups","_selectableGroups","isUnicodeSupported","process","unicode","s","c","fallback","S_STEP_ACTIVE","S_STEP_CANCEL","S_STEP_ERROR","S_STEP_SUBMIT","S_BAR_START","S_BAR","S_BAR_END","S_RADIO_ACTIVE","S_RADIO_INACTIVE","S_CHECKBOX_ACTIVE","S_CHECKBOX_SELECTED","S_CHECKBOX_INACTIVE","S_PASSWORD_MASK","S_BAR_H","S_CORNER_TOP_RIGHT","S_CONNECT_LEFT","S_CORNER_BOTTOM_RIGHT","S_INFO","S_SUCCESS","S_WARN","S_ERROR","intro","title","color","S_BAR_START","outro","message","S_BAR","S_BAR_END","prefix","color","S_BAR","spinner","indicator","frames","unicode","delay","isCI","unblock","loop","isSpinnerActive","_message","_prevMessage","_origin","handleExit","code","msg","stop","errorEventHandler","signalEventHandler","registerHooks","clearHooks","clearPrevMessage","prevLines","cursor","erase","parseMessage","formatTimer","origin","duration","min","secs","start","block","color","S_BAR","frameIndex","indicatorTimer","frame","loadingDots","step","S_STEP_SUBMIT","S_STEP_CANCEL","S_STEP_ERROR","import_picocolors","readFileSync","require","e","c","_","w","b","i","r","j","x","s","l","le","v","a","d","p","o","nt","e","st","l","bt","s","t","i","r","c","n","lt","b","d","p","v","o","t2","a","i2","w","li","bs","_a","_b","head","wi","j","ti","k","st","a","b","o","k","td","i","v","t","o","w","err","dat","d","b","v","d","p","t","o","k","n","e","r","i","c","i","l","ai","w","v","n","c","r","_a","s","d","b","es","bs","_a","le","k","l","u","c","ce","fl","y","o","e","r","k","o","i","a","b","oe","l","e","_a","p","c","s","d","i","a","b","e","c","o","_a","d","TextDecoder","TextEncoder","matcher","Symbol","for","isVariadic","anonymousSelectKey","isObject","value","Boolean","isMatcher","x","symbols","matchPattern","pattern","select","matched","selections","match","Object","keys","forEach","key","Array","isArray","startPatterns","endPatterns","variadicPatterns","i","subpattern","push","length","Error","startValues","slice","endValues","middleValues","Infinity","every","subPattern","Reflect","ownKeys","k","matcherType","is","getSelectionKeys","_pattern$symbols$matc","_pattern$symbols$matc2","_pattern$symbols$matc3","call","flatMap","values","xs","f","reduce","acc","concat","chainable","pattern","Object","assign","optional","and","p2","intersection","or","union","select","key","optional","pattern","chainable","matcher","match","value","selections","selector","key","getSelectionKeys","forEach","undefined","matched","matchPattern","matcherType","intersection","patterns","chainable","matcher","match","value","selections","selector","key","matched","every","p","matchPattern","getSelectionKeys","flatMap","matcherType","union","forEach","undefined","some","when","predicate","Boolean","select","args","pattern","length","symbols","concat","isUnknown","x","isNumber","isString","isBigInt","any","unknown","stringChainable","pattern","Object","assign","chainable","startsWith","str","intersection","start","when","value","isString","endsWith","end","minLength","min","length","len","maxLength","max","includes","substr","regex","expr","Boolean","match","string","numberChainable","between","isNumber","lt","gt","lte","gte","int","Number","isInteger","finite","isFinite","positive","negative","number","bigintChainable","betweenBigInt","isBigInt","bigint","boolean","x","symbol","nullish","nonNullable","NonExhaustiveError","Error","constructor","input","displayedValue","JSON","stringify","e","super","this","unmatched","matched","value","undefined","match","MatchExpression","state","with","args","handler","length","patterns","predicate","push","slice","hasSelections","selected","select","key","some","pattern","matchPattern","Boolean","symbols","when","otherwise","exhaustive","unexpectedValueHandler","defaultCatcher","run","returnType","narrow","v","M","e","TextDecoder","TextEncoder","a","b","WebSocket","ce","V","fileURLToPath","constants","debuglog","objectToString","max","S","t","e","r","h","n","i","X","d","o","s","a","Ie","Se","$e","R","x","et","w","y","c","g","k","u","l","p","_","T","C","$","j","O","I","b","L","N","M","Y","B","fileURLToPath","V","constants","W","J","P","readFileSync","oe","debuglog","ae","K","v","ce","A","D","ue","le","de","U"]}
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/sisteransi@1.0.5/node_modules/sisteransi/src/index.js","../../../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js","../../../node_modules/.pnpm/isbinaryfile@5.0.7/node_modules/isbinaryfile/lib/index.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/constants.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/buffer-util.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/limiter.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/permessage-deflate.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/validation.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/receiver.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/sender.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/event-target.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/extension.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/websocket.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/stream.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/subprotocol.js","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/lib/websocket-server.js","../../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js","../../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js","../../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js","../../../node_modules/.pnpm/which@2.0.2/node_modules/which/which.js","../../../node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js","../../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/resolveCommand.js","../../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/escape.js","../../../node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js","../../../node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js","../../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/readShebang.js","../../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/parse.js","../../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/enoent.js","../../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/index.js","../../../node_modules/.pnpm/merge-stream@2.0.0/node_modules/merge-stream/index.js","../../../node_modules/.pnpm/java-properties@1.0.2/node_modules/java-properties/dist-node/index.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/appveyor.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/lib/utils.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/azure-pipelines.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/bamboo.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/bitbucket.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/bitrise.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/buddy.js","../../../node_modules/.pnpm/execa@8.0.1/node_modules/execa/index.js","../../../node_modules/.pnpm/strip-final-newline@3.0.0/node_modules/strip-final-newline/index.js","../../../node_modules/.pnpm/npm-run-path@5.3.0/node_modules/npm-run-path/index.js","../../../node_modules/.pnpm/path-key@4.0.0/node_modules/path-key/index.js","../../../node_modules/.pnpm/mimic-fn@4.0.0/node_modules/mimic-fn/index.js","../../../node_modules/.pnpm/onetime@6.0.0/node_modules/onetime/index.js","../../../node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/error.js","../../../node_modules/.pnpm/human-signals@5.0.0/node_modules/human-signals/build/src/main.js","../../../node_modules/.pnpm/human-signals@5.0.0/node_modules/human-signals/build/src/realtime.js","../../../node_modules/.pnpm/human-signals@5.0.0/node_modules/human-signals/build/src/signals.js","../../../node_modules/.pnpm/human-signals@5.0.0/node_modules/human-signals/build/src/core.js","../../../node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/stdio.js","../../../node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/kill.js","../../../node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/src/signals.ts","../../../node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/src/index.ts","../../../node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/pipe.js","../../../node_modules/.pnpm/is-stream@3.0.0/node_modules/is-stream/index.js","../../../node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/stream.js","../../../node_modules/.pnpm/get-stream@8.0.1/node_modules/get-stream/source/contents.js","../../../node_modules/.pnpm/get-stream@8.0.1/node_modules/get-stream/source/utils.js","../../../node_modules/.pnpm/get-stream@8.0.1/node_modules/get-stream/source/array-buffer.js","../../../node_modules/.pnpm/get-stream@8.0.1/node_modules/get-stream/source/buffer.js","../../../node_modules/.pnpm/get-stream@8.0.1/node_modules/get-stream/source/string.js","../../../node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/promise.js","../../../node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/command.js","../../../node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/verbose.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/lib/git.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/buildkite.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/circleci.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/cirrus.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/cloudflare-pages.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/codebuild.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/codefresh.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/codeship.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/drone.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/git.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/github.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/gitlab.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/jenkins.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/netlify.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/puppet.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/sail.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/screwdriver.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/scrutinizer.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/semaphore.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/shippable.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/teamcity.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/travis.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/vela.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/vercel.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/wercker.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/woodpecker.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/services/jetbrains-space.js","../../../node_modules/.pnpm/env-ci@11.2.0/node_modules/env-ci/index.js","../../ci-run-id/src/index.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/node_modules/.pnpm/ansi-regex@6.1.0/node_modules/ansi-regex/index.js","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/node_modules/.pnpm/strip-ansi@7.1.0/node_modules/strip-ansi/index.js","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/node_modules/.pnpm/eastasianwidth@0.2.0/node_modules/eastasianwidth/eastasianwidth.js","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/node_modules/.pnpm/emoji-regex@9.2.2/node_modules/emoji-regex/index.js","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/node_modules/.pnpm/string-width@5.1.2/node_modules/string-width/index.js","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/node_modules/.pnpm/ansi-styles@6.2.1/node_modules/ansi-styles/index.js","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/node_modules/.pnpm/wrap-ansi@8.1.0/node_modules/wrap-ansi/index.js","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/utils/settings.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/utils/string.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/utils/index.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/prompt.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/confirm.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/group-multiselect.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/multi-select.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/password.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/select.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/select-key.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/text.ts","../../../node_modules/.pnpm/@clack+prompts@0.11.0/node_modules/node_modules/.pnpm/is-unicode-supported@1.3.0/node_modules/is-unicode-supported/index.js","../../../node_modules/.pnpm/@clack+prompts@0.11.0/node_modules/@clack/prompts/src/index.ts","../../playwright-reporter/dist/index.mjs","../../playwright-trace-scrubber/src/scrub-trace.ts","../../../node_modules/.pnpm/fflate@0.8.2/node_modules/fflate/esm/index.mjs","../../playwright-trace-scrubber/src/filter-sensitive-values.ts","../../playwright-trace-scrubber/src/scrubbers/files.ts","../../../node_modules/.pnpm/ts-pattern@5.9.0/node_modules/ts-pattern/src/internals/symbols.ts","../../../node_modules/.pnpm/ts-pattern@5.9.0/node_modules/ts-pattern/src/internals/helpers.ts","../../../node_modules/.pnpm/ts-pattern@5.9.0/node_modules/ts-pattern/src/is-matching.ts","../../../node_modules/.pnpm/ts-pattern@5.9.0/node_modules/ts-pattern/src/patterns.ts","../../../node_modules/.pnpm/ts-pattern@5.9.0/node_modules/ts-pattern/src/errors.ts","../../../node_modules/.pnpm/ts-pattern@5.9.0/node_modules/ts-pattern/src/match.ts","../../playwright-trace-scrubber/src/scrubbers/primitives.ts","../../playwright-trace-scrubber/src/scrubbers/events.ts","../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/wrapper.mjs","../../../node_modules/.pnpm/is-network-error@1.3.0/node_modules/is-network-error/index.js","../../../node_modules/.pnpm/p-retry@7.1.1/node_modules/p-retry/index.js","../src/reporter.ts"],"sourcesContent":["'use strict';\n\nconst ESC = '\\x1B';\nconst CSI = `${ESC}[`;\nconst beep = '\\u0007';\n\nconst cursor = {\n to(x, y) {\n if (!y) return `${CSI}${x + 1}G`;\n return `${CSI}${y + 1};${x + 1}H`;\n },\n move(x, y) {\n let ret = '';\n\n if (x < 0) ret += `${CSI}${-x}D`;\n else if (x > 0) ret += `${CSI}${x}C`;\n\n if (y < 0) ret += `${CSI}${-y}A`;\n else if (y > 0) ret += `${CSI}${y}B`;\n\n return ret;\n },\n up: (count = 1) => `${CSI}${count}A`,\n down: (count = 1) => `${CSI}${count}B`,\n forward: (count = 1) => `${CSI}${count}C`,\n backward: (count = 1) => `${CSI}${count}D`,\n nextLine: (count = 1) => `${CSI}E`.repeat(count),\n prevLine: (count = 1) => `${CSI}F`.repeat(count),\n left: `${CSI}G`,\n hide: `${CSI}?25l`,\n show: `${CSI}?25h`,\n save: `${ESC}7`,\n restore: `${ESC}8`\n}\n\nconst scroll = {\n up: (count = 1) => `${CSI}S`.repeat(count),\n down: (count = 1) => `${CSI}T`.repeat(count)\n}\n\nconst erase = {\n screen: `${CSI}2J`,\n up: (count = 1) => `${CSI}1J`.repeat(count),\n down: (count = 1) => `${CSI}J`.repeat(count),\n line: `${CSI}2K`,\n lineEnd: `${CSI}K`,\n lineStart: `${CSI}1K`,\n lines(count) {\n let clear = '';\n for (let i = 0; i < count; i++)\n clear += this.line + (i < count - 1 ? cursor.up() : '');\n if (count)\n clear += cursor.left;\n return clear;\n }\n}\n\nmodule.exports = { cursor, scroll, erase, beep };\n","let p = process || {}, argv = p.argv || [], env = p.env || {}\nlet isColorSupported =\n\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI)\n\nlet formatter = (open, close, replace = open) =>\n\tinput => {\n\t\tlet string = \"\" + input, index = string.indexOf(close, open.length)\n\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t}\n\nlet replaceClose = (string, close, replace, index) => {\n\tlet result = \"\", cursor = 0\n\tdo {\n\t\tresult += string.substring(cursor, index) + replace\n\t\tcursor = index + close.length\n\t\tindex = string.indexOf(close, cursor)\n\t} while (~index)\n\treturn result + string.substring(cursor)\n}\n\nlet createColors = (enabled = isColorSupported) => {\n\tlet f = enabled ? formatter : () => String\n\treturn {\n\t\tisColorSupported: enabled,\n\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t}\n}\n\nmodule.exports = createColors()\nmodule.exports.createColors = createColors\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isBinaryFileSync = exports.isBinaryFile = void 0;\nconst fs = require(\"fs\");\nconst util_1 = require(\"util\");\nconst statAsync = (0, util_1.promisify)(fs.stat);\nconst openAsync = (0, util_1.promisify)(fs.open);\nconst closeAsync = (0, util_1.promisify)(fs.close);\nconst MAX_BYTES = 512;\nconst UTF8_BOUNDARY_RESERVE = 3;\n// A very basic non-exception raising reader. Read bytes and\n// at the end use hasError() to check whether this worked.\nclass Reader {\n fileBuffer;\n size;\n offset;\n error;\n constructor(fileBuffer, size) {\n this.fileBuffer = fileBuffer;\n this.size = size;\n this.offset = 0;\n this.error = false;\n }\n hasError() {\n return this.error;\n }\n nextByte() {\n if (this.offset === this.size || this.hasError()) {\n this.error = true;\n return 0xff;\n }\n return this.fileBuffer[this.offset++];\n }\n next(len) {\n const n = new Array();\n for (let i = 0; i < len; i++) {\n // Stop reading if an error occurred\n if (this.error) {\n return n;\n }\n n[i] = this.nextByte();\n }\n return n;\n }\n}\n// Read a Google Protobuf var(iable)int from the buffer.\nfunction readProtoVarInt(reader) {\n let idx = 0;\n let varInt = 0;\n while (!reader.hasError()) {\n const b = reader.nextByte();\n varInt = varInt | ((b & 0x7f) << (7 * idx));\n if ((b & 0x80) === 0) {\n break;\n }\n if (idx >= 10) {\n // Varint can be between 1 and 10 bytes. This is too large.\n reader.error = true;\n break;\n }\n idx++;\n }\n return varInt;\n}\n// Attempt to taste a full Google Protobuf message.\nfunction readProtoMessage(reader) {\n const varInt = readProtoVarInt(reader);\n const wireType = varInt & 0x7;\n switch (wireType) {\n case 0:\n readProtoVarInt(reader);\n return true;\n case 1:\n reader.next(8);\n return true;\n case 2:\n const len = readProtoVarInt(reader);\n reader.next(len);\n return true;\n case 5:\n reader.next(4);\n return true;\n }\n return false;\n}\n// Check whether this seems to be a valid protobuf file.\nfunction isBinaryProto(fileBuffer, totalBytes) {\n const reader = new Reader(fileBuffer, totalBytes);\n let numMessages = 0;\n while (true) {\n // Definitely not a valid protobuf\n if (!readProtoMessage(reader) && !reader.hasError()) {\n return false;\n }\n // Short read?\n if (reader.hasError()) {\n break;\n }\n numMessages++;\n }\n return numMessages > 0;\n}\nasync function isBinaryFile(file, size) {\n if (isString(file)) {\n const stat = await statAsync(file);\n isStatFile(stat);\n const fileDescriptor = await openAsync(file, 'r');\n const allocBuffer = Buffer.alloc(MAX_BYTES + UTF8_BOUNDARY_RESERVE);\n // Read the file with no encoding for raw buffer access.\n // NB: something is severely wrong with promisify, had to construct my own Promise\n return new Promise((fulfill, reject) => {\n fs.read(fileDescriptor, allocBuffer, 0, MAX_BYTES + UTF8_BOUNDARY_RESERVE, 0, (err, bytesRead, _) => {\n closeAsync(fileDescriptor);\n if (err) {\n reject(err);\n }\n else {\n try {\n fulfill(isBinaryCheck(allocBuffer, bytesRead));\n }\n catch (error) {\n reject(error);\n }\n }\n });\n });\n }\n else {\n if (size === undefined) {\n size = file.length;\n }\n return isBinaryCheck(file, size);\n }\n}\nexports.isBinaryFile = isBinaryFile;\nfunction isBinaryFileSync(file, size) {\n if (isString(file)) {\n const stat = fs.statSync(file);\n isStatFile(stat);\n const fileDescriptor = fs.openSync(file, 'r');\n const allocBuffer = Buffer.alloc(MAX_BYTES + UTF8_BOUNDARY_RESERVE);\n const bytesRead = fs.readSync(fileDescriptor, allocBuffer, 0, MAX_BYTES + UTF8_BOUNDARY_RESERVE, 0);\n fs.closeSync(fileDescriptor);\n return isBinaryCheck(allocBuffer, bytesRead);\n }\n else {\n if (size === undefined) {\n size = file.length;\n }\n return isBinaryCheck(file, size);\n }\n}\nexports.isBinaryFileSync = isBinaryFileSync;\nfunction isBinaryCheck(fileBuffer, bytesRead) {\n // empty file. no clue what it is.\n if (bytesRead === 0) {\n return false;\n }\n let suspiciousBytes = 0;\n const totalBytes = Math.min(bytesRead, MAX_BYTES + UTF8_BOUNDARY_RESERVE);\n const scanBytes = Math.min(totalBytes, MAX_BYTES);\n // UTF-8 BOM\n if (bytesRead >= 3 && fileBuffer[0] === 0xef && fileBuffer[1] === 0xbb && fileBuffer[2] === 0xbf) {\n return false;\n }\n // UTF-32 BOM\n if (bytesRead >= 4 &&\n fileBuffer[0] === 0x00 &&\n fileBuffer[1] === 0x00 &&\n fileBuffer[2] === 0xfe &&\n fileBuffer[3] === 0xff) {\n return false;\n }\n // UTF-32 LE BOM\n if (bytesRead >= 4 &&\n fileBuffer[0] === 0xff &&\n fileBuffer[1] === 0xfe &&\n fileBuffer[2] === 0x00 &&\n fileBuffer[3] === 0x00) {\n return false;\n }\n // GB BOM\n if (bytesRead >= 4 &&\n fileBuffer[0] === 0x84 &&\n fileBuffer[1] === 0x31 &&\n fileBuffer[2] === 0x95 &&\n fileBuffer[3] === 0x33) {\n return false;\n }\n if (totalBytes >= 5 && fileBuffer.slice(0, 5).toString() === '%PDF-') {\n /* PDF. This is binary. */\n return true;\n }\n // UTF-16 BE BOM\n if (bytesRead >= 2 && fileBuffer[0] === 0xfe && fileBuffer[1] === 0xff) {\n return false;\n }\n // UTF-16 LE BOM\n if (bytesRead >= 2 && fileBuffer[0] === 0xff && fileBuffer[1] === 0xfe) {\n return false;\n }\n for (let i = 0; i < scanBytes; i++) {\n if (fileBuffer[i] === 0) {\n // NULL byte--it's binary!\n return true;\n }\n else if ((fileBuffer[i] < 7 || fileBuffer[i] > 14) && (fileBuffer[i] < 32 || fileBuffer[i] > 127)) {\n // UTF-8 detection\n if (fileBuffer[i] >= 0xc0 && fileBuffer[i] <= 0xdf && i + 1 < totalBytes) {\n i++;\n if (fileBuffer[i] >= 0x80 && fileBuffer[i] <= 0xbf) {\n continue;\n }\n }\n else if (fileBuffer[i] >= 0xe0 && fileBuffer[i] <= 0xef && i + 2 < totalBytes) {\n i++;\n if (fileBuffer[i] >= 0x80 && fileBuffer[i] <= 0xbf && fileBuffer[i + 1] >= 0x80 && fileBuffer[i + 1] <= 0xbf) {\n i++;\n continue;\n }\n }\n else if (fileBuffer[i] >= 0xf0 && fileBuffer[i] <= 0xf7 && i + 3 < totalBytes) {\n i++;\n if (fileBuffer[i] >= 0x80 &&\n fileBuffer[i] <= 0xbf &&\n fileBuffer[i + 1] >= 0x80 &&\n fileBuffer[i + 1] <= 0xbf &&\n fileBuffer[i + 2] >= 0x80 &&\n fileBuffer[i + 2] <= 0xbf) {\n i += 2;\n continue;\n }\n }\n suspiciousBytes++;\n // Read at least 32 fileBuffer before making a decision\n if (i >= 32 && (suspiciousBytes * 100) / scanBytes > 10) {\n return true;\n }\n }\n }\n if ((suspiciousBytes * 100) / scanBytes > 10) {\n return true;\n }\n if (suspiciousBytes > 1 && isBinaryProto(fileBuffer, scanBytes)) {\n return true;\n }\n return false;\n}\nfunction isString(x) {\n return typeof x === 'string';\n}\nfunction isStatFile(stat) {\n if (!stat.isFile()) {\n throw new Error(`Path provided was not a file!`);\n }\n}\n","'use strict';\n\nconst BINARY_TYPES = ['nodebuffer', 'arraybuffer', 'fragments'];\nconst hasBlob = typeof Blob !== 'undefined';\n\nif (hasBlob) BINARY_TYPES.push('blob');\n\nmodule.exports = {\n BINARY_TYPES,\n EMPTY_BUFFER: Buffer.alloc(0),\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n hasBlob,\n kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),\n kListener: Symbol('kListener'),\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n NOOP: () => {}\n};\n","'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) {\n return new FastBuffer(target.buffer, target.byteOffset, offset);\n }\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.length === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = new FastBuffer(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\nmodule.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n};\n\n/* istanbul ignore else */\nif (!process.env.WS_NO_BUFFER_UTIL) {\n try {\n const bufferUtil = require('bufferutil');\n\n module.exports.mask = function (source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bufferUtil.mask(source, mask, output, offset, length);\n };\n\n module.exports.unmask = function (buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bufferUtil.unmask(buffer, mask);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n","'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n","'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed if context takeover is disabled\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n * @param {Boolean} [isServer=false] Create the instance in either server or\n * client mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(options, isServer, maxPayload) {\n this._maxPayload = maxPayload | 0;\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._isServer = !!isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) {\n data = new FastBuffer(data.buffer, data.byteOffset, data.length - 4);\n }\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n\n //\n // The choice to employ `zlib.reset()` over `zlib.close()` is dictated by the\n // fact that in Node.js versions prior to 13.10.0, the callback for\n // `zlib.flush()` is not called if `zlib.close()` is used. Utilizing\n // `zlib.reset()` ensures that either the callback is invoked or an error is\n // emitted.\n //\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n\n if (this[kError]) {\n this[kCallback](this[kError]);\n return;\n }\n\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n","'use strict';\n\nconst { isUtf8 } = require('buffer');\n\nconst { hasBlob } = require('./constants');\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Determines whether a value is a `Blob`.\n *\n * @param {*} value The value to be tested\n * @return {Boolean} `true` if `value` is a `Blob`, else `false`\n * @private\n */\nfunction isBlob(value) {\n return (\n hasBlob &&\n typeof value === 'object' &&\n typeof value.arrayBuffer === 'function' &&\n typeof value.type === 'string' &&\n typeof value.stream === 'function' &&\n (value[Symbol.toStringTag] === 'Blob' ||\n value[Symbol.toStringTag] === 'File')\n );\n}\n\nmodule.exports = {\n isBlob,\n isValidStatusCode,\n isValidUTF8: _isValidUTF8,\n tokenChars\n};\n\nif (isUtf8) {\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf);\n };\n} /* istanbul ignore else */ else if (!process.env.WS_NO_UTF_8_VALIDATE) {\n try {\n const isValidUTF8 = require('utf-8-validate');\n\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n","'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst FastBuffer = Buffer[Symbol.species];\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\nconst DEFER_EVENT = 6;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {Object} [options] Options object\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {String} [options.binaryType=nodebuffer] The type for binary data\n * @param {Object} [options.extensions] An object containing the negotiated\n * extensions\n * @param {Boolean} [options.isServer=false] Specifies whether to operate in\n * client or server mode\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n */\n constructor(options = {}) {\n super();\n\n this._allowSynchronousEvents =\n options.allowSynchronousEvents !== undefined\n ? options.allowSynchronousEvents\n : true;\n this._binaryType = options.binaryType || BINARY_TYPES[0];\n this._extensions = options.extensions || {};\n this._isServer = !!options.isServer;\n this._maxPayload = options.maxPayload | 0;\n this._skipUTF8Validation = !!options.skipUTF8Validation;\n this[kWebSocket] = undefined;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragments = [];\n\n this._errored = false;\n this._loop = false;\n this._state = GET_INFO;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n\n return new FastBuffer(buf.buffer, buf.byteOffset, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n this.getInfo(cb);\n break;\n case GET_PAYLOAD_LENGTH_16:\n this.getPayloadLength16(cb);\n break;\n case GET_PAYLOAD_LENGTH_64:\n this.getPayloadLength64(cb);\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n this.getData(cb);\n break;\n case INFLATING:\n case DEFER_EVENT:\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n if (!this._errored) cb();\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @param {Function} cb Callback\n * @private\n */\n getInfo(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n const error = this.createError(\n RangeError,\n 'RSV2 and RSV3 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_2_3'\n );\n\n cb(error);\n return;\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fragmented) {\n const error = this.createError(\n RangeError,\n 'invalid opcode 0',\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n const error = this.createError(\n RangeError,\n 'FIN must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_FIN'\n );\n\n cb(error);\n return;\n }\n\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (\n this._payloadLength > 0x7d ||\n (this._opcode === 0x08 && this._payloadLength === 1)\n ) {\n const error = this.createError(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n } else {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n } else if (this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength16(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength64(cb) {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n const error = this.createError(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n this.haveLength(cb);\n }\n\n /**\n * Payload length has been read.\n *\n * @param {Function} cb Callback\n * @private\n */\n haveLength(cb) {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n\n if (\n this._masked &&\n (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0\n ) {\n unmask(data, this._mask);\n }\n }\n\n if (this._opcode > 0x07) {\n this.controlMessage(data, cb);\n return;\n }\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its length is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n this.dataMessage(cb);\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._fragments.push(buf);\n }\n\n this.dataMessage(cb);\n if (this._state === GET_INFO) this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @param {Function} cb Callback\n * @private\n */\n dataMessage(cb) {\n if (!this._fin) {\n this._state = GET_INFO;\n return;\n }\n\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else if (this._binaryType === 'blob') {\n data = new Blob(fragments);\n } else {\n data = fragments;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit('message', data, true);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', data, true);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n if (this._state === INFLATING || this._allowSynchronousEvents) {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data, cb) {\n if (this._opcode === 0x08) {\n if (data.length === 0) {\n this._loop = false;\n this.emit('conclude', 1005, EMPTY_BUFFER);\n this.end();\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n const error = this.createError(\n RangeError,\n `invalid status code ${code}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CLOSE_CODE'\n );\n\n cb(error);\n return;\n }\n\n const buf = new FastBuffer(\n data.buffer,\n data.byteOffset + 2,\n data.length - 2\n );\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n this._loop = false;\n this.emit('conclude', code, buf);\n this.end();\n }\n\n this._state = GET_INFO;\n return;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n\n /**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\n createError(ErrorCtor, message, prefix, statusCode, errorCode) {\n this._loop = false;\n this._errored = true;\n\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, this.createError);\n err.code = errorCode;\n err[kStatusCode] = statusCode;\n return err;\n }\n}\n\nmodule.exports = Receiver;\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex\" }] */\n\n'use strict';\n\nconst { Duplex } = require('stream');\nconst { randomFillSync } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER, kWebSocket, NOOP } = require('./constants');\nconst { isBlob, isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst kByteLength = Symbol('kByteLength');\nconst maskBuffer = Buffer.alloc(4);\nconst RANDOM_POOL_SIZE = 8 * 1024;\nlet randomPool;\nlet randomPoolPointer = RANDOM_POOL_SIZE;\n\nconst DEFAULT = 0;\nconst DEFLATING = 1;\nconst GET_BLOB_DATA = 2;\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {Duplex} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Function} [generateMask] The function used to generate the masking\n * key\n */\n constructor(socket, extensions, generateMask) {\n this._extensions = extensions || {};\n\n if (generateMask) {\n this._generateMask = generateMask;\n this._maskBuffer = Buffer.alloc(4);\n }\n\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._queue = [];\n this._state = DEFAULT;\n this.onerror = NOOP;\n this[kWebSocket] = undefined;\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {(Buffer|String)} data The data to frame\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {(Buffer|String)[]} The framed data\n * @public\n */\n static frame(data, options) {\n let mask;\n let merge = false;\n let offset = 2;\n let skipMasking = false;\n\n if (options.mask) {\n mask = options.maskBuffer || maskBuffer;\n\n if (options.generateMask) {\n options.generateMask(mask);\n } else {\n if (randomPoolPointer === RANDOM_POOL_SIZE) {\n /* istanbul ignore else */\n if (randomPool === undefined) {\n //\n // This is lazily initialized because server-sent frames must not\n // be masked so it may never be used.\n //\n randomPool = Buffer.alloc(RANDOM_POOL_SIZE);\n }\n\n randomFillSync(randomPool, 0, RANDOM_POOL_SIZE);\n randomPoolPointer = 0;\n }\n\n mask[0] = randomPool[randomPoolPointer++];\n mask[1] = randomPool[randomPoolPointer++];\n mask[2] = randomPool[randomPoolPointer++];\n mask[3] = randomPool[randomPoolPointer++];\n }\n\n skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;\n offset = 6;\n }\n\n let dataLength;\n\n if (typeof data === 'string') {\n if (\n (!options.mask || skipMasking) &&\n options[kByteLength] !== undefined\n ) {\n dataLength = options[kByteLength];\n } else {\n data = Buffer.from(data);\n dataLength = data.length;\n }\n } else {\n dataLength = data.length;\n merge = options.mask && options.readOnly && !skipMasking;\n }\n\n let payloadLength = dataLength;\n\n if (dataLength >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (dataLength > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(dataLength, 2);\n } else if (payloadLength === 127) {\n target[2] = target[3] = 0;\n target.writeUIntBE(dataLength, 4, 6);\n }\n\n if (!options.mask) return [target, data];\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (skipMasking) return [target, data];\n\n if (merge) {\n applyMask(data, mask, target, offset, dataLength);\n return [target];\n }\n\n applyMask(data, mask, data, 0, dataLength);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {(String|Buffer)} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || !data.length) {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n\n if (typeof data === 'string') {\n buf.write(data, 2);\n } else {\n buf.set(data, 2);\n }\n }\n\n const options = {\n [kByteLength]: buf.length,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x08,\n readOnly: false,\n rsv1: false\n };\n\n if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, buf, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(buf, options), cb);\n }\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x09,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x0a,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (\n rsv1 &&\n perMessageDeflate &&\n perMessageDeflate.params[\n perMessageDeflate._isServer\n ? 'server_no_context_takeover'\n : 'client_no_context_takeover'\n ]\n ) {\n rsv1 = byteLength >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n const opts = {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, this._compress, opts, cb]);\n } else {\n this.getBlobData(data, this._compress, opts, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, this._compress, opts, cb]);\n } else {\n this.dispatch(data, this._compress, opts, cb);\n }\n }\n\n /**\n * Gets the contents of a blob as binary data.\n *\n * @param {Blob} blob The blob\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * the data\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n getBlobData(blob, compress, options, cb) {\n this._bufferedBytes += options[kByteLength];\n this._state = GET_BLOB_DATA;\n\n blob\n .arrayBuffer()\n .then((arrayBuffer) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while the blob was being read'\n );\n\n //\n // `callCallbacks` is called in the next tick to ensure that errors\n // that might be thrown in the callbacks behave like errors thrown\n // outside the promise chain.\n //\n process.nextTick(callCallbacks, this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n const data = toBuffer(arrayBuffer);\n\n if (!compress) {\n this._state = DEFAULT;\n this.sendFrame(Sender.frame(data, options), cb);\n this.dequeue();\n } else {\n this.dispatch(data, compress, options, cb);\n }\n })\n .catch((err) => {\n //\n // `onError` is called in the next tick for the same reason that\n // `callCallbacks` above is.\n //\n process.nextTick(onError, this, err, cb);\n });\n }\n\n /**\n * Dispatches a message.\n *\n * @param {(Buffer|String)} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += options[kByteLength];\n this._state = DEFLATING;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n callCallbacks(this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n this._state = DEFAULT;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (this._state === DEFAULT && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[3][kByteLength];\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[3][kByteLength];\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {(Buffer | String)[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n\n/**\n * Calls queued callbacks with an error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error to call the callbacks with\n * @param {Function} [cb] The first callback\n * @private\n */\nfunction callCallbacks(sender, err, cb) {\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < sender._queue.length; i++) {\n const params = sender._queue[i];\n const callback = params[params.length - 1];\n\n if (typeof callback === 'function') callback(err);\n }\n}\n\n/**\n * Handles a `Sender` error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error\n * @param {Function} [cb] The first pending callback\n * @private\n */\nfunction onError(sender, err, cb) {\n callCallbacks(sender, err, cb);\n sender.onerror(err);\n}\n","'use strict';\n\nconst { kForOnEventAttribute, kListener } = require('./constants');\n\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @throws {TypeError} If the `type` argument is not specified\n */\n constructor(type) {\n this[kTarget] = null;\n this[kType] = type;\n }\n\n /**\n * @type {*}\n */\n get target() {\n return this[kTarget];\n }\n\n /**\n * @type {String}\n */\n get type() {\n return this[kType];\n }\n}\n\nObject.defineProperty(Event.prototype, 'target', { enumerable: true });\nObject.defineProperty(Event.prototype, 'type', { enumerable: true });\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {Number} [options.code=0] The status code explaining why the\n * connection was closed\n * @param {String} [options.reason=''] A human-readable string explaining why\n * the connection was closed\n * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n * connection was cleanly closed\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kCode] = options.code === undefined ? 0 : options.code;\n this[kReason] = options.reason === undefined ? '' : options.reason;\n this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n }\n\n /**\n * @type {Number}\n */\n get code() {\n return this[kCode];\n }\n\n /**\n * @type {String}\n */\n get reason() {\n return this[kReason];\n }\n\n /**\n * @type {Boolean}\n */\n get wasClean() {\n return this[kWasClean];\n }\n}\n\nObject.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.error=null] The error that generated this event\n * @param {String} [options.message=''] The error message\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kError] = options.error === undefined ? null : options.error;\n this[kMessage] = options.message === undefined ? '' : options.message;\n }\n\n /**\n * @type {*}\n */\n get error() {\n return this[kError];\n }\n\n /**\n * @type {String}\n */\n get message() {\n return this[kMessage];\n }\n}\n\nObject.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });\nObject.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.data=null] The message content\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kData] = options.data === undefined ? null : options.data;\n }\n\n /**\n * @type {*}\n */\n get data() {\n return this[kData];\n }\n}\n\nObject.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {(Function|Object)} handler The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, handler, options = {}) {\n for (const listener of this.listeners(type)) {\n if (\n !options[kForOnEventAttribute] &&\n listener[kListener] === handler &&\n !listener[kForOnEventAttribute]\n ) {\n return;\n }\n }\n\n let wrapper;\n\n if (type === 'message') {\n wrapper = function onMessage(data, isBinary) {\n const event = new MessageEvent('message', {\n data: isBinary ? data : data.toString()\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'close') {\n wrapper = function onClose(code, message) {\n const event = new CloseEvent('close', {\n code,\n reason: message.toString(),\n wasClean: this._closeFrameReceived && this._closeFrameSent\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'error') {\n wrapper = function onError(error) {\n const event = new ErrorEvent('error', {\n error,\n message: error.message\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'open') {\n wrapper = function onOpen() {\n const event = new Event('open');\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else {\n return;\n }\n\n wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n wrapper[kListener] = handler;\n\n if (options.once) {\n this.once(type, wrapper);\n } else {\n this.on(type, wrapper);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {(Function|Object)} handler The listener to remove\n * @public\n */\n removeEventListener(type, handler) {\n for (const listener of this.listeners(type)) {\n if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n this.removeListener(type, listener);\n break;\n }\n }\n }\n};\n\nmodule.exports = {\n CloseEvent,\n ErrorEvent,\n Event,\n EventTarget,\n MessageEvent\n};\n\n/**\n * Call an event listener\n *\n * @param {(Function|Object)} listener The listener to call\n * @param {*} thisArg The value to use as `this`` when calling the listener\n * @param {Event} event The event to pass to the listener\n * @private\n */\nfunction callListener(listener, thisArg, event) {\n if (typeof listener === 'object' && listener.handleEvent) {\n listener.handleEvent.call(listener, event);\n } else {\n listener.call(thisArg, event);\n }\n}\n","'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let code = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes || code === 0x20 || code === 0x09) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex|Readable$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { Duplex, Readable } = require('stream');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst { isBlob } = require('./validation');\n\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n GUID,\n kForOnEventAttribute,\n kListener,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst {\n EventTarget: { addEventListener, removeEventListener }\n} = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst closeTimeout = 30 * 1000;\nconst kAborted = Symbol('kAborted');\nconst protocolVersions = [8, 13];\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst subprotocolRegex = /^[!#$%&'*+\\-.0-9A-Z^_`|a-z~]+$/;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = EMPTY_BUFFER;\n this._closeTimer = null;\n this._errorEmitted = false;\n this._extensions = {};\n this._paused = false;\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (protocols === undefined) {\n protocols = [];\n } else if (!Array.isArray(protocols)) {\n if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = [];\n } else {\n protocols = [protocols];\n }\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._autoPong = options.autoPong;\n this._isServer = true;\n }\n }\n\n /**\n * For historical reasons, the custom \"nodebuffer\" type is used by the default\n * instead of \"blob\".\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {Boolean}\n */\n get isPaused() {\n return this._paused;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onclose() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onerror() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onopen() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onmessage() {\n return null;\n }\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Object} options Options object\n * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.maxPayload=0] The maximum allowed message size\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\n setSocket(socket, head, options) {\n const receiver = new Receiver({\n allowSynchronousEvents: options.allowSynchronousEvents,\n binaryType: this.binaryType,\n extensions: this._extensions,\n isServer: this._isServer,\n maxPayload: options.maxPayload,\n skipUTF8Validation: options.skipUTF8Validation\n });\n\n const sender = new Sender(socket, this._extensions, options.generateMask);\n\n this._receiver = receiver;\n this._sender = sender;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n sender[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n sender.onerror = senderOnError;\n\n //\n // These methods may not be available if `socket` is just a `Duplex`.\n //\n if (socket.setTimeout) socket.setTimeout(0);\n if (socket.setNoDelay) socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {(String|Buffer)} [data] The reason why the connection is\n * closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (\n this._closeFrameSent &&\n (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n ) {\n this._socket.end();\n }\n\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n\n if (\n this._closeFrameReceived ||\n this._receiver._writableState.errorEmitted\n ) {\n this._socket.end();\n }\n });\n\n setCloseTimer(this);\n }\n\n /**\n * Pause the socket.\n *\n * @public\n */\n pause() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = true;\n this._socket.pause();\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Resume the socket.\n *\n * @public\n */\n resume() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = false;\n if (!this._receiver._writableState.needDrain) this._socket.resume();\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'isPaused',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n enumerable: true,\n get() {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) return listener[kListener];\n }\n\n return null;\n },\n set(handler) {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) {\n this.removeListener(method, listener);\n break;\n }\n }\n\n if (typeof handler !== 'function') return;\n\n this.addEventListener(method, handler, {\n [kForOnEventAttribute]: true\n });\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {Array} protocols The subprotocols\n * @param {Object} [options] Connection options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether any\n * of the `'message'`, `'ping'`, and `'pong'` events can be emitted multiple\n * times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Function} [options.finishRequest] A function which can be used to\n * customize the headers of each http request before it is sent\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n allowSynchronousEvents: true,\n autoPong: true,\n protocolVersion: protocolVersions[1],\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: 'GET',\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n websocket._autoPong = opts.autoPong;\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n } else {\n try {\n parsedUrl = new URL(address);\n } catch (e) {\n throw new SyntaxError(`Invalid URL: ${address}`);\n }\n }\n\n if (parsedUrl.protocol === 'http:') {\n parsedUrl.protocol = 'ws:';\n } else if (parsedUrl.protocol === 'https:') {\n parsedUrl.protocol = 'wss:';\n }\n\n websocket._url = parsedUrl.href;\n\n const isSecure = parsedUrl.protocol === 'wss:';\n const isIpcUrl = parsedUrl.protocol === 'ws+unix:';\n let invalidUrlMessage;\n\n if (parsedUrl.protocol !== 'ws:' && !isSecure && !isIpcUrl) {\n invalidUrlMessage =\n 'The URL\\'s protocol must be one of \"ws:\", \"wss:\", ' +\n '\"http:\", \"https:\", or \"ws+unix:\"';\n } else if (isIpcUrl && !parsedUrl.pathname) {\n invalidUrlMessage = \"The URL's pathname is empty\";\n } else if (parsedUrl.hash) {\n invalidUrlMessage = 'The URL contains a fragment identifier';\n }\n\n if (invalidUrlMessage) {\n const err = new SyntaxError(invalidUrlMessage);\n\n if (websocket._redirects === 0) {\n throw err;\n } else {\n emitErrorAndClose(websocket, err);\n return;\n }\n }\n\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const request = isSecure ? https.request : http.request;\n const protocolSet = new Set();\n let perMessageDeflate;\n\n opts.createConnection =\n opts.createConnection || (isSecure ? tlsConnect : netConnect);\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n ...opts.headers,\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket'\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate(\n opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},\n false,\n opts.maxPayload\n );\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols.length) {\n for (const protocol of protocols) {\n if (\n typeof protocol !== 'string' ||\n !subprotocolRegex.test(protocol) ||\n protocolSet.has(protocol)\n ) {\n throw new SyntaxError(\n 'An invalid or duplicated subprotocol was specified'\n );\n }\n\n protocolSet.add(protocol);\n }\n\n opts.headers['Sec-WebSocket-Protocol'] = protocols.join(',');\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isIpcUrl) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n let req;\n\n if (opts.followRedirects) {\n if (websocket._redirects === 0) {\n websocket._originalIpc = isIpcUrl;\n websocket._originalSecure = isSecure;\n websocket._originalHostOrSocketPath = isIpcUrl\n ? opts.socketPath\n : parsedUrl.host;\n\n const headers = options && options.headers;\n\n //\n // Shallow copy the user provided options so that headers can be changed\n // without mutating the original object.\n //\n options = { ...options, headers: {} };\n\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n options.headers[key.toLowerCase()] = value;\n }\n }\n } else if (websocket.listenerCount('redirect') === 0) {\n const isSameHost = isIpcUrl\n ? websocket._originalIpc\n ? opts.socketPath === websocket._originalHostOrSocketPath\n : false\n : websocket._originalIpc\n ? false\n : parsedUrl.host === websocket._originalHostOrSocketPath;\n\n if (!isSameHost || (websocket._originalSecure && !isSecure)) {\n //\n // Match curl 7.77.0 behavior and drop the following headers. These\n // headers are also dropped when following a redirect to a subdomain.\n //\n delete opts.headers.authorization;\n delete opts.headers.cookie;\n\n if (!isSameHost) delete opts.headers.host;\n\n opts.auth = undefined;\n }\n }\n\n //\n // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n // If the `Authorization` header is set, then there is nothing to do as it\n // will take precedence.\n //\n if (opts.auth && !options.headers.authorization) {\n options.headers.authorization =\n 'Basic ' + Buffer.from(opts.auth).toString('base64');\n }\n\n req = websocket._req = request(opts);\n\n if (websocket._redirects) {\n //\n // Unlike what is done for the `'upgrade'` event, no early exit is\n // triggered here if the user calls `websocket.close()` or\n // `websocket.terminate()` from a listener of the `'redirect'` event. This\n // is because the user can also call `request.destroy()` with an error\n // before calling `websocket.close()` or `websocket.terminate()` and this\n // would result in an error being emitted on the `request` object with no\n // `'error'` event listeners attached.\n //\n websocket.emit('redirect', websocket.url, req);\n }\n } else {\n req = websocket._req = request(opts);\n }\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req[kAborted]) return;\n\n req = websocket._req = null;\n emitErrorAndClose(websocket, err);\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n let addr;\n\n try {\n addr = new URL(location, address);\n } catch (e) {\n const err = new SyntaxError(`Invalid URL: ${location}`);\n emitErrorAndClose(websocket, err);\n return;\n }\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the\n // `'upgrade'` event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n const upgrade = res.headers.upgrade;\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n abortHandshake(websocket, socket, 'Invalid Upgrade header');\n return;\n }\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n let protError;\n\n if (serverProt !== undefined) {\n if (!protocolSet.size) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (!protocolSet.has(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n } else if (protocolSet.size) {\n protError = 'Server sent no subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n if (secWebSocketExtensions !== undefined) {\n if (!perMessageDeflate) {\n const message =\n 'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n 'was requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n let extensions;\n\n try {\n extensions = parse(secWebSocketExtensions);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n const extensionNames = Object.keys(extensions);\n\n if (\n extensionNames.length !== 1 ||\n extensionNames[0] !== PerMessageDeflate.extensionName\n ) {\n const message = 'Server indicated an extension that was not requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n try {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n\n websocket.setSocket(socket, head, {\n allowSynchronousEvents: opts.allowSynchronousEvents,\n generateMask: opts.generateMask,\n maxPayload: opts.maxPayload,\n skipUTF8Validation: opts.skipUTF8Validation\n });\n });\n\n if (opts.finishRequest) {\n opts.finishRequest(req, websocket);\n } else {\n req.end();\n }\n}\n\n/**\n * Emit the `'error'` and `'close'` events.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n websocket._readyState = WebSocket.CLOSING;\n //\n // The following assignment is practically useless and is done only for\n // consistency.\n //\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n * abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream[kAborted] = true;\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n process.nextTick(emitErrorAndClose, websocket, err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = isBlob(data) ? data.size : toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n process.nextTick(cb, err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {Buffer} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (websocket._socket[kWebSocket] === undefined) return;\n\n websocket._socket.removeListener('data', socketOnData);\n process.nextTick(resume, websocket._socket);\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n const websocket = this[kWebSocket];\n\n if (!websocket.isPaused) websocket._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket._socket[kWebSocket] !== undefined) {\n websocket._socket.removeListener('data', socketOnData);\n\n //\n // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n // https://github.com/websockets/ws/issues/1940.\n //\n process.nextTick(resume, websocket._socket);\n\n websocket.close(err[kStatusCode]);\n }\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {Buffer|ArrayBuffer|Buffer[])} data The message\n * @param {Boolean} isBinary Specifies whether the message is binary or not\n * @private\n */\nfunction receiverOnMessage(data, isBinary) {\n this[kWebSocket].emit('message', data, isBinary);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n stream.resume();\n}\n\n/**\n * The `Sender` error event handler.\n *\n * @param {Error} The error\n * @private\n */\nfunction senderOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket.readyState === WebSocket.CLOSED) return;\n if (websocket.readyState === WebSocket.OPEN) {\n websocket._readyState = WebSocket.CLOSING;\n setCloseTimer(websocket);\n }\n\n //\n // `socket.end()` is used instead of `socket.destroy()` to allow the other\n // peer to finish sending queued data. There is no need to set a timer here\n // because `CLOSING` means that it is already set or not needed.\n //\n this._socket.end();\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * Set a timer to destroy the underlying raw socket of a WebSocket.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @private\n */\nfunction setCloseTimer(websocket) {\n websocket._closeTimer = setTimeout(\n websocket._socket.destroy.bind(websocket._socket),\n closeTimeout\n );\n}\n\n/**\n * The listener of the socket `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('data', socketOnData);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n let chunk;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written and `readable.read()`\n // will return `null`. If instead, the socket is paused, any possible buffered\n // data will be read as a single chunk.\n //\n if (\n !this._readableState.endEmitted &&\n !websocket._closeFrameReceived &&\n !websocket._receiver._writableState.errorEmitted &&\n (chunk = websocket._socket.read()) !== null\n ) {\n websocket._receiver.write(chunk);\n }\n\n websocket._receiver.end();\n\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the socket `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the socket `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the socket `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^WebSocket$\" }] */\n'use strict';\n\nconst WebSocket = require('./websocket');\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let terminateOnDestroy = true;\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg, isBinary) {\n const data =\n !isBinary && duplex._readableState.objectMode ? msg.toString() : msg;\n\n if (!duplex.push(data)) ws.pause();\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n //\n // - If the `'error'` event is emitted before the `'open'` event, then\n // `ws.terminate()` is a noop as no socket is assigned.\n // - Otherwise, the error is re-emitted by the listener of the `'error'`\n // event of the `Receiver` object. The listener already closes the\n // connection by calling `ws.close()`. This allows a close frame to be\n // sent to the other peer. If `ws.terminate()` is called right after this,\n // then the close frame might not be sent.\n terminateOnDestroy = false;\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n\n if (terminateOnDestroy) ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (ws.isPaused) ws.resume();\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n","'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.\n *\n * @param {String} header The field value of the header\n * @return {Set} The subprotocol names\n * @public\n */\nfunction parse(header) {\n const protocols = new Set();\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (i; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n\n const protocol = header.slice(start, end);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n\n if (start === -1 || end !== -1) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n const protocol = header.slice(start, i);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n return protocols;\n}\n\nmodule.exports = { parse };\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst http = require('http');\nconst { Duplex } = require('stream');\nconst { createHash } = require('crypto');\n\nconst extension = require('./extension');\nconst PerMessageDeflate = require('./permessage-deflate');\nconst subprotocol = require('./subprotocol');\nconst WebSocket = require('./websocket');\nconst { GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n * server to use\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket`\n * class to use. It must be the `WebSocket` class or class that extends it\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n allowSynchronousEvents: true,\n autoPong: true,\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n WebSocket,\n ...options\n };\n\n if (\n (options.port == null && !options.server && !options.noServer) ||\n (options.port != null && (options.server || options.noServer)) ||\n (options.server && options.noServer)\n ) {\n throw new TypeError(\n 'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n 'must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = http.createServer((req, res) => {\n const body = http.STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) {\n this.clients = new Set();\n this._shouldEmitClose = false;\n }\n\n this.options = options;\n this._state = RUNNING;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Stop the server from accepting new connections and emit the `'close'` event\n * when all existing connections are closed.\n *\n * @param {Function} [cb] A one-time listener for the `'close'` event\n * @public\n */\n close(cb) {\n if (this._state === CLOSED) {\n if (cb) {\n this.once('close', () => {\n cb(new Error('The server is not running'));\n });\n }\n\n process.nextTick(emitClose, this);\n return;\n }\n\n if (cb) this.once('close', cb);\n\n if (this._state === CLOSING) return;\n this._state = CLOSING;\n\n if (this.options.noServer || this.options.server) {\n if (this._server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n }\n\n if (this.clients) {\n if (!this.clients.size) {\n process.nextTick(emitClose, this);\n } else {\n this._shouldEmitClose = true;\n }\n } else {\n process.nextTick(emitClose, this);\n }\n } else {\n const server = this._server;\n\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // The HTTP/S server was created internally. Close it, and rely on its\n // `'close'` event.\n //\n server.close(() => {\n emitClose(this);\n });\n }\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key = req.headers['sec-websocket-key'];\n const upgrade = req.headers.upgrade;\n const version = +req.headers['sec-websocket-version'];\n\n if (req.method !== 'GET') {\n const message = 'Invalid HTTP method';\n abortHandshakeOrEmitwsClientError(this, req, socket, 405, message);\n return;\n }\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n const message = 'Invalid Upgrade header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (key === undefined || !keyRegex.test(key)) {\n const message = 'Missing or invalid Sec-WebSocket-Key header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (version !== 13 && version !== 8) {\n const message = 'Missing or invalid Sec-WebSocket-Version header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message, {\n 'Sec-WebSocket-Version': '13, 8'\n });\n return;\n }\n\n if (!this.shouldHandle(req)) {\n abortHandshake(socket, 400);\n return;\n }\n\n const secWebSocketProtocol = req.headers['sec-websocket-protocol'];\n let protocols = new Set();\n\n if (secWebSocketProtocol !== undefined) {\n try {\n protocols = subprotocol.parse(secWebSocketProtocol);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Protocol header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n const secWebSocketExtensions = req.headers['sec-websocket-extensions'];\n const extensions = {};\n\n if (\n this.options.perMessageDeflate &&\n secWebSocketExtensions !== undefined\n ) {\n const perMessageDeflate = new PerMessageDeflate(\n this.options.perMessageDeflate,\n true,\n this.options.maxPayload\n );\n\n try {\n const offers = extension.parse(secWebSocketExtensions);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n const message =\n 'Invalid or unacceptable Sec-WebSocket-Extensions header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(\n extensions,\n key,\n protocols,\n req,\n socket,\n head,\n cb\n );\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(extensions, key, protocols, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {Object} extensions The accepted extensions\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Set} protocols The subprotocols\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(extensions, key, protocols, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new this.options.WebSocket(null, undefined, this.options);\n\n if (protocols.size) {\n //\n // Optionally call external protocol selection handler.\n //\n const protocol = this.options.handleProtocols\n ? this.options.handleProtocols(protocols, req)\n : protocols.values().next().value;\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = extension.format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, {\n allowSynchronousEvents: this.options.allowSynchronousEvents,\n maxPayload: this.options.maxPayload,\n skipUTF8Validation: this.options.skipUTF8Validation\n });\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => {\n this.clients.delete(ws);\n\n if (this._shouldEmitClose && !this.clients.size) {\n process.nextTick(emitClose, this);\n }\n });\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of <event, listener>\n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.<String, Function>} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server._state = CLOSED;\n server.emit('close');\n}\n\n/**\n * Handle socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n //\n // The socket is writable unless the user destroyed or ended it before calling\n // `server.handleUpgrade()` or in the `verifyClient` function, which is a user\n // error. Handling this does not make much sense as the worst that can happen\n // is that some of the data written by the user might be discarded due to the\n // call to `socket.end()` below, which triggers an `'error'` event that in\n // turn causes the socket to be destroyed.\n //\n message = message || http.STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.once('finish', socket.destroy);\n\n socket.end(\n `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n}\n\n/**\n * Emit a `'wsClientError'` event on a `WebSocketServer` if there is at least\n * one listener for it, otherwise call `abortHandshake()`.\n *\n * @param {WebSocketServer} server The WebSocket server\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} message The HTTP response body\n * @param {Object} [headers] The HTTP response headers\n * @private\n */\nfunction abortHandshakeOrEmitwsClientError(\n server,\n req,\n socket,\n code,\n message,\n headers\n) {\n if (server.listenerCount('wsClientError')) {\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError);\n\n server.emit('wsClientError', err, socket, req);\n } else {\n abortHandshake(socket, code, message, headers);\n }\n}\n","module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n var pathext = options.pathExt !== undefined ?\n options.pathExt : process.env.PATHEXT\n\n if (!pathext) {\n return true\n }\n\n pathext = pathext.split(';')\n if (pathext.indexOf('') !== -1) {\n return true\n }\n for (var i = 0; i < pathext.length; i++) {\n var p = pathext[i].toLowerCase()\n if (p && path.substr(-p.length).toLowerCase() === p) {\n return true\n }\n }\n return false\n}\n\nfunction checkStat (stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) {\n return false\n }\n return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, path, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), path, options)\n}\n","module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n var mod = stat.mode\n var uid = stat.uid\n var gid = stat.gid\n\n var myUid = options.uid !== undefined ?\n options.uid : process.getuid && process.getuid()\n var myGid = options.gid !== undefined ?\n options.gid : process.getgid && process.getgid()\n\n var u = parseInt('100', 8)\n var g = parseInt('010', 8)\n var o = parseInt('001', 8)\n var ug = u | g\n\n var ret = (mod & o) ||\n (mod & g) && gid === myGid ||\n (mod & u) && uid === myUid ||\n (mod & ug) && myUid === 0\n\n return ret\n}\n","var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n core = require('./windows.js')\n} else {\n core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n if (!cb) {\n if (typeof Promise !== 'function') {\n throw new TypeError('callback not provided')\n }\n\n return new Promise(function (resolve, reject) {\n isexe(path, options || {}, function (er, is) {\n if (er) {\n reject(er)\n } else {\n resolve(is)\n }\n })\n })\n }\n\n core(path, options || {}, function (er, is) {\n // ignore EACCES because that just means we aren't allowed to run it\n if (er) {\n if (er.code === 'EACCES' || options && options.ignoreErrors) {\n er = null\n is = false\n }\n }\n cb(er, is)\n })\n}\n\nfunction sync (path, options) {\n // my kingdom for a filtered catch\n try {\n return core.sync(path, options || {})\n } catch (er) {\n if (options && options.ignoreErrors || er.code === 'EACCES') {\n return false\n } else {\n throw er\n }\n }\n}\n","const isWindows = process.platform === 'win32' ||\n process.env.OSTYPE === 'cygwin' ||\n process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n const colon = opt.colon || COLON\n\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n : (\n [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(opt.path || process.env.PATH ||\n /* istanbul ignore next: very unusual */ '').split(colon),\n ]\n )\n const pathExtExe = isWindows\n ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n : ''\n const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n pathExt.unshift('')\n }\n\n return {\n pathEnv,\n pathExt,\n pathExtExe,\n }\n}\n\nconst which = (cmd, opt, cb) => {\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (!opt)\n opt = {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n const step = i => new Promise((resolve, reject) => {\n if (i === pathEnv.length)\n return opt.all && found.length ? resolve(found)\n : reject(getNotFoundError(cmd))\n\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n resolve(subStep(p, i, 0))\n })\n\n const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n if (ii === pathExt.length)\n return resolve(step(i + 1))\n const ext = pathExt[ii]\n isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n if (!er && is) {\n if (opt.all)\n found.push(p + ext)\n else\n return resolve(p + ext)\n }\n return resolve(subStep(p, i, ii + 1))\n })\n })\n\n return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n opt = opt || {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (let i = 0; i < pathEnv.length; i ++) {\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n for (let j = 0; j < pathExt.length; j ++) {\n const cur = p + pathExt[j]\n try {\n const is = isexe.sync(cur, { pathExt: pathExtExe })\n if (is) {\n if (opt.all)\n found.push(cur)\n else\n return cur\n }\n } catch (ex) {}\n }\n }\n\n if (opt.all && found.length)\n return found\n\n if (opt.nothrow)\n return null\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n","'use strict';\n\nconst pathKey = (options = {}) => {\n\tconst environment = options.env || process.env;\n\tconst platform = options.platform || process.platform;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(environment).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n};\n\nmodule.exports = pathKey;\n// TODO: Remove this for the next major release\nmodule.exports.default = pathKey;\n","'use strict';\n\nconst path = require('path');\nconst which = require('which');\nconst getPathKey = require('path-key');\n\nfunction resolveCommandAttempt(parsed, withoutPathExt) {\n const env = parsed.options.env || process.env;\n const cwd = process.cwd();\n const hasCustomCwd = parsed.options.cwd != null;\n // Worker threads do not have process.chdir()\n const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled;\n\n // If a custom `cwd` was specified, we need to change the process cwd\n // because `which` will do stat calls but does not support a custom cwd\n if (shouldSwitchCwd) {\n try {\n process.chdir(parsed.options.cwd);\n } catch (err) {\n /* Empty */\n }\n }\n\n let resolved;\n\n try {\n resolved = which.sync(parsed.command, {\n path: env[getPathKey({ env })],\n pathExt: withoutPathExt ? path.delimiter : undefined,\n });\n } catch (e) {\n /* Empty */\n } finally {\n if (shouldSwitchCwd) {\n process.chdir(cwd);\n }\n }\n\n // If we successfully resolved, ensure that an absolute path is returned\n // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it\n if (resolved) {\n resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved);\n }\n\n return resolved;\n}\n\nfunction resolveCommand(parsed) {\n return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);\n}\n\nmodule.exports = resolveCommand;\n","'use strict';\n\n// See http://www.robvanderwoude.com/escapechars.php\nconst metaCharsRegExp = /([()\\][%!^\"`<>&|;, *?])/g;\n\nfunction escapeCommand(arg) {\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n return arg;\n}\n\nfunction escapeArgument(arg, doubleEscapeMetaChars) {\n // Convert to string\n arg = `${arg}`;\n\n // Algorithm below is based on https://qntm.org/cmd\n // It's slightly altered to disable JS backtracking to avoid hanging on specially crafted input\n // Please see https://github.com/moxystudio/node-cross-spawn/pull/160 for more information\n\n // Sequence of backslashes followed by a double quote:\n // double up all the backslashes and escape the double quote\n arg = arg.replace(/(?=(\\\\+?)?)\\1\"/g, '$1$1\\\\\"');\n\n // Sequence of backslashes followed by the end of the string\n // (which will become a double quote later):\n // double up all the backslashes\n arg = arg.replace(/(?=(\\\\+?)?)\\1$/, '$1$1');\n\n // All other backslashes occur literally\n\n // Quote the whole thing:\n arg = `\"${arg}\"`;\n\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n // Double escape meta chars if necessary\n if (doubleEscapeMetaChars) {\n arg = arg.replace(metaCharsRegExp, '^$1');\n }\n\n return arg;\n}\n\nmodule.exports.command = escapeCommand;\nmodule.exports.argument = escapeArgument;\n","'use strict';\nmodule.exports = /^#!(.*)/;\n","'use strict';\nconst shebangRegex = require('shebang-regex');\n\nmodule.exports = (string = '') => {\n\tconst match = string.match(shebangRegex);\n\n\tif (!match) {\n\t\treturn null;\n\t}\n\n\tconst [path, argument] = match[0].replace(/#! ?/, '').split(' ');\n\tconst binary = path.split('/').pop();\n\n\tif (binary === 'env') {\n\t\treturn argument;\n\t}\n\n\treturn argument ? `${binary} ${argument}` : binary;\n};\n","'use strict';\n\nconst fs = require('fs');\nconst shebangCommand = require('shebang-command');\n\nfunction readShebang(command) {\n // Read the first 150 bytes from the file\n const size = 150;\n const buffer = Buffer.alloc(size);\n\n let fd;\n\n try {\n fd = fs.openSync(command, 'r');\n fs.readSync(fd, buffer, 0, size, 0);\n fs.closeSync(fd);\n } catch (e) { /* Empty */ }\n\n // Attempt to extract shebang (null is returned if not a shebang)\n return shebangCommand(buffer.toString());\n}\n\nmodule.exports = readShebang;\n","'use strict';\n\nconst path = require('path');\nconst resolveCommand = require('./util/resolveCommand');\nconst escape = require('./util/escape');\nconst readShebang = require('./util/readShebang');\n\nconst isWin = process.platform === 'win32';\nconst isExecutableRegExp = /\\.(?:com|exe)$/i;\nconst isCmdShimRegExp = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\n\nfunction detectShebang(parsed) {\n parsed.file = resolveCommand(parsed);\n\n const shebang = parsed.file && readShebang(parsed.file);\n\n if (shebang) {\n parsed.args.unshift(parsed.file);\n parsed.command = shebang;\n\n return resolveCommand(parsed);\n }\n\n return parsed.file;\n}\n\nfunction parseNonShell(parsed) {\n if (!isWin) {\n return parsed;\n }\n\n // Detect & add support for shebangs\n const commandFile = detectShebang(parsed);\n\n // We don't need a shell if the command filename is an executable\n const needsShell = !isExecutableRegExp.test(commandFile);\n\n // If a shell is required, use cmd.exe and take care of escaping everything correctly\n // Note that `forceShell` is an hidden option used only in tests\n if (parsed.options.forceShell || needsShell) {\n // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/`\n // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument\n // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called,\n // we need to double escape them\n const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);\n\n // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\\bar)\n // This is necessary otherwise it will always fail with ENOENT in those cases\n parsed.command = path.normalize(parsed.command);\n\n // Escape command & arguments\n parsed.command = escape.command(parsed.command);\n parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));\n\n const shellCommand = [parsed.command].concat(parsed.args).join(' ');\n\n parsed.args = ['/d', '/s', '/c', `\"${shellCommand}\"`];\n parsed.command = process.env.comspec || 'cmd.exe';\n parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped\n }\n\n return parsed;\n}\n\nfunction parse(command, args, options) {\n // Normalize arguments, similar to nodejs\n if (args && !Array.isArray(args)) {\n options = args;\n args = null;\n }\n\n args = args ? args.slice(0) : []; // Clone array to avoid changing the original\n options = Object.assign({}, options); // Clone object to avoid changing the original\n\n // Build our parsed object\n const parsed = {\n command,\n args,\n options,\n file: undefined,\n original: {\n command,\n args,\n },\n };\n\n // Delegate further parsing to shell or non-shell\n return options.shell ? parsed : parseNonShell(parsed);\n}\n\nmodule.exports = parse;\n","'use strict';\n\nconst isWin = process.platform === 'win32';\n\nfunction notFoundError(original, syscall) {\n return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {\n code: 'ENOENT',\n errno: 'ENOENT',\n syscall: `${syscall} ${original.command}`,\n path: original.command,\n spawnargs: original.args,\n });\n}\n\nfunction hookChildProcess(cp, parsed) {\n if (!isWin) {\n return;\n }\n\n const originalEmit = cp.emit;\n\n cp.emit = function (name, arg1) {\n // If emitting \"exit\" event and exit code is 1, we need to check if\n // the command exists and emit an \"error\" instead\n // See https://github.com/IndigoUnited/node-cross-spawn/issues/16\n if (name === 'exit') {\n const err = verifyENOENT(arg1, parsed);\n\n if (err) {\n return originalEmit.call(cp, 'error', err);\n }\n }\n\n return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params\n };\n}\n\nfunction verifyENOENT(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawn');\n }\n\n return null;\n}\n\nfunction verifyENOENTSync(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawnSync');\n }\n\n return null;\n}\n\nmodule.exports = {\n hookChildProcess,\n verifyENOENT,\n verifyENOENTSync,\n notFoundError,\n};\n","'use strict';\n\nconst cp = require('child_process');\nconst parse = require('./lib/parse');\nconst enoent = require('./lib/enoent');\n\nfunction spawn(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\n\n // Hook into child process \"exit\" event to emit an error if the command\n // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n enoent.hookChildProcess(spawned, parsed);\n\n return spawned;\n}\n\nfunction spawnSync(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);\n\n // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);\n\n return result;\n}\n\nmodule.exports = spawn;\nmodule.exports.spawn = spawn;\nmodule.exports.sync = spawnSync;\n\nmodule.exports._parse = parse;\nmodule.exports._enoent = enoent;\n","'use strict';\n\nconst { PassThrough } = require('stream');\n\nmodule.exports = function (/*streams...*/) {\n var sources = []\n var output = new PassThrough({objectMode: true})\n\n output.setMaxListeners(0)\n\n output.add = add\n output.isEmpty = isEmpty\n\n output.on('unpipe', remove)\n\n Array.prototype.slice.call(arguments).forEach(add)\n\n return output\n\n function add (source) {\n if (Array.isArray(source)) {\n source.forEach(add)\n return this\n }\n\n sources.push(source);\n source.once('end', remove.bind(null, source))\n source.once('error', output.emit.bind(output, 'error'))\n source.pipe(output, {end: false})\n return this\n }\n\n function isEmpty () {\n return sources.length == 0;\n }\n\n function remove (source) {\n sources = sources.filter(function (it) { return it !== source })\n if (!sources.length && output.readable) { output.end() }\n }\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.of = exports.PropertiesFile = void 0;\n\nvar _fs = _interopRequireDefault(require(\"fs\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n/*\r\n * properties\r\n *\r\n * Copyright (c) 2013 Matt Steele\r\n * Licensed under the MIT license.\r\n */\n\n\nclass PropertiesFile {\n constructor(...args) {\n this.objs = {};\n\n if (args.length) {\n this.of.apply(this, args);\n }\n }\n\n makeKeys(line) {\n if (line && line.indexOf('#') !== 0) {\n //let splitIndex = line.indexOf('=');\n let separatorPositions = ['=', ':'].map(sep => {\n return line.indexOf(sep);\n }).filter(index => {\n return index > -1;\n });\n let splitIndex = Math.min(...separatorPositions);\n let key = line.substring(0, splitIndex).trim();\n let value = line.substring(splitIndex + 1).trim(); // if keys already exists ...\n\n if (this.objs.hasOwnProperty(key)) {\n // if it is already an Array\n if (Array.isArray(this.objs[key])) {\n // just push the new value\n this.objs[key].push(value);\n } else {\n // transform the value into Array\n let oldValue = this.objs[key];\n this.objs[key] = [oldValue, value];\n }\n } else {\n // the key does not exists\n const escapedValue = value.replace(/\"/g, '\\\\\"') // escape \"\n .replace(/\\\\:/g, ':') // remove \\ before :\n .replace(/\\\\=/g, '='); // remove \\ before =\n\n this.objs[key] = unescape(JSON.parse('\"' + escapedValue + '\"'));\n }\n }\n }\n\n addFile(file) {\n let data = _fs.default.readFileSync(file, 'utf-8');\n\n let items = data.split(/\\r?\\n/);\n let me = this;\n\n for (let i = 0; i < items.length; i++) {\n let line = items[i];\n\n while (line.substring(line.length - 1) === '\\\\') {\n line = line.slice(0, -1);\n let nextLine = items[i + 1];\n line = line + nextLine.trim();\n i++;\n }\n\n me.makeKeys(line);\n }\n }\n\n of(...args) {\n for (let i = 0; i < args.length; i++) {\n this.addFile(args[i]);\n }\n }\n\n get(key, defaultValue) {\n if (this.objs.hasOwnProperty(key)) {\n if (Array.isArray(this.objs[key])) {\n let ret = [];\n\n for (let i = 0; i < this.objs[key].length; i++) {\n ret[i] = this.interpolate(this.objs[key][i]);\n }\n\n return ret;\n } else {\n return typeof this.objs[key] === 'undefined' ? '' : this.interpolate(this.objs[key]);\n }\n }\n\n return defaultValue;\n }\n\n getLast(key, defaultValue) {\n if (this.objs.hasOwnProperty(key)) {\n if (Array.isArray(this.objs[key])) {\n var lg = this.objs[key].length;\n return this.interpolate(this.objs[key][lg - 1]);\n } else {\n return typeof this.objs[key] === 'undefined' ? '' : this.interpolate(this.objs[key]);\n }\n }\n\n return defaultValue;\n }\n\n getFirst(key, defaultValue) {\n if (this.objs.hasOwnProperty(key)) {\n if (Array.isArray(this.objs[key])) {\n return this.interpolate(this.objs[key][0]);\n } else {\n return typeof this.objs[key] === 'undefined' ? '' : this.interpolate(this.objs[key]);\n }\n }\n\n return defaultValue;\n }\n\n getInt(key, defaultIntValue) {\n let val = this.getLast(key);\n\n if (!val) {\n return defaultIntValue;\n } else {\n return parseInt(val, 10);\n }\n }\n\n getFloat(key, defaultFloatValue) {\n let val = this.getLast(key);\n\n if (!val) {\n return defaultFloatValue;\n } else {\n return parseFloat(val);\n }\n }\n\n getBoolean(key, defaultBooleanValue) {\n function parseBool(b) {\n return !/^(false|0)$/i.test(b) && !!b;\n }\n\n let val = this.getLast(key);\n\n if (!val) {\n return defaultBooleanValue || false;\n } else {\n return parseBool(val);\n }\n }\n\n set(key, value) {\n this.objs[key] = value;\n }\n\n interpolate(s) {\n let me = this;\n return s.replace(/\\\\\\\\/g, '\\\\').replace(/\\$\\{([A-Za-z0-9\\.\\-\\_]*)\\}/g, function (match) {\n return me.getLast(match.substring(2, match.length - 1));\n });\n }\n\n getKeys() {\n let keys = [];\n\n for (let key in this.objs) {\n keys.push(key);\n }\n\n return keys;\n }\n\n getMatchingKeys(matchstr) {\n let keys = [];\n\n for (let key in this.objs) {\n if (key.search(matchstr) !== -1) {\n keys.push(key);\n }\n }\n\n return keys;\n }\n\n reset() {\n this.objs = {};\n }\n\n} // Retain 'of' from v1 for backward compatibility\n\n\nexports.PropertiesFile = PropertiesFile;\n\nlet of = function of(...args) {\n let globalFile = new PropertiesFile();\n globalFile.of.apply(globalFile, args);\n return globalFile;\n};\n\nexports.of = of;\n","// https://www.appveyor.com/docs/environment-variables\n\nexport default {\n detect({ env }) {\n return Boolean(env.APPVEYOR);\n },\n configuration({ env }) {\n const pr = env.APPVEYOR_PULL_REQUEST_NUMBER;\n const isPr = Boolean(pr);\n\n return {\n name: \"Appveyor\",\n service: \"appveyor\",\n commit: env.APPVEYOR_REPO_COMMIT,\n tag: env.APPVEYOR_REPO_TAG_NAME,\n build: env.APPVEYOR_BUILD_NUMBER,\n buildUrl: `https://ci.appveyor.com/project/${env.APPVEYOR_PROJECT_SLUG}/build/${env.APPVEYOR_BUILD_VERSION}`,\n branch: env.APPVEYOR_REPO_BRANCH,\n job: env.APPVEYOR_JOB_NUMBER,\n jobUrl: `https://ci.appveyor.com/project/${env.APPVEYOR_PROJECT_SLUG}/build/job/${env.APPVEYOR_JOB_ID}`,\n pr,\n isPr,\n prBranch: env.APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH,\n slug: env.APPVEYOR_REPO_NAME,\n root: env.APPVEYOR_BUILD_FOLDER,\n };\n },\n};\n","export function prNumber(pr) {\n return (/\\d+(?!.*\\d+)/.exec(pr) || [])[0];\n}\n\nexport function parseBranch(branch) {\n return branch\n ? /^(?:refs\\/heads\\/)?(?<branch>.+)$/i.exec(branch)[1]\n : undefined;\n}\n","// https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables\n// The docs indicate that SYSTEM_PULLREQUEST_SOURCEBRANCH and SYSTEM_PULLREQUEST_TARGETBRANCH are in the long format (e.g `refs/heads/master`) however tests show they are both in the short format (e.g. `master`)\nimport { parseBranch } from \"../lib/utils.js\";\n\nexport default {\n detect({ env }) {\n return Boolean(env.BUILD_BUILDURI);\n },\n configuration({ env }) {\n const pr = env.SYSTEM_PULLREQUEST_PULLREQUESTID;\n const isPr = Boolean(pr);\n\n return {\n name: \"Azure Pipelines\",\n service: \"azurePipelines\",\n commit: env.BUILD_SOURCEVERSION,\n build: env.BUILD_BUILDNUMBER,\n branch: parseBranch(\n isPr ? env.SYSTEM_PULLREQUEST_TARGETBRANCH : env.BUILD_SOURCEBRANCH,\n ),\n pr,\n isPr,\n prBranch: parseBranch(\n isPr ? env.SYSTEM_PULLREQUEST_SOURCEBRANCH : undefined,\n ),\n root: env.BUILD_REPOSITORY_LOCALPATH,\n };\n },\n};\n","// https://confluence.atlassian.com/bamboo/bamboo-variables-289277087.html\n\nexport default {\n detect({ env }) {\n return Boolean(env.bamboo_agentId);\n },\n configuration({ env }) {\n return {\n name: \"Bamboo\",\n service: \"bamboo\",\n commit: env.bamboo_planRepository_1_revision,\n build: env.bamboo_buildNumber,\n buildUrl: env.bamboo_buildResultsUrl,\n branch: env.bamboo_planRepository_1_branchName,\n job: env.bamboo_buildKey,\n root: env.bamboo_build_working_directory,\n };\n },\n};\n","// https://confluence.atlassian.com/bitbucket/environment-variables-794502608.html\n\nexport default {\n detect({ env }) {\n return Boolean(env.BITBUCKET_BUILD_NUMBER);\n },\n configuration({ env }) {\n return {\n name: \"Bitbucket Pipelines\",\n service: \"bitbucket\",\n commit: env.BITBUCKET_COMMIT,\n tag: env.BITBUCKET_TAG,\n build: env.BITBUCKET_BUILD_NUMBER,\n buildUrl: `https://bitbucket.org/${env.BITBUCKET_REPO_FULL_NAME}/addon/pipelines/home#!/results/${env.BITBUCKET_BUILD_NUMBER}`,\n branch: env.BITBUCKET_BRANCH,\n slug: env.BITBUCKET_REPO_FULL_NAME,\n root: env.BITBUCKET_CLONE_DIR,\n };\n },\n};\n","// https://devcenter.bitrise.io/builds/available-environment-variables/#exposed-by-bitriseio\n\nexport default {\n detect({ env }) {\n return Boolean(env.BITRISE_IO);\n },\n configuration({ env }) {\n const pr =\n env.BITRISE_PULL_REQUEST === \"false\"\n ? undefined\n : env.BITRISE_PULL_REQUEST;\n const isPr = Boolean(pr);\n\n return {\n name: \"Bitrise\",\n service: \"bitrise\",\n commit: env.BITRISE_GIT_COMMIT,\n tag: env.BITRISE_GIT_TAG,\n build: env.BITRISE_BUILD_NUMBER,\n buildUrl: env.BITRISE_BUILD_URL,\n branch: isPr ? env.BITRISEIO_GIT_BRANCH_DEST : env.BITRISE_GIT_BRANCH,\n pr,\n isPr,\n prBranch: isPr ? env.BITRISE_GIT_BRANCH : undefined,\n slug: env.BITRISE_APP_SLUG,\n };\n },\n};\n","// https://buddy.works/knowledge/deployments/how-use-environment-variables#default-environment-variables\n\nimport { prNumber } from \"../lib/utils.js\";\n\nexport default {\n detect({ env }) {\n return Boolean(env.BUDDY_WORKSPACE_ID);\n },\n configuration({ env }) {\n const pr = prNumber(env.BUDDY_EXECUTION_PULL_REQUEST_ID);\n const isPr = Boolean(pr);\n\n return {\n name: \"Buddy\",\n service: \"buddy\",\n commit: env.BUDDY_EXECUTION_REVISION,\n tag: env.BUDDY_EXECUTION_TAG,\n build: env.BUDDY_EXECUTION_ID,\n buildUrl: env.BUDDY_EXECUTION_URL,\n branch: isPr\n ? env.BUDDY_EXECUTION_PULL_REQUEST_HEAD_BRANCH\n : env.BUDDY_EXECUTION_BRANCH,\n pr,\n isPr,\n slug: env.BUDDY_REPO_SLUG,\n };\n },\n};\n","import {Buffer} from 'node:buffer';\nimport path from 'node:path';\nimport childProcess from 'node:child_process';\nimport process from 'node:process';\nimport crossSpawn from 'cross-spawn';\nimport stripFinalNewline from 'strip-final-newline';\nimport {npmRunPathEnv} from 'npm-run-path';\nimport onetime from 'onetime';\nimport {makeError} from './lib/error.js';\nimport {normalizeStdio, normalizeStdioNode} from './lib/stdio.js';\nimport {spawnedKill, spawnedCancel, setupTimeout, validateTimeout, setExitHandler} from './lib/kill.js';\nimport {addPipeMethods} from './lib/pipe.js';\nimport {handleInput, getSpawnedResult, makeAllStream, handleInputSync} from './lib/stream.js';\nimport {mergePromise, getSpawnedPromise} from './lib/promise.js';\nimport {joinCommand, parseCommand, parseTemplates, getEscapedCommand} from './lib/command.js';\nimport {logCommand, verboseDefault} from './lib/verbose.js';\n\nconst DEFAULT_MAX_BUFFER = 1000 * 1000 * 100;\n\nconst getEnv = ({env: envOption, extendEnv, preferLocal, localDir, execPath}) => {\n\tconst env = extendEnv ? {...process.env, ...envOption} : envOption;\n\n\tif (preferLocal) {\n\t\treturn npmRunPathEnv({env, cwd: localDir, execPath});\n\t}\n\n\treturn env;\n};\n\nconst handleArguments = (file, args, options = {}) => {\n\tconst parsed = crossSpawn._parse(file, args, options);\n\tfile = parsed.command;\n\targs = parsed.args;\n\toptions = parsed.options;\n\n\toptions = {\n\t\tmaxBuffer: DEFAULT_MAX_BUFFER,\n\t\tbuffer: true,\n\t\tstripFinalNewline: true,\n\t\textendEnv: true,\n\t\tpreferLocal: false,\n\t\tlocalDir: options.cwd || process.cwd(),\n\t\texecPath: process.execPath,\n\t\tencoding: 'utf8',\n\t\treject: true,\n\t\tcleanup: true,\n\t\tall: false,\n\t\twindowsHide: true,\n\t\tverbose: verboseDefault,\n\t\t...options,\n\t};\n\n\toptions.env = getEnv(options);\n\n\toptions.stdio = normalizeStdio(options);\n\n\tif (process.platform === 'win32' && path.basename(file, '.exe') === 'cmd') {\n\t\t// #116\n\t\targs.unshift('/q');\n\t}\n\n\treturn {file, args, options, parsed};\n};\n\nconst handleOutput = (options, value, error) => {\n\tif (typeof value !== 'string' && !Buffer.isBuffer(value)) {\n\t\t// When `execaSync()` errors, we normalize it to '' to mimic `execa()`\n\t\treturn error === undefined ? undefined : '';\n\t}\n\n\tif (options.stripFinalNewline) {\n\t\treturn stripFinalNewline(value);\n\t}\n\n\treturn value;\n};\n\nexport function execa(file, args, options) {\n\tconst parsed = handleArguments(file, args, options);\n\tconst command = joinCommand(file, args);\n\tconst escapedCommand = getEscapedCommand(file, args);\n\tlogCommand(escapedCommand, parsed.options);\n\n\tvalidateTimeout(parsed.options);\n\n\tlet spawned;\n\ttry {\n\t\tspawned = childProcess.spawn(parsed.file, parsed.args, parsed.options);\n\t} catch (error) {\n\t\t// Ensure the returned error is always both a promise and a child process\n\t\tconst dummySpawned = new childProcess.ChildProcess();\n\t\tconst errorPromise = Promise.reject(makeError({\n\t\t\terror,\n\t\t\tstdout: '',\n\t\t\tstderr: '',\n\t\t\tall: '',\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tparsed,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false,\n\t\t}));\n\t\tmergePromise(dummySpawned, errorPromise);\n\t\treturn dummySpawned;\n\t}\n\n\tconst spawnedPromise = getSpawnedPromise(spawned);\n\tconst timedPromise = setupTimeout(spawned, parsed.options, spawnedPromise);\n\tconst processDone = setExitHandler(spawned, parsed.options, timedPromise);\n\n\tconst context = {isCanceled: false};\n\n\tspawned.kill = spawnedKill.bind(null, spawned.kill.bind(spawned));\n\tspawned.cancel = spawnedCancel.bind(null, spawned, context);\n\n\tconst handlePromise = async () => {\n\t\tconst [{error, exitCode, signal, timedOut}, stdoutResult, stderrResult, allResult] = await getSpawnedResult(spawned, parsed.options, processDone);\n\t\tconst stdout = handleOutput(parsed.options, stdoutResult);\n\t\tconst stderr = handleOutput(parsed.options, stderrResult);\n\t\tconst all = handleOutput(parsed.options, allResult);\n\n\t\tif (error || exitCode !== 0 || signal !== null) {\n\t\t\tconst returnedError = makeError({\n\t\t\t\terror,\n\t\t\t\texitCode,\n\t\t\t\tsignal,\n\t\t\t\tstdout,\n\t\t\t\tstderr,\n\t\t\t\tall,\n\t\t\t\tcommand,\n\t\t\t\tescapedCommand,\n\t\t\t\tparsed,\n\t\t\t\ttimedOut,\n\t\t\t\tisCanceled: context.isCanceled || (parsed.options.signal ? parsed.options.signal.aborted : false),\n\t\t\t\tkilled: spawned.killed,\n\t\t\t});\n\n\t\t\tif (!parsed.options.reject) {\n\t\t\t\treturn returnedError;\n\t\t\t}\n\n\t\t\tthrow returnedError;\n\t\t}\n\n\t\treturn {\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\texitCode: 0,\n\t\t\tstdout,\n\t\t\tstderr,\n\t\t\tall,\n\t\t\tfailed: false,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false,\n\t\t};\n\t};\n\n\tconst handlePromiseOnce = onetime(handlePromise);\n\n\thandleInput(spawned, parsed.options);\n\n\tspawned.all = makeAllStream(spawned, parsed.options);\n\n\taddPipeMethods(spawned);\n\tmergePromise(spawned, handlePromiseOnce);\n\treturn spawned;\n}\n\nexport function execaSync(file, args, options) {\n\tconst parsed = handleArguments(file, args, options);\n\tconst command = joinCommand(file, args);\n\tconst escapedCommand = getEscapedCommand(file, args);\n\tlogCommand(escapedCommand, parsed.options);\n\n\tconst input = handleInputSync(parsed.options);\n\n\tlet result;\n\ttry {\n\t\tresult = childProcess.spawnSync(parsed.file, parsed.args, {...parsed.options, input});\n\t} catch (error) {\n\t\tthrow makeError({\n\t\t\terror,\n\t\t\tstdout: '',\n\t\t\tstderr: '',\n\t\t\tall: '',\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tparsed,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false,\n\t\t});\n\t}\n\n\tconst stdout = handleOutput(parsed.options, result.stdout, result.error);\n\tconst stderr = handleOutput(parsed.options, result.stderr, result.error);\n\n\tif (result.error || result.status !== 0 || result.signal !== null) {\n\t\tconst error = makeError({\n\t\t\tstdout,\n\t\t\tstderr,\n\t\t\terror: result.error,\n\t\t\tsignal: result.signal,\n\t\t\texitCode: result.status,\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tparsed,\n\t\t\ttimedOut: result.error && result.error.code === 'ETIMEDOUT',\n\t\t\tisCanceled: false,\n\t\t\tkilled: result.signal !== null,\n\t\t});\n\n\t\tif (!parsed.options.reject) {\n\t\t\treturn error;\n\t\t}\n\n\t\tthrow error;\n\t}\n\n\treturn {\n\t\tcommand,\n\t\tescapedCommand,\n\t\texitCode: 0,\n\t\tstdout,\n\t\tstderr,\n\t\tfailed: false,\n\t\ttimedOut: false,\n\t\tisCanceled: false,\n\t\tkilled: false,\n\t};\n}\n\nconst normalizeScriptStdin = ({input, inputFile, stdio}) => input === undefined && inputFile === undefined && stdio === undefined\n\t? {stdin: 'inherit'}\n\t: {};\n\nconst normalizeScriptOptions = (options = {}) => ({\n\tpreferLocal: true,\n\t...normalizeScriptStdin(options),\n\t...options,\n});\n\nfunction create$(options) {\n\tfunction $(templatesOrOptions, ...expressions) {\n\t\tif (!Array.isArray(templatesOrOptions)) {\n\t\t\treturn create$({...options, ...templatesOrOptions});\n\t\t}\n\n\t\tconst [file, ...args] = parseTemplates(templatesOrOptions, expressions);\n\t\treturn execa(file, args, normalizeScriptOptions(options));\n\t}\n\n\t$.sync = (templates, ...expressions) => {\n\t\tif (!Array.isArray(templates)) {\n\t\t\tthrow new TypeError('Please use $(options).sync`command` instead of $.sync(options)`command`.');\n\t\t}\n\n\t\tconst [file, ...args] = parseTemplates(templates, expressions);\n\t\treturn execaSync(file, args, normalizeScriptOptions(options));\n\t};\n\n\treturn $;\n}\n\nexport const $ = create$();\n\nexport function execaCommand(command, options) {\n\tconst [file, ...args] = parseCommand(command);\n\treturn execa(file, args, options);\n}\n\nexport function execaCommandSync(command, options) {\n\tconst [file, ...args] = parseCommand(command);\n\treturn execaSync(file, args, options);\n}\n\nexport function execaNode(scriptPath, args, options = {}) {\n\tif (args && !Array.isArray(args) && typeof args === 'object') {\n\t\toptions = args;\n\t\targs = [];\n\t}\n\n\tconst stdio = normalizeStdioNode(options);\n\tconst defaultExecArgv = process.execArgv.filter(arg => !arg.startsWith('--inspect'));\n\n\tconst {\n\t\tnodePath = process.execPath,\n\t\tnodeOptions = defaultExecArgv,\n\t} = options;\n\n\treturn execa(\n\t\tnodePath,\n\t\t[\n\t\t\t...nodeOptions,\n\t\t\tscriptPath,\n\t\t\t...(Array.isArray(args) ? args : []),\n\t\t],\n\t\t{\n\t\t\t...options,\n\t\t\tstdin: undefined,\n\t\t\tstdout: undefined,\n\t\t\tstderr: undefined,\n\t\t\tstdio,\n\t\t\tshell: false,\n\t\t},\n\t);\n}\n","export default function stripFinalNewline(input) {\n\tconst LF = typeof input === 'string' ? '\\n' : '\\n'.charCodeAt();\n\tconst CR = typeof input === 'string' ? '\\r' : '\\r'.charCodeAt();\n\n\tif (input[input.length - 1] === LF) {\n\t\tinput = input.slice(0, -1);\n\t}\n\n\tif (input[input.length - 1] === CR) {\n\t\tinput = input.slice(0, -1);\n\t}\n\n\treturn input;\n}\n","import process from 'node:process';\nimport path from 'node:path';\nimport {fileURLToPath} from 'node:url';\nimport pathKey from 'path-key';\n\nexport const npmRunPath = ({\n\tcwd = process.cwd(),\n\tpath: pathOption = process.env[pathKey()],\n\tpreferLocal = true,\n\texecPath = process.execPath,\n\taddExecPath = true,\n} = {}) => {\n\tconst cwdString = cwd instanceof URL ? fileURLToPath(cwd) : cwd;\n\tconst cwdPath = path.resolve(cwdString);\n\tconst result = [];\n\n\tif (preferLocal) {\n\t\tapplyPreferLocal(result, cwdPath);\n\t}\n\n\tif (addExecPath) {\n\t\tapplyExecPath(result, execPath, cwdPath);\n\t}\n\n\treturn [...result, pathOption].join(path.delimiter);\n};\n\nconst applyPreferLocal = (result, cwdPath) => {\n\tlet previous;\n\n\twhile (previous !== cwdPath) {\n\t\tresult.push(path.join(cwdPath, 'node_modules/.bin'));\n\t\tprevious = cwdPath;\n\t\tcwdPath = path.resolve(cwdPath, '..');\n\t}\n};\n\n// Ensure the running `node` binary is used\nconst applyExecPath = (result, execPath, cwdPath) => {\n\tconst execPathString = execPath instanceof URL ? fileURLToPath(execPath) : execPath;\n\tresult.push(path.resolve(cwdPath, execPathString, '..'));\n};\n\nexport const npmRunPathEnv = ({env = process.env, ...options} = {}) => {\n\tenv = {...env};\n\n\tconst pathName = pathKey({env});\n\toptions.path = env[pathName];\n\tenv[pathName] = npmRunPath(options);\n\n\treturn env;\n};\n","export default function pathKey(options = {}) {\n\tconst {\n\t\tenv = process.env,\n\t\tplatform = process.platform\n\t} = options;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(env).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n}\n","const copyProperty = (to, from, property, ignoreNonConfigurable) => {\n\t// `Function#length` should reflect the parameters of `to` not `from` since we keep its body.\n\t// `Function#prototype` is non-writable and non-configurable so can never be modified.\n\tif (property === 'length' || property === 'prototype') {\n\t\treturn;\n\t}\n\n\t// `Function#arguments` and `Function#caller` should not be copied. They were reported to be present in `Reflect.ownKeys` for some devices in React Native (#41), so we explicitly ignore them here.\n\tif (property === 'arguments' || property === 'caller') {\n\t\treturn;\n\t}\n\n\tconst toDescriptor = Object.getOwnPropertyDescriptor(to, property);\n\tconst fromDescriptor = Object.getOwnPropertyDescriptor(from, property);\n\n\tif (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {\n\t\treturn;\n\t}\n\n\tObject.defineProperty(to, property, fromDescriptor);\n};\n\n// `Object.defineProperty()` throws if the property exists, is not configurable and either:\n// - one its descriptors is changed\n// - it is non-writable and its value is changed\nconst canCopyProperty = function (toDescriptor, fromDescriptor) {\n\treturn toDescriptor === undefined || toDescriptor.configurable || (\n\t\ttoDescriptor.writable === fromDescriptor.writable &&\n\t\ttoDescriptor.enumerable === fromDescriptor.enumerable &&\n\t\ttoDescriptor.configurable === fromDescriptor.configurable &&\n\t\t(toDescriptor.writable || toDescriptor.value === fromDescriptor.value)\n\t);\n};\n\nconst changePrototype = (to, from) => {\n\tconst fromPrototype = Object.getPrototypeOf(from);\n\tif (fromPrototype === Object.getPrototypeOf(to)) {\n\t\treturn;\n\t}\n\n\tObject.setPrototypeOf(to, fromPrototype);\n};\n\nconst wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/\\n${fromBody}`;\n\nconst toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, 'toString');\nconst toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, 'name');\n\n// We call `from.toString()` early (not lazily) to ensure `from` can be garbage collected.\n// We use `bind()` instead of a closure for the same reason.\n// Calling `from.toString()` early also allows caching it in case `to.toString()` is called several times.\nconst changeToString = (to, from, name) => {\n\tconst withName = name === '' ? '' : `with ${name.trim()}() `;\n\tconst newToString = wrappedToString.bind(null, withName, from.toString());\n\t// Ensure `to.toString.toString` is non-enumerable and has the same `same`\n\tObject.defineProperty(newToString, 'name', toStringName);\n\tObject.defineProperty(to, 'toString', {...toStringDescriptor, value: newToString});\n};\n\nexport default function mimicFunction(to, from, {ignoreNonConfigurable = false} = {}) {\n\tconst {name} = to;\n\n\tfor (const property of Reflect.ownKeys(from)) {\n\t\tcopyProperty(to, from, property, ignoreNonConfigurable);\n\t}\n\n\tchangePrototype(to, from);\n\tchangeToString(to, from, name);\n\n\treturn to;\n}\n","import mimicFunction from 'mimic-fn';\n\nconst calledFunctions = new WeakMap();\n\nconst onetime = (function_, options = {}) => {\n\tif (typeof function_ !== 'function') {\n\t\tthrow new TypeError('Expected a function');\n\t}\n\n\tlet returnValue;\n\tlet callCount = 0;\n\tconst functionName = function_.displayName || function_.name || '<anonymous>';\n\n\tconst onetime = function (...arguments_) {\n\t\tcalledFunctions.set(onetime, ++callCount);\n\n\t\tif (callCount === 1) {\n\t\t\treturnValue = function_.apply(this, arguments_);\n\t\t\tfunction_ = null;\n\t\t} else if (options.throw === true) {\n\t\t\tthrow new Error(`Function \\`${functionName}\\` can only be called once`);\n\t\t}\n\n\t\treturn returnValue;\n\t};\n\n\tmimicFunction(onetime, function_);\n\tcalledFunctions.set(onetime, callCount);\n\n\treturn onetime;\n};\n\nonetime.callCount = function_ => {\n\tif (!calledFunctions.has(function_)) {\n\t\tthrow new Error(`The given function \\`${function_.name}\\` is not wrapped by the \\`onetime\\` package`);\n\t}\n\n\treturn calledFunctions.get(function_);\n};\n\nexport default onetime;\n","import process from 'node:process';\nimport {signalsByName} from 'human-signals';\n\nconst getErrorPrefix = ({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled}) => {\n\tif (timedOut) {\n\t\treturn `timed out after ${timeout} milliseconds`;\n\t}\n\n\tif (isCanceled) {\n\t\treturn 'was canceled';\n\t}\n\n\tif (errorCode !== undefined) {\n\t\treturn `failed with ${errorCode}`;\n\t}\n\n\tif (signal !== undefined) {\n\t\treturn `was killed with ${signal} (${signalDescription})`;\n\t}\n\n\tif (exitCode !== undefined) {\n\t\treturn `failed with exit code ${exitCode}`;\n\t}\n\n\treturn 'failed';\n};\n\nexport const makeError = ({\n\tstdout,\n\tstderr,\n\tall,\n\terror,\n\tsignal,\n\texitCode,\n\tcommand,\n\tescapedCommand,\n\ttimedOut,\n\tisCanceled,\n\tkilled,\n\tparsed: {options: {timeout, cwd = process.cwd()}},\n}) => {\n\t// `signal` and `exitCode` emitted on `spawned.on('exit')` event can be `null`.\n\t// We normalize them to `undefined`\n\texitCode = exitCode === null ? undefined : exitCode;\n\tsignal = signal === null ? undefined : signal;\n\tconst signalDescription = signal === undefined ? undefined : signalsByName[signal].description;\n\n\tconst errorCode = error && error.code;\n\n\tconst prefix = getErrorPrefix({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled});\n\tconst execaMessage = `Command ${prefix}: ${command}`;\n\tconst isError = Object.prototype.toString.call(error) === '[object Error]';\n\tconst shortMessage = isError ? `${execaMessage}\\n${error.message}` : execaMessage;\n\tconst message = [shortMessage, stderr, stdout].filter(Boolean).join('\\n');\n\n\tif (isError) {\n\t\terror.originalMessage = error.message;\n\t\terror.message = message;\n\t} else {\n\t\terror = new Error(message);\n\t}\n\n\terror.shortMessage = shortMessage;\n\terror.command = command;\n\terror.escapedCommand = escapedCommand;\n\terror.exitCode = exitCode;\n\terror.signal = signal;\n\terror.signalDescription = signalDescription;\n\terror.stdout = stdout;\n\terror.stderr = stderr;\n\terror.cwd = cwd;\n\n\tif (all !== undefined) {\n\t\terror.all = all;\n\t}\n\n\tif ('bufferedData' in error) {\n\t\tdelete error.bufferedData;\n\t}\n\n\terror.failed = true;\n\terror.timedOut = Boolean(timedOut);\n\terror.isCanceled = isCanceled;\n\terror.killed = killed && !timedOut;\n\n\treturn error;\n};\n","import{constants}from\"node:os\";\n\nimport{SIGRTMAX}from\"./realtime.js\";\nimport{getSignals}from\"./signals.js\";\n\n\n\nconst getSignalsByName=()=>{\nconst signals=getSignals();\nreturn Object.fromEntries(signals.map(getSignalByName))\n};\n\nconst getSignalByName=({\nname,\nnumber,\ndescription,\nsupported,\naction,\nforced,\nstandard\n})=>[name,{name,number,description,supported,action,forced,standard}];\n\nexport const signalsByName=getSignalsByName();\n\n\n\n\nconst getSignalsByNumber=()=>{\nconst signals=getSignals();\nconst length=SIGRTMAX+1;\nconst signalsA=Array.from({length},(value,number)=>\ngetSignalByNumber(number,signals)\n);\nreturn Object.assign({},...signalsA)\n};\n\nconst getSignalByNumber=(number,signals)=>{\nconst signal=findSignalByNumber(number,signals);\n\nif(signal===undefined){\nreturn{}\n}\n\nconst{name,description,supported,action,forced,standard}=signal;\nreturn{\n[number]:{\nname,\nnumber,\ndescription,\nsupported,\naction,\nforced,\nstandard\n}\n}\n};\n\n\n\nconst findSignalByNumber=(number,signals)=>{\nconst signal=signals.find(({name})=>constants.signals[name]===number);\n\nif(signal!==undefined){\nreturn signal\n}\n\nreturn signals.find((signalA)=>signalA.number===number)\n};\n\nexport const signalsByNumber=getSignalsByNumber();","\nexport const getRealtimeSignals=()=>{\nconst length=SIGRTMAX-SIGRTMIN+1;\nreturn Array.from({length},getRealtimeSignal)\n};\n\nconst getRealtimeSignal=(value,index)=>({\nname:`SIGRT${index+1}`,\nnumber:SIGRTMIN+index,\naction:\"terminate\",\ndescription:\"Application-specific signal (realtime)\",\nstandard:\"posix\"\n});\n\nconst SIGRTMIN=34;\nexport const SIGRTMAX=64;","import{constants}from\"node:os\";\n\nimport{SIGNALS}from\"./core.js\";\nimport{getRealtimeSignals}from\"./realtime.js\";\n\n\n\nexport const getSignals=()=>{\nconst realtimeSignals=getRealtimeSignals();\nconst signals=[...SIGNALS,...realtimeSignals].map(normalizeSignal);\nreturn signals\n};\n\n\n\n\n\n\n\nconst normalizeSignal=({\nname,\nnumber:defaultNumber,\ndescription,\naction,\nforced=false,\nstandard\n})=>{\nconst{\nsignals:{[name]:constantSignal}\n}=constants;\nconst supported=constantSignal!==undefined;\nconst number=supported?constantSignal:defaultNumber;\nreturn{name,number,description,supported,action,forced,standard}\n};","\n\nexport const SIGNALS=[\n{\nname:\"SIGHUP\",\nnumber:1,\naction:\"terminate\",\ndescription:\"Terminal closed\",\nstandard:\"posix\"\n},\n{\nname:\"SIGINT\",\nnumber:2,\naction:\"terminate\",\ndescription:\"User interruption with CTRL-C\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGQUIT\",\nnumber:3,\naction:\"core\",\ndescription:\"User interruption with CTRL-\\\\\",\nstandard:\"posix\"\n},\n{\nname:\"SIGILL\",\nnumber:4,\naction:\"core\",\ndescription:\"Invalid machine instruction\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGTRAP\",\nnumber:5,\naction:\"core\",\ndescription:\"Debugger breakpoint\",\nstandard:\"posix\"\n},\n{\nname:\"SIGABRT\",\nnumber:6,\naction:\"core\",\ndescription:\"Aborted\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGIOT\",\nnumber:6,\naction:\"core\",\ndescription:\"Aborted\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGBUS\",\nnumber:7,\naction:\"core\",\ndescription:\n\"Bus error due to misaligned, non-existing address or paging error\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGEMT\",\nnumber:7,\naction:\"terminate\",\ndescription:\"Command should be emulated but is not implemented\",\nstandard:\"other\"\n},\n{\nname:\"SIGFPE\",\nnumber:8,\naction:\"core\",\ndescription:\"Floating point arithmetic error\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGKILL\",\nnumber:9,\naction:\"terminate\",\ndescription:\"Forced termination\",\nstandard:\"posix\",\nforced:true\n},\n{\nname:\"SIGUSR1\",\nnumber:10,\naction:\"terminate\",\ndescription:\"Application-specific signal\",\nstandard:\"posix\"\n},\n{\nname:\"SIGSEGV\",\nnumber:11,\naction:\"core\",\ndescription:\"Segmentation fault\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGUSR2\",\nnumber:12,\naction:\"terminate\",\ndescription:\"Application-specific signal\",\nstandard:\"posix\"\n},\n{\nname:\"SIGPIPE\",\nnumber:13,\naction:\"terminate\",\ndescription:\"Broken pipe or socket\",\nstandard:\"posix\"\n},\n{\nname:\"SIGALRM\",\nnumber:14,\naction:\"terminate\",\ndescription:\"Timeout or timer\",\nstandard:\"posix\"\n},\n{\nname:\"SIGTERM\",\nnumber:15,\naction:\"terminate\",\ndescription:\"Termination\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGSTKFLT\",\nnumber:16,\naction:\"terminate\",\ndescription:\"Stack is empty or overflowed\",\nstandard:\"other\"\n},\n{\nname:\"SIGCHLD\",\nnumber:17,\naction:\"ignore\",\ndescription:\"Child process terminated, paused or unpaused\",\nstandard:\"posix\"\n},\n{\nname:\"SIGCLD\",\nnumber:17,\naction:\"ignore\",\ndescription:\"Child process terminated, paused or unpaused\",\nstandard:\"other\"\n},\n{\nname:\"SIGCONT\",\nnumber:18,\naction:\"unpause\",\ndescription:\"Unpaused\",\nstandard:\"posix\",\nforced:true\n},\n{\nname:\"SIGSTOP\",\nnumber:19,\naction:\"pause\",\ndescription:\"Paused\",\nstandard:\"posix\",\nforced:true\n},\n{\nname:\"SIGTSTP\",\nnumber:20,\naction:\"pause\",\ndescription:\"Paused using CTRL-Z or \\\"suspend\\\"\",\nstandard:\"posix\"\n},\n{\nname:\"SIGTTIN\",\nnumber:21,\naction:\"pause\",\ndescription:\"Background process cannot read terminal input\",\nstandard:\"posix\"\n},\n{\nname:\"SIGBREAK\",\nnumber:21,\naction:\"terminate\",\ndescription:\"User interruption with CTRL-BREAK\",\nstandard:\"other\"\n},\n{\nname:\"SIGTTOU\",\nnumber:22,\naction:\"pause\",\ndescription:\"Background process cannot write to terminal output\",\nstandard:\"posix\"\n},\n{\nname:\"SIGURG\",\nnumber:23,\naction:\"ignore\",\ndescription:\"Socket received out-of-band data\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGXCPU\",\nnumber:24,\naction:\"core\",\ndescription:\"Process timed out\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGXFSZ\",\nnumber:25,\naction:\"core\",\ndescription:\"File too big\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGVTALRM\",\nnumber:26,\naction:\"terminate\",\ndescription:\"Timeout or timer\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGPROF\",\nnumber:27,\naction:\"terminate\",\ndescription:\"Timeout or timer\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGWINCH\",\nnumber:28,\naction:\"ignore\",\ndescription:\"Terminal window size changed\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGIO\",\nnumber:29,\naction:\"terminate\",\ndescription:\"I/O is available\",\nstandard:\"other\"\n},\n{\nname:\"SIGPOLL\",\nnumber:29,\naction:\"terminate\",\ndescription:\"Watched event\",\nstandard:\"other\"\n},\n{\nname:\"SIGINFO\",\nnumber:29,\naction:\"ignore\",\ndescription:\"Request for process information\",\nstandard:\"other\"\n},\n{\nname:\"SIGPWR\",\nnumber:30,\naction:\"terminate\",\ndescription:\"Device running out of power\",\nstandard:\"systemv\"\n},\n{\nname:\"SIGSYS\",\nnumber:31,\naction:\"core\",\ndescription:\"Invalid system call\",\nstandard:\"other\"\n},\n{\nname:\"SIGUNUSED\",\nnumber:31,\naction:\"terminate\",\ndescription:\"Invalid system call\",\nstandard:\"other\"\n}];","const aliases = ['stdin', 'stdout', 'stderr'];\n\nconst hasAlias = options => aliases.some(alias => options[alias] !== undefined);\n\nexport const normalizeStdio = options => {\n\tif (!options) {\n\t\treturn;\n\t}\n\n\tconst {stdio} = options;\n\n\tif (stdio === undefined) {\n\t\treturn aliases.map(alias => options[alias]);\n\t}\n\n\tif (hasAlias(options)) {\n\t\tthrow new Error(`It's not possible to provide \\`stdio\\` in combination with one of ${aliases.map(alias => `\\`${alias}\\``).join(', ')}`);\n\t}\n\n\tif (typeof stdio === 'string') {\n\t\treturn stdio;\n\t}\n\n\tif (!Array.isArray(stdio)) {\n\t\tthrow new TypeError(`Expected \\`stdio\\` to be of type \\`string\\` or \\`Array\\`, got \\`${typeof stdio}\\``);\n\t}\n\n\tconst length = Math.max(stdio.length, aliases.length);\n\treturn Array.from({length}, (value, index) => stdio[index]);\n};\n\n// `ipc` is pushed unless it is already present\nexport const normalizeStdioNode = options => {\n\tconst stdio = normalizeStdio(options);\n\n\tif (stdio === 'ipc') {\n\t\treturn 'ipc';\n\t}\n\n\tif (stdio === undefined || typeof stdio === 'string') {\n\t\treturn [stdio, stdio, stdio, 'ipc'];\n\t}\n\n\tif (stdio.includes('ipc')) {\n\t\treturn stdio;\n\t}\n\n\treturn [...stdio, 'ipc'];\n};\n","import os from 'node:os';\nimport {onExit} from 'signal-exit';\n\nconst DEFAULT_FORCE_KILL_TIMEOUT = 1000 * 5;\n\n// Monkey-patches `childProcess.kill()` to add `forceKillAfterTimeout` behavior\nexport const spawnedKill = (kill, signal = 'SIGTERM', options = {}) => {\n\tconst killResult = kill(signal);\n\tsetKillTimeout(kill, signal, options, killResult);\n\treturn killResult;\n};\n\nconst setKillTimeout = (kill, signal, options, killResult) => {\n\tif (!shouldForceKill(signal, options, killResult)) {\n\t\treturn;\n\t}\n\n\tconst timeout = getForceKillAfterTimeout(options);\n\tconst t = setTimeout(() => {\n\t\tkill('SIGKILL');\n\t}, timeout);\n\n\t// Guarded because there's no `.unref()` when `execa` is used in the renderer\n\t// process in Electron. This cannot be tested since we don't run tests in\n\t// Electron.\n\t// istanbul ignore else\n\tif (t.unref) {\n\t\tt.unref();\n\t}\n};\n\nconst shouldForceKill = (signal, {forceKillAfterTimeout}, killResult) => isSigterm(signal) && forceKillAfterTimeout !== false && killResult;\n\nconst isSigterm = signal => signal === os.constants.signals.SIGTERM\n\t\t|| (typeof signal === 'string' && signal.toUpperCase() === 'SIGTERM');\n\nconst getForceKillAfterTimeout = ({forceKillAfterTimeout = true}) => {\n\tif (forceKillAfterTimeout === true) {\n\t\treturn DEFAULT_FORCE_KILL_TIMEOUT;\n\t}\n\n\tif (!Number.isFinite(forceKillAfterTimeout) || forceKillAfterTimeout < 0) {\n\t\tthrow new TypeError(`Expected the \\`forceKillAfterTimeout\\` option to be a non-negative integer, got \\`${forceKillAfterTimeout}\\` (${typeof forceKillAfterTimeout})`);\n\t}\n\n\treturn forceKillAfterTimeout;\n};\n\n// `childProcess.cancel()`\nexport const spawnedCancel = (spawned, context) => {\n\tconst killResult = spawned.kill();\n\n\tif (killResult) {\n\t\tcontext.isCanceled = true;\n\t}\n};\n\nconst timeoutKill = (spawned, signal, reject) => {\n\tspawned.kill(signal);\n\treject(Object.assign(new Error('Timed out'), {timedOut: true, signal}));\n};\n\n// `timeout` option handling\nexport const setupTimeout = (spawned, {timeout, killSignal = 'SIGTERM'}, spawnedPromise) => {\n\tif (timeout === 0 || timeout === undefined) {\n\t\treturn spawnedPromise;\n\t}\n\n\tlet timeoutId;\n\tconst timeoutPromise = new Promise((resolve, reject) => {\n\t\ttimeoutId = setTimeout(() => {\n\t\t\ttimeoutKill(spawned, killSignal, reject);\n\t\t}, timeout);\n\t});\n\n\tconst safeSpawnedPromise = spawnedPromise.finally(() => {\n\t\tclearTimeout(timeoutId);\n\t});\n\n\treturn Promise.race([timeoutPromise, safeSpawnedPromise]);\n};\n\nexport const validateTimeout = ({timeout}) => {\n\tif (timeout !== undefined && (!Number.isFinite(timeout) || timeout < 0)) {\n\t\tthrow new TypeError(`Expected the \\`timeout\\` option to be a non-negative integer, got \\`${timeout}\\` (${typeof timeout})`);\n\t}\n};\n\n// `cleanup` option handling\nexport const setExitHandler = async (spawned, {cleanup, detached}, timedPromise) => {\n\tif (!cleanup || detached) {\n\t\treturn timedPromise;\n\t}\n\n\tconst removeExitHandler = onExit(() => {\n\t\tspawned.kill();\n\t});\n\n\treturn timedPromise.finally(() => {\n\t\tremoveExitHandler();\n\t});\n};\n","/**\n * This is not the set of all possible signals.\n *\n * It IS, however, the set of all signals that trigger\n * an exit on either Linux or BSD systems. Linux is a\n * superset of the signal names supported on BSD, and\n * the unknown signals just fail to register, so we can\n * catch that easily enough.\n *\n * Windows signals are a different set, since there are\n * signals that terminate Windows processes, but don't\n * terminate (or don't even exist) on Posix systems.\n *\n * Don't bother with SIGKILL. It's uncatchable, which\n * means that we can't fire any callbacks anyway.\n *\n * If a user does happen to register a handler on a non-\n * fatal signal like SIGWINCH or something, and then\n * exit, it'll end up firing `process.emit('exit')`, so\n * the handler will be fired anyway.\n *\n * SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n * artificially, inherently leave the process in a\n * state from which it is not safe to try and enter JS\n * listeners.\n */\nexport const signals: NodeJS.Signals[] = []\nsignals.push('SIGHUP', 'SIGINT', 'SIGTERM')\n\nif (process.platform !== 'win32') {\n signals.push(\n 'SIGALRM',\n 'SIGABRT',\n 'SIGVTALRM',\n 'SIGXCPU',\n 'SIGXFSZ',\n 'SIGUSR2',\n 'SIGTRAP',\n 'SIGSYS',\n 'SIGQUIT',\n 'SIGIOT'\n // should detect profiler and enable/disable accordingly.\n // see #21\n // 'SIGPROF'\n )\n}\n\nif (process.platform === 'linux') {\n signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT')\n}\n","// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\n// grab a reference to node's real process object right away\nimport { signals } from './signals.js'\nexport { signals }\n\n// just a loosened process type so we can do some evil things\ntype ProcessRE = NodeJS.Process & {\n reallyExit: (code?: number | undefined | null) => any\n emit: (ev: string, ...a: any[]) => any\n}\n\nconst processOk = (process: any): process is ProcessRE =>\n !!process &&\n typeof process === 'object' &&\n typeof process.removeListener === 'function' &&\n typeof process.emit === 'function' &&\n typeof process.reallyExit === 'function' &&\n typeof process.listeners === 'function' &&\n typeof process.kill === 'function' &&\n typeof process.pid === 'number' &&\n typeof process.on === 'function'\n\nconst kExitEmitter = Symbol.for('signal-exit emitter')\nconst global: typeof globalThis & { [kExitEmitter]?: Emitter } = globalThis\nconst ObjectDefineProperty = Object.defineProperty.bind(Object)\n\n/**\n * A function that takes an exit code and signal as arguments\n *\n * In the case of signal exits *only*, a return value of true\n * will indicate that the signal is being handled, and we should\n * not synthetically exit with the signal we received. Regardless\n * of the handler return value, the handler is unloaded when an\n * otherwise fatal signal is received, so you get exactly 1 shot\n * at it, unless you add another onExit handler at that point.\n *\n * In the case of numeric code exits, we may already have committed\n * to exiting the process, for example via a fatal exception or\n * unhandled promise rejection, so it is impossible to stop safely.\n */\nexport type Handler = (\n code: number | null | undefined,\n signal: NodeJS.Signals | null\n) => true | void\ntype ExitEvent = 'afterExit' | 'exit'\ntype Emitted = { [k in ExitEvent]: boolean }\ntype Listeners = { [k in ExitEvent]: Handler[] }\n\n// teeny special purpose ee\nclass Emitter {\n emitted: Emitted = {\n afterExit: false,\n exit: false,\n }\n\n listeners: Listeners = {\n afterExit: [],\n exit: [],\n }\n\n count: number = 0\n id: number = Math.random()\n\n constructor() {\n if (global[kExitEmitter]) {\n return global[kExitEmitter]\n }\n ObjectDefineProperty(global, kExitEmitter, {\n value: this,\n writable: false,\n enumerable: false,\n configurable: false,\n })\n }\n\n on(ev: ExitEvent, fn: Handler) {\n this.listeners[ev].push(fn)\n }\n\n removeListener(ev: ExitEvent, fn: Handler) {\n const list = this.listeners[ev]\n const i = list.indexOf(fn)\n /* c8 ignore start */\n if (i === -1) {\n return\n }\n /* c8 ignore stop */\n if (i === 0 && list.length === 1) {\n list.length = 0\n } else {\n list.splice(i, 1)\n }\n }\n\n emit(\n ev: ExitEvent,\n code: number | null | undefined,\n signal: NodeJS.Signals | null\n ): boolean {\n if (this.emitted[ev]) {\n return false\n }\n this.emitted[ev] = true\n let ret: boolean = false\n for (const fn of this.listeners[ev]) {\n ret = fn(code, signal) === true || ret\n }\n if (ev === 'exit') {\n ret = this.emit('afterExit', code, signal) || ret\n }\n return ret\n }\n}\n\nabstract class SignalExitBase {\n abstract onExit(cb: Handler, opts?: { alwaysLast?: boolean }): () => void\n abstract load(): void\n abstract unload(): void\n}\n\nconst signalExitWrap = <T extends SignalExitBase>(handler: T) => {\n return {\n onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n return handler.onExit(cb, opts)\n },\n load() {\n return handler.load()\n },\n unload() {\n return handler.unload()\n },\n }\n}\n\nclass SignalExitFallback extends SignalExitBase {\n onExit() {\n return () => {}\n }\n load() {}\n unload() {}\n}\n\nclass SignalExit extends SignalExitBase {\n // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n // so use a supported signal instead\n /* c8 ignore start */\n #hupSig = process.platform === 'win32' ? 'SIGINT' : 'SIGHUP'\n /* c8 ignore stop */\n #emitter = new Emitter()\n #process: ProcessRE\n #originalProcessEmit: ProcessRE['emit']\n #originalProcessReallyExit: ProcessRE['reallyExit']\n\n #sigListeners: { [k in NodeJS.Signals]?: () => void } = {}\n #loaded: boolean = false\n\n constructor(process: ProcessRE) {\n super()\n this.#process = process\n // { <signal>: <listener fn>, ... }\n this.#sigListeners = {}\n for (const sig of signals) {\n this.#sigListeners[sig] = () => {\n // If there are no other listeners, an exit is coming!\n // Simplest way: remove us and then re-send the signal.\n // We know that this will kill the process, so we can\n // safely emit now.\n const listeners = this.#process.listeners(sig)\n let { count } = this.#emitter\n // This is a workaround for the fact that signal-exit v3 and signal\n // exit v4 are not aware of each other, and each will attempt to let\n // the other handle it, so neither of them do. To correct this, we\n // detect if we're the only handler *except* for previous versions\n // of signal-exit, and increment by the count of listeners it has\n // created.\n /* c8 ignore start */\n const p = process as unknown as {\n __signal_exit_emitter__?: { count: number }\n }\n if (\n typeof p.__signal_exit_emitter__ === 'object' &&\n typeof p.__signal_exit_emitter__.count === 'number'\n ) {\n count += p.__signal_exit_emitter__.count\n }\n /* c8 ignore stop */\n if (listeners.length === count) {\n this.unload()\n const ret = this.#emitter.emit('exit', null, sig)\n /* c8 ignore start */\n const s = sig === 'SIGHUP' ? this.#hupSig : sig\n if (!ret) process.kill(process.pid, s)\n /* c8 ignore stop */\n }\n }\n }\n\n this.#originalProcessReallyExit = process.reallyExit\n this.#originalProcessEmit = process.emit\n }\n\n onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return () => {}\n }\n /* c8 ignore stop */\n\n if (this.#loaded === false) {\n this.load()\n }\n\n const ev = opts?.alwaysLast ? 'afterExit' : 'exit'\n this.#emitter.on(ev, cb)\n return () => {\n this.#emitter.removeListener(ev, cb)\n if (\n this.#emitter.listeners['exit'].length === 0 &&\n this.#emitter.listeners['afterExit'].length === 0\n ) {\n this.unload()\n }\n }\n }\n\n load() {\n if (this.#loaded) {\n return\n }\n this.#loaded = true\n\n // This is the number of onSignalExit's that are in play.\n // It's important so that we can count the correct number of\n // listeners on signals, and don't wait for the other one to\n // handle it instead of us.\n this.#emitter.count += 1\n\n for (const sig of signals) {\n try {\n const fn = this.#sigListeners[sig]\n if (fn) this.#process.on(sig, fn)\n } catch (_) {}\n }\n\n this.#process.emit = (ev: string, ...a: any[]) => {\n return this.#processEmit(ev, ...a)\n }\n this.#process.reallyExit = (code?: number | null | undefined) => {\n return this.#processReallyExit(code)\n }\n }\n\n unload() {\n if (!this.#loaded) {\n return\n }\n this.#loaded = false\n\n signals.forEach(sig => {\n const listener = this.#sigListeners[sig]\n /* c8 ignore start */\n if (!listener) {\n throw new Error('Listener not defined for signal: ' + sig)\n }\n /* c8 ignore stop */\n try {\n this.#process.removeListener(sig, listener)\n /* c8 ignore start */\n } catch (_) {}\n /* c8 ignore stop */\n })\n this.#process.emit = this.#originalProcessEmit\n this.#process.reallyExit = this.#originalProcessReallyExit\n this.#emitter.count -= 1\n }\n\n #processReallyExit(code?: number | null | undefined) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return 0\n }\n this.#process.exitCode = code || 0\n /* c8 ignore stop */\n\n this.#emitter.emit('exit', this.#process.exitCode, null)\n return this.#originalProcessReallyExit.call(\n this.#process,\n this.#process.exitCode\n )\n }\n\n #processEmit(ev: string, ...args: any[]): any {\n const og = this.#originalProcessEmit\n if (ev === 'exit' && processOk(this.#process)) {\n if (typeof args[0] === 'number') {\n this.#process.exitCode = args[0]\n /* c8 ignore start */\n }\n /* c8 ignore start */\n const ret = og.call(this.#process, ev, ...args)\n /* c8 ignore start */\n this.#emitter.emit('exit', this.#process.exitCode, null)\n /* c8 ignore stop */\n return ret\n } else {\n return og.call(this.#process, ev, ...args)\n }\n }\n}\n\nconst process = globalThis.process\n// wrap so that we call the method on the actual handler, without\n// exporting it directly.\nexport const {\n /**\n * Called when the process is exiting, whether via signal, explicit\n * exit, or running out of stuff to do.\n *\n * If the global process object is not suitable for instrumentation,\n * then this will be a no-op.\n *\n * Returns a function that may be used to unload signal-exit.\n */\n onExit,\n\n /**\n * Load the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\n load,\n\n /**\n * Unload the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\n unload,\n} = signalExitWrap(\n processOk(process) ? new SignalExit(process) : new SignalExitFallback()\n)\n","import {createWriteStream} from 'node:fs';\nimport {ChildProcess} from 'node:child_process';\nimport {isWritableStream} from 'is-stream';\n\nconst isExecaChildProcess = target => target instanceof ChildProcess && typeof target.then === 'function';\n\nconst pipeToTarget = (spawned, streamName, target) => {\n\tif (typeof target === 'string') {\n\t\tspawned[streamName].pipe(createWriteStream(target));\n\t\treturn spawned;\n\t}\n\n\tif (isWritableStream(target)) {\n\t\tspawned[streamName].pipe(target);\n\t\treturn spawned;\n\t}\n\n\tif (!isExecaChildProcess(target)) {\n\t\tthrow new TypeError('The second argument must be a string, a stream or an Execa child process.');\n\t}\n\n\tif (!isWritableStream(target.stdin)) {\n\t\tthrow new TypeError('The target child process\\'s stdin must be available.');\n\t}\n\n\tspawned[streamName].pipe(target.stdin);\n\treturn target;\n};\n\nexport const addPipeMethods = spawned => {\n\tif (spawned.stdout !== null) {\n\t\tspawned.pipeStdout = pipeToTarget.bind(undefined, spawned, 'stdout');\n\t}\n\n\tif (spawned.stderr !== null) {\n\t\tspawned.pipeStderr = pipeToTarget.bind(undefined, spawned, 'stderr');\n\t}\n\n\tif (spawned.all !== undefined) {\n\t\tspawned.pipeAll = pipeToTarget.bind(undefined, spawned, 'all');\n\t}\n};\n","export function isStream(stream) {\n\treturn stream !== null\n\t\t&& typeof stream === 'object'\n\t\t&& typeof stream.pipe === 'function';\n}\n\nexport function isWritableStream(stream) {\n\treturn isStream(stream)\n\t\t&& stream.writable !== false\n\t\t&& typeof stream._write === 'function'\n\t\t&& typeof stream._writableState === 'object';\n}\n\nexport function isReadableStream(stream) {\n\treturn isStream(stream)\n\t\t&& stream.readable !== false\n\t\t&& typeof stream._read === 'function'\n\t\t&& typeof stream._readableState === 'object';\n}\n\nexport function isDuplexStream(stream) {\n\treturn isWritableStream(stream)\n\t\t&& isReadableStream(stream);\n}\n\nexport function isTransformStream(stream) {\n\treturn isDuplexStream(stream)\n\t\t&& typeof stream._transform === 'function';\n}\n","import {createReadStream, readFileSync} from 'node:fs';\nimport {setTimeout} from 'node:timers/promises';\nimport {isStream} from 'is-stream';\nimport getStream, {getStreamAsBuffer} from 'get-stream';\nimport mergeStream from 'merge-stream';\n\nconst validateInputOptions = input => {\n\tif (input !== undefined) {\n\t\tthrow new TypeError('The `input` and `inputFile` options cannot be both set.');\n\t}\n};\n\nconst getInputSync = ({input, inputFile}) => {\n\tif (typeof inputFile !== 'string') {\n\t\treturn input;\n\t}\n\n\tvalidateInputOptions(input);\n\treturn readFileSync(inputFile);\n};\n\n// `input` and `inputFile` option in sync mode\nexport const handleInputSync = options => {\n\tconst input = getInputSync(options);\n\n\tif (isStream(input)) {\n\t\tthrow new TypeError('The `input` option cannot be a stream in sync mode');\n\t}\n\n\treturn input;\n};\n\nconst getInput = ({input, inputFile}) => {\n\tif (typeof inputFile !== 'string') {\n\t\treturn input;\n\t}\n\n\tvalidateInputOptions(input);\n\treturn createReadStream(inputFile);\n};\n\n// `input` and `inputFile` option in async mode\nexport const handleInput = (spawned, options) => {\n\tconst input = getInput(options);\n\n\tif (input === undefined) {\n\t\treturn;\n\t}\n\n\tif (isStream(input)) {\n\t\tinput.pipe(spawned.stdin);\n\t} else {\n\t\tspawned.stdin.end(input);\n\t}\n};\n\n// `all` interleaves `stdout` and `stderr`\nexport const makeAllStream = (spawned, {all}) => {\n\tif (!all || (!spawned.stdout && !spawned.stderr)) {\n\t\treturn;\n\t}\n\n\tconst mixed = mergeStream();\n\n\tif (spawned.stdout) {\n\t\tmixed.add(spawned.stdout);\n\t}\n\n\tif (spawned.stderr) {\n\t\tmixed.add(spawned.stderr);\n\t}\n\n\treturn mixed;\n};\n\n// On failure, `result.stdout|stderr|all` should contain the currently buffered stream\nconst getBufferedData = async (stream, streamPromise) => {\n\t// When `buffer` is `false`, `streamPromise` is `undefined` and there is no buffered data to retrieve\n\tif (!stream || streamPromise === undefined) {\n\t\treturn;\n\t}\n\n\t// Wait for the `all` stream to receive the last chunk before destroying the stream\n\tawait setTimeout(0);\n\n\tstream.destroy();\n\n\ttry {\n\t\treturn await streamPromise;\n\t} catch (error) {\n\t\treturn error.bufferedData;\n\t}\n};\n\nconst getStreamPromise = (stream, {encoding, buffer, maxBuffer}) => {\n\tif (!stream || !buffer) {\n\t\treturn;\n\t}\n\n\t// eslint-disable-next-line unicorn/text-encoding-identifier-case\n\tif (encoding === 'utf8' || encoding === 'utf-8') {\n\t\treturn getStream(stream, {maxBuffer});\n\t}\n\n\tif (encoding === null || encoding === 'buffer') {\n\t\treturn getStreamAsBuffer(stream, {maxBuffer});\n\t}\n\n\treturn applyEncoding(stream, maxBuffer, encoding);\n};\n\nconst applyEncoding = async (stream, maxBuffer, encoding) => {\n\tconst buffer = await getStreamAsBuffer(stream, {maxBuffer});\n\treturn buffer.toString(encoding);\n};\n\n// Retrieve result of child process: exit code, signal, error, streams (stdout/stderr/all)\nexport const getSpawnedResult = async ({stdout, stderr, all}, {encoding, buffer, maxBuffer}, processDone) => {\n\tconst stdoutPromise = getStreamPromise(stdout, {encoding, buffer, maxBuffer});\n\tconst stderrPromise = getStreamPromise(stderr, {encoding, buffer, maxBuffer});\n\tconst allPromise = getStreamPromise(all, {encoding, buffer, maxBuffer: maxBuffer * 2});\n\n\ttry {\n\t\treturn await Promise.all([processDone, stdoutPromise, stderrPromise, allPromise]);\n\t} catch (error) {\n\t\treturn Promise.all([\n\t\t\t{error, signal: error.signal, timedOut: error.timedOut},\n\t\t\tgetBufferedData(stdout, stdoutPromise),\n\t\t\tgetBufferedData(stderr, stderrPromise),\n\t\t\tgetBufferedData(all, allPromise),\n\t\t]);\n\t}\n};\n","export const getStreamContents = async (stream, {init, convertChunk, getSize, truncateChunk, addChunk, getFinalChunk, finalize}, {maxBuffer = Number.POSITIVE_INFINITY} = {}) => {\n\tif (!isAsyncIterable(stream)) {\n\t\tthrow new Error('The first argument must be a Readable, a ReadableStream, or an async iterable.');\n\t}\n\n\tconst state = init();\n\tstate.length = 0;\n\n\ttry {\n\t\tfor await (const chunk of stream) {\n\t\t\tconst chunkType = getChunkType(chunk);\n\t\t\tconst convertedChunk = convertChunk[chunkType](chunk, state);\n\t\t\tappendChunk({convertedChunk, state, getSize, truncateChunk, addChunk, maxBuffer});\n\t\t}\n\n\t\tappendFinalChunk({state, convertChunk, getSize, truncateChunk, addChunk, getFinalChunk, maxBuffer});\n\t\treturn finalize(state);\n\t} catch (error) {\n\t\terror.bufferedData = finalize(state);\n\t\tthrow error;\n\t}\n};\n\nconst appendFinalChunk = ({state, getSize, truncateChunk, addChunk, getFinalChunk, maxBuffer}) => {\n\tconst convertedChunk = getFinalChunk(state);\n\tif (convertedChunk !== undefined) {\n\t\tappendChunk({convertedChunk, state, getSize, truncateChunk, addChunk, maxBuffer});\n\t}\n};\n\nconst appendChunk = ({convertedChunk, state, getSize, truncateChunk, addChunk, maxBuffer}) => {\n\tconst chunkSize = getSize(convertedChunk);\n\tconst newLength = state.length + chunkSize;\n\n\tif (newLength <= maxBuffer) {\n\t\taddNewChunk(convertedChunk, state, addChunk, newLength);\n\t\treturn;\n\t}\n\n\tconst truncatedChunk = truncateChunk(convertedChunk, maxBuffer - state.length);\n\n\tif (truncatedChunk !== undefined) {\n\t\taddNewChunk(truncatedChunk, state, addChunk, maxBuffer);\n\t}\n\n\tthrow new MaxBufferError();\n};\n\nconst addNewChunk = (convertedChunk, state, addChunk, newLength) => {\n\tstate.contents = addChunk(convertedChunk, state, newLength);\n\tstate.length = newLength;\n};\n\nconst isAsyncIterable = stream => typeof stream === 'object' && stream !== null && typeof stream[Symbol.asyncIterator] === 'function';\n\nconst getChunkType = chunk => {\n\tconst typeOfChunk = typeof chunk;\n\n\tif (typeOfChunk === 'string') {\n\t\treturn 'string';\n\t}\n\n\tif (typeOfChunk !== 'object' || chunk === null) {\n\t\treturn 'others';\n\t}\n\n\t// eslint-disable-next-line n/prefer-global/buffer\n\tif (globalThis.Buffer?.isBuffer(chunk)) {\n\t\treturn 'buffer';\n\t}\n\n\tconst prototypeName = objectToString.call(chunk);\n\n\tif (prototypeName === '[object ArrayBuffer]') {\n\t\treturn 'arrayBuffer';\n\t}\n\n\tif (prototypeName === '[object DataView]') {\n\t\treturn 'dataView';\n\t}\n\n\tif (\n\t\tNumber.isInteger(chunk.byteLength)\n\t\t&& Number.isInteger(chunk.byteOffset)\n\t\t&& objectToString.call(chunk.buffer) === '[object ArrayBuffer]'\n\t) {\n\t\treturn 'typedArray';\n\t}\n\n\treturn 'others';\n};\n\nconst {toString: objectToString} = Object.prototype;\n\nexport class MaxBufferError extends Error {\n\tname = 'MaxBufferError';\n\n\tconstructor() {\n\t\tsuper('maxBuffer exceeded');\n\t}\n}\n","export const identity = value => value;\n\nexport const noop = () => undefined;\n\nexport const getContentsProp = ({contents}) => contents;\n\nexport const throwObjectStream = chunk => {\n\tthrow new Error(`Streams in object mode are not supported: ${String(chunk)}`);\n};\n\nexport const getLengthProp = convertedChunk => convertedChunk.length;\n","import {getStreamContents} from './contents.js';\nimport {noop, throwObjectStream, getLengthProp} from './utils.js';\n\nexport async function getStreamAsArrayBuffer(stream, options) {\n\treturn getStreamContents(stream, arrayBufferMethods, options);\n}\n\nconst initArrayBuffer = () => ({contents: new ArrayBuffer(0)});\n\nconst useTextEncoder = chunk => textEncoder.encode(chunk);\nconst textEncoder = new TextEncoder();\n\nconst useUint8Array = chunk => new Uint8Array(chunk);\n\nconst useUint8ArrayWithOffset = chunk => new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength);\n\nconst truncateArrayBufferChunk = (convertedChunk, chunkSize) => convertedChunk.slice(0, chunkSize);\n\n// `contents` is an increasingly growing `Uint8Array`.\nconst addArrayBufferChunk = (convertedChunk, {contents, length: previousLength}, length) => {\n\tconst newContents = hasArrayBufferResize() ? resizeArrayBuffer(contents, length) : resizeArrayBufferSlow(contents, length);\n\tnew Uint8Array(newContents).set(convertedChunk, previousLength);\n\treturn newContents;\n};\n\n// Without `ArrayBuffer.resize()`, `contents` size is always a power of 2.\n// This means its last bytes are zeroes (not stream data), which need to be\n// trimmed at the end with `ArrayBuffer.slice()`.\nconst resizeArrayBufferSlow = (contents, length) => {\n\tif (length <= contents.byteLength) {\n\t\treturn contents;\n\t}\n\n\tconst arrayBuffer = new ArrayBuffer(getNewContentsLength(length));\n\tnew Uint8Array(arrayBuffer).set(new Uint8Array(contents), 0);\n\treturn arrayBuffer;\n};\n\n// With `ArrayBuffer.resize()`, `contents` size matches exactly the size of\n// the stream data. It does not include extraneous zeroes to trim at the end.\n// The underlying `ArrayBuffer` does allocate a number of bytes that is a power\n// of 2, but those bytes are only visible after calling `ArrayBuffer.resize()`.\nconst resizeArrayBuffer = (contents, length) => {\n\tif (length <= contents.maxByteLength) {\n\t\tcontents.resize(length);\n\t\treturn contents;\n\t}\n\n\tconst arrayBuffer = new ArrayBuffer(length, {maxByteLength: getNewContentsLength(length)});\n\tnew Uint8Array(arrayBuffer).set(new Uint8Array(contents), 0);\n\treturn arrayBuffer;\n};\n\n// Retrieve the closest `length` that is both >= and a power of 2\nconst getNewContentsLength = length => SCALE_FACTOR ** Math.ceil(Math.log(length) / Math.log(SCALE_FACTOR));\n\nconst SCALE_FACTOR = 2;\n\nconst finalizeArrayBuffer = ({contents, length}) => hasArrayBufferResize() ? contents : contents.slice(0, length);\n\n// `ArrayBuffer.slice()` is slow. When `ArrayBuffer.resize()` is available\n// (Node >=20.0.0, Safari >=16.4 and Chrome), we can use it instead.\n// eslint-disable-next-line no-warning-comments\n// TODO: remove after dropping support for Node 20.\n// eslint-disable-next-line no-warning-comments\n// TODO: use `ArrayBuffer.transferToFixedLength()` instead once it is available\nconst hasArrayBufferResize = () => 'resize' in ArrayBuffer.prototype;\n\nconst arrayBufferMethods = {\n\tinit: initArrayBuffer,\n\tconvertChunk: {\n\t\tstring: useTextEncoder,\n\t\tbuffer: useUint8Array,\n\t\tarrayBuffer: useUint8Array,\n\t\tdataView: useUint8ArrayWithOffset,\n\t\ttypedArray: useUint8ArrayWithOffset,\n\t\tothers: throwObjectStream,\n\t},\n\tgetSize: getLengthProp,\n\ttruncateChunk: truncateArrayBufferChunk,\n\taddChunk: addArrayBufferChunk,\n\tgetFinalChunk: noop,\n\tfinalize: finalizeArrayBuffer,\n};\n","import {getStreamAsArrayBuffer} from './array-buffer.js';\n\nexport async function getStreamAsBuffer(stream, options) {\n\tif (!('Buffer' in globalThis)) {\n\t\tthrow new Error('getStreamAsBuffer() is only supported in Node.js');\n\t}\n\n\ttry {\n\t\treturn arrayBufferToNodeBuffer(await getStreamAsArrayBuffer(stream, options));\n\t} catch (error) {\n\t\tif (error.bufferedData !== undefined) {\n\t\t\terror.bufferedData = arrayBufferToNodeBuffer(error.bufferedData);\n\t\t}\n\n\t\tthrow error;\n\t}\n}\n\n// eslint-disable-next-line n/prefer-global/buffer\nconst arrayBufferToNodeBuffer = arrayBuffer => globalThis.Buffer.from(arrayBuffer);\n","import {getStreamContents} from './contents.js';\nimport {identity, getContentsProp, throwObjectStream, getLengthProp} from './utils.js';\n\nexport async function getStreamAsString(stream, options) {\n\treturn getStreamContents(stream, stringMethods, options);\n}\n\nconst initString = () => ({contents: '', textDecoder: new TextDecoder()});\n\nconst useTextDecoder = (chunk, {textDecoder}) => textDecoder.decode(chunk, {stream: true});\n\nconst addStringChunk = (convertedChunk, {contents}) => contents + convertedChunk;\n\nconst truncateStringChunk = (convertedChunk, chunkSize) => convertedChunk.slice(0, chunkSize);\n\nconst getFinalStringChunk = ({textDecoder}) => {\n\tconst finalChunk = textDecoder.decode();\n\treturn finalChunk === '' ? undefined : finalChunk;\n};\n\nconst stringMethods = {\n\tinit: initString,\n\tconvertChunk: {\n\t\tstring: identity,\n\t\tbuffer: useTextDecoder,\n\t\tarrayBuffer: useTextDecoder,\n\t\tdataView: useTextDecoder,\n\t\ttypedArray: useTextDecoder,\n\t\tothers: throwObjectStream,\n\t},\n\tgetSize: getLengthProp,\n\ttruncateChunk: truncateStringChunk,\n\taddChunk: addStringChunk,\n\tgetFinalChunk: getFinalStringChunk,\n\tfinalize: getContentsProp,\n};\n","// eslint-disable-next-line unicorn/prefer-top-level-await\nconst nativePromisePrototype = (async () => {})().constructor.prototype;\n\nconst descriptors = ['then', 'catch', 'finally'].map(property => [\n\tproperty,\n\tReflect.getOwnPropertyDescriptor(nativePromisePrototype, property),\n]);\n\n// The return value is a mixin of `childProcess` and `Promise`\nexport const mergePromise = (spawned, promise) => {\n\tfor (const [property, descriptor] of descriptors) {\n\t\t// Starting the main `promise` is deferred to avoid consuming streams\n\t\tconst value = typeof promise === 'function'\n\t\t\t? (...args) => Reflect.apply(descriptor.value, promise(), args)\n\t\t\t: descriptor.value.bind(promise);\n\n\t\tReflect.defineProperty(spawned, property, {...descriptor, value});\n\t}\n};\n\n// Use promises instead of `child_process` events\nexport const getSpawnedPromise = spawned => new Promise((resolve, reject) => {\n\tspawned.on('exit', (exitCode, signal) => {\n\t\tresolve({exitCode, signal});\n\t});\n\n\tspawned.on('error', error => {\n\t\treject(error);\n\t});\n\n\tif (spawned.stdin) {\n\t\tspawned.stdin.on('error', error => {\n\t\t\treject(error);\n\t\t});\n\t}\n});\n","import {Buffer} from 'node:buffer';\nimport {ChildProcess} from 'node:child_process';\n\nconst normalizeArgs = (file, args = []) => {\n\tif (!Array.isArray(args)) {\n\t\treturn [file];\n\t}\n\n\treturn [file, ...args];\n};\n\nconst NO_ESCAPE_REGEXP = /^[\\w.-]+$/;\n\nconst escapeArg = arg => {\n\tif (typeof arg !== 'string' || NO_ESCAPE_REGEXP.test(arg)) {\n\t\treturn arg;\n\t}\n\n\treturn `\"${arg.replaceAll('\"', '\\\\\"')}\"`;\n};\n\nexport const joinCommand = (file, args) => normalizeArgs(file, args).join(' ');\n\nexport const getEscapedCommand = (file, args) => normalizeArgs(file, args).map(arg => escapeArg(arg)).join(' ');\n\nconst SPACES_REGEXP = / +/g;\n\n// Handle `execaCommand()`\nexport const parseCommand = command => {\n\tconst tokens = [];\n\tfor (const token of command.trim().split(SPACES_REGEXP)) {\n\t\t// Allow spaces to be escaped by a backslash if not meant as a delimiter\n\t\tconst previousToken = tokens.at(-1);\n\t\tif (previousToken && previousToken.endsWith('\\\\')) {\n\t\t\t// Merge previous token with current one\n\t\t\ttokens[tokens.length - 1] = `${previousToken.slice(0, -1)} ${token}`;\n\t\t} else {\n\t\t\ttokens.push(token);\n\t\t}\n\t}\n\n\treturn tokens;\n};\n\nconst parseExpression = expression => {\n\tconst typeOfExpression = typeof expression;\n\n\tif (typeOfExpression === 'string') {\n\t\treturn expression;\n\t}\n\n\tif (typeOfExpression === 'number') {\n\t\treturn String(expression);\n\t}\n\n\tif (\n\t\ttypeOfExpression === 'object'\n\t\t&& expression !== null\n\t\t&& !(expression instanceof ChildProcess)\n\t\t&& 'stdout' in expression\n\t) {\n\t\tconst typeOfStdout = typeof expression.stdout;\n\n\t\tif (typeOfStdout === 'string') {\n\t\t\treturn expression.stdout;\n\t\t}\n\n\t\tif (Buffer.isBuffer(expression.stdout)) {\n\t\t\treturn expression.stdout.toString();\n\t\t}\n\n\t\tthrow new TypeError(`Unexpected \"${typeOfStdout}\" stdout in template expression`);\n\t}\n\n\tthrow new TypeError(`Unexpected \"${typeOfExpression}\" in template expression`);\n};\n\nconst concatTokens = (tokens, nextTokens, isNew) => isNew || tokens.length === 0 || nextTokens.length === 0\n\t? [...tokens, ...nextTokens]\n\t: [\n\t\t...tokens.slice(0, -1),\n\t\t`${tokens.at(-1)}${nextTokens[0]}`,\n\t\t...nextTokens.slice(1),\n\t];\n\nconst parseTemplate = ({templates, expressions, tokens, index, template}) => {\n\tconst templateString = template ?? templates.raw[index];\n\tconst templateTokens = templateString.split(SPACES_REGEXP).filter(Boolean);\n\tconst newTokens = concatTokens(\n\t\ttokens,\n\t\ttemplateTokens,\n\t\ttemplateString.startsWith(' '),\n\t);\n\n\tif (index === expressions.length) {\n\t\treturn newTokens;\n\t}\n\n\tconst expression = expressions[index];\n\tconst expressionTokens = Array.isArray(expression)\n\t\t? expression.map(expression => parseExpression(expression))\n\t\t: [parseExpression(expression)];\n\treturn concatTokens(\n\t\tnewTokens,\n\t\texpressionTokens,\n\t\ttemplateString.endsWith(' '),\n\t);\n};\n\nexport const parseTemplates = (templates, expressions) => {\n\tlet tokens = [];\n\n\tfor (const [index, template] of templates.entries()) {\n\t\ttokens = parseTemplate({templates, expressions, tokens, index, template});\n\t}\n\n\treturn tokens;\n};\n\n","import {debuglog} from 'node:util';\nimport process from 'node:process';\n\nexport const verboseDefault = debuglog('execa').enabled;\n\nconst padField = (field, padding) => String(field).padStart(padding, '0');\n\nconst getTimestamp = () => {\n\tconst date = new Date();\n\treturn `${padField(date.getHours(), 2)}:${padField(date.getMinutes(), 2)}:${padField(date.getSeconds(), 2)}.${padField(date.getMilliseconds(), 3)}`;\n};\n\nexport const logCommand = (escapedCommand, {verbose}) => {\n\tif (!verbose) {\n\t\treturn;\n\t}\n\n\tprocess.stderr.write(`[${getTimestamp()}] ${escapedCommand}\\n`);\n};\n","import { execaSync } from \"execa\";\n\nexport function head(options) {\n try {\n return execaSync(\"git\", [\"rev-parse\", \"HEAD\"], options).stdout;\n } catch {\n return undefined;\n }\n}\n\nexport function branch(options) {\n try {\n const headRef = execaSync(\n \"git\",\n [\"rev-parse\", \"--abbrev-ref\", \"HEAD\"],\n options,\n ).stdout;\n\n if (headRef === \"HEAD\") {\n const branch = execaSync(\n \"git\",\n [\"show\", \"-s\", \"--pretty=%d\", \"HEAD\"],\n options,\n )\n .stdout.replace(/^\\(|\\)$/g, \"\")\n .split(\", \")\n .find((branch) => branch.startsWith(\"origin/\"));\n return branch ? branch.match(/^origin\\/(?<branch>.+)/)[1] : undefined;\n }\n\n return headRef;\n } catch {\n return undefined;\n }\n}\n\n// Match slug on SSH URLs (ex: `USER@HOST:PORT/ORG/REPO.git`)\nconst GIT_SSH_URL_SLUG_PATTERN = /^(?:.*)@(?:.*):(?:\\d+\\/)?(.*)\\.git$/;\n\n// Match slug on HTTP(S) URLs `https://github.com/semantic-release/env-ci.git`\nconst GIT_PATHNAME_SLUG_PATTERN = /^\\/(.*)\\.git$/;\n\n/**\n * Extract repository slug(owner/repo) from a repository URL\n *\n * @param {String} repositoryURL\n * @returns {String | undefined}\n */\nexport function getSlugFromGitURL(repositoryURL) {\n if (!repositoryURL) {\n return undefined;\n }\n\n if (repositoryURL.match(GIT_SSH_URL_SLUG_PATTERN)) {\n return repositoryURL.replace(GIT_SSH_URL_SLUG_PATTERN, \"$1\");\n }\n\n try {\n const url = new URL(repositoryURL);\n return url.pathname.replace(GIT_PATHNAME_SLUG_PATTERN, \"$1\");\n } catch {\n return undefined;\n }\n}\n","// https://buildkite.com/docs/builds/environment-variables\nimport { getSlugFromGitURL } from \"../lib/git.js\";\n\nexport default {\n detect({ env }) {\n return Boolean(env.BUILDKITE);\n },\n configuration({ env }) {\n const pr =\n env.BUILDKITE_PULL_REQUEST === \"false\"\n ? undefined\n : env.BUILDKITE_PULL_REQUEST;\n const isPr = Boolean(pr);\n\n return {\n name: \"Buildkite\",\n service: \"buildkite\",\n build: env.BUILDKITE_BUILD_NUMBER,\n buildUrl: env.BUILDKITE_BUILD_URL,\n commit: env.BUILDKITE_COMMIT,\n tag: env.BUILDKITE_TAG,\n branch: isPr\n ? env.BUILDKITE_PULL_REQUEST_BASE_BRANCH\n : env.BUILDKITE_BRANCH,\n slug: getSlugFromGitURL(env.BUILDKITE_REPO),\n pr,\n isPr,\n prBranch: isPr ? env.BUILDKITE_BRANCH : undefined,\n root: env.BUILDKITE_BUILD_CHECKOUT_PATH,\n };\n },\n};\n","// https://circleci.com/docs/2.0/env-vars/#built-in-environment-variables\n\nimport { prNumber } from \"../lib/utils.js\";\n\nexport default {\n detect({ env }) {\n return Boolean(env.CIRCLECI);\n },\n configuration({ env }) {\n const pr =\n env.CIRCLE_PR_NUMBER ||\n prNumber(env.CIRCLE_PULL_REQUEST || env.CI_PULL_REQUEST);\n const isPr = Boolean(pr);\n\n return {\n name: \"CircleCI\",\n service: \"circleci\",\n build: env.CIRCLE_BUILD_NUM,\n buildUrl: env.CIRCLE_BUILD_URL,\n job: `${env.CIRCLE_BUILD_NUM}.${env.CIRCLE_NODE_INDEX}`,\n commit: env.CIRCLE_SHA1,\n tag: env.CIRCLE_TAG,\n branch: isPr ? undefined : env.CIRCLE_BRANCH,\n pr,\n isPr,\n prBranch: isPr ? env.CIRCLE_BRANCH : undefined,\n slug: `${env.CIRCLE_PROJECT_USERNAME}/${env.CIRCLE_PROJECT_REPONAME}`,\n };\n },\n};\n","// https://cirrus-ci.org/guide/writing-tasks/#environment-variables\n\nconst CIRRUS_CI_DASHBOARD = \"https://cirrus-ci.com\";\n\nexport default {\n detect({ env }) {\n return Boolean(env.CIRRUS_CI);\n },\n configuration({ env }) {\n const pr = env.CIRRUS_PR;\n const isPr = Boolean(pr);\n\n return {\n name: \"Cirrus CI\",\n service: \"cirrus\",\n commit: env.CIRRUS_CHANGE_IN_REPO,\n tag: env.CIRRUS_TAG,\n build: env.CIRRUS_BUILD_ID,\n buildUrl: `${CIRRUS_CI_DASHBOARD}/build/${env.CIRRUS_BUILD_ID}`,\n job: env.CIRRUS_TASK_ID,\n jobUrl: `${CIRRUS_CI_DASHBOARD}/task/${env.CIRRUS_TASK_ID}`,\n branch: isPr ? env.CIRRUS_BASE_BRANCH : env.CIRRUS_BRANCH,\n pr,\n isPr,\n prBranch: isPr ? env.CIRRUS_BRANCH : undefined,\n slug: env.CIRRUS_REPO_FULL_NAME,\n root: env.CIRRUS_WORKING_DIR,\n };\n },\n};\n","// https://developers.cloudflare.com/pages/platform/build-configuration#environment-variables\n\nexport default {\n detect({ env }) {\n return env.CF_PAGES === \"1\";\n },\n configuration({ env }) {\n return {\n name: \"Cloudflare Pages\",\n service: \"cloudflarePages\",\n commit: env.CF_PAGES_COMMIT_SHA,\n branch: env.CF_PAGES_BRANCH,\n root: env.PWD,\n };\n },\n};\n","import { head, branch } from \"../lib/git.js\";\n\n// https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html\n\nexport default {\n detect({ env }) {\n return Boolean(env.CODEBUILD_BUILD_ID);\n },\n configuration({ env, cwd }) {\n return {\n name: \"AWS CodeBuild\",\n service: \"codebuild\",\n commit: head({ env, cwd }),\n build: env.CODEBUILD_BUILD_ID,\n branch: branch({ env, cwd }),\n buildUrl: `https://console.aws.amazon.com/codebuild/home?region=${env.AWS_REGION}#/builds/${env.CODEBUILD_BUILD_ID}/view/new`,\n root: env.PWD,\n };\n },\n};\n","// https://codefresh.io/docs/docs/codefresh-yaml/variables#system-provided-variables\n\nexport default {\n detect({ env }) {\n return Boolean(env.CF_BUILD_ID);\n },\n configuration({ env }) {\n const pr = env.CF_PULL_REQUEST_NUMBER;\n const isPr = Boolean(pr);\n\n return {\n name: \"Codefresh\",\n service: \"codefresh\",\n commit: env.CF_REVISION,\n build: env.CF_BUILD_ID,\n buildUrl: env.CF_BUILD_URL,\n branch: isPr ? env.CF_PULL_REQUEST_TARGET : env.CF_BRANCH,\n pr,\n isPr,\n prBranch: isPr ? env.CF_BRANCH : undefined,\n slug: `${env.CF_REPO_OWNER}/${env.CF_REPO_NAME}`,\n root: env.CF_VOLUME_PATH,\n };\n },\n};\n","// https://documentation.codeship.com/basic/builds-and-configuration/set-environment-variables/#default-environment-variables\n\nexport default {\n detect({ env }) {\n return env.CI_NAME && env.CI_NAME === \"codeship\";\n },\n configuration({ env }) {\n return {\n name: \"Codeship\",\n service: \"codeship\",\n build: env.CI_BUILD_NUMBER,\n buildUrl: env.CI_BUILD_URL,\n commit: env.CI_COMMIT_ID,\n branch: env.CI_BRANCH,\n slug: env.CI_REPO_NAME,\n };\n },\n};\n","// https://readme.drone.io/reference/environ\n\nexport default {\n detect({ env }) {\n return Boolean(env.DRONE);\n },\n configuration({ env }) {\n const isPr = env.DRONE_BUILD_EVENT === \"pull_request\";\n\n return {\n name: \"Drone\",\n service: \"drone\",\n commit: env.DRONE_COMMIT_SHA,\n tag: env.DRONE_TAG,\n build: env.DRONE_BUILD_NUMBER,\n buildUrl: env.DRONE_BUILD_LINK,\n branch: isPr ? env.DRONE_TARGET_BRANCH : env.DRONE_BRANCH,\n job: env.DRONE_JOB_NUMBER,\n jobUrl: env.DRONE_BUILD_LINK,\n pr: env.DRONE_PULL_REQUEST,\n isPr,\n prBranch: isPr ? env.DRONE_SOURCE_BRANCH : undefined,\n slug: `${env.DRONE_REPO_OWNER}/${env.DRONE_REPO_NAME}`,\n root: env.DRONE_WORKSPACE,\n };\n },\n};\n","import { head, branch } from \"../lib/git.js\";\n\nexport default {\n configuration(options) {\n return { commit: head(options), branch: branch(options) };\n },\n};\n","import { readFileSync } from \"node:fs\";\n\n// https://docs.github.com/en/actions/learn-github-actions/environment-variables#default-environment-variables\nimport { parseBranch } from \"../lib/utils.js\";\n\nconst getPrEvent = ({ env }) => {\n try {\n const event = env.GITHUB_EVENT_PATH\n ? JSON.parse(readFileSync(env.GITHUB_EVENT_PATH, \"utf-8\"))\n : undefined;\n\n if (event && event.pull_request) {\n return {\n branch: event.pull_request.base\n ? parseBranch(event.pull_request.base.ref)\n : undefined,\n pr: event.pull_request.number,\n };\n }\n } catch {\n // Noop\n }\n\n return { pr: undefined, branch: undefined };\n};\n\nconst getPrNumber = (env) => {\n const event = env.GITHUB_EVENT_PATH\n ? JSON.parse(readFileSync(env.GITHUB_EVENT_PATH, \"utf-8\"))\n : undefined;\n\n return event && event.pull_request ? event.pull_request.number : undefined;\n};\n\nexport default {\n detect({ env }) {\n return Boolean(env.GITHUB_ACTIONS);\n },\n configuration({ env, cwd }) {\n const isPr =\n env.GITHUB_EVENT_NAME === \"pull_request\" ||\n env.GITHUB_EVENT_NAME === \"pull_request_target\";\n const branch = parseBranch(\n env.GITHUB_EVENT_NAME === \"pull_request_target\"\n ? `refs/pull/${getPrNumber(env)}/merge`\n : env.GITHUB_REF,\n );\n\n return {\n name: \"GitHub Actions\",\n service: \"github\",\n commit: env.GITHUB_SHA,\n build: env.GITHUB_RUN_ID,\n buildUrl: `${env.GITHUB_SERVER_URL}/${env.GITHUB_REPOSITORY}/actions/runs/${env.GITHUB_RUN_ID}`,\n isPr,\n branch,\n prBranch: isPr ? branch : undefined,\n slug: env.GITHUB_REPOSITORY,\n root: env.GITHUB_WORKSPACE,\n ...(isPr ? getPrEvent({ env, cwd }) : undefined),\n };\n },\n};\n","// https://docs.gitlab.com/ce/ci/variables/README.html\n\nexport default {\n detect({ env }) {\n return Boolean(env.GITLAB_CI);\n },\n configuration({ env }) {\n const pr = env.CI_MERGE_REQUEST_ID;\n const isPr = Boolean(pr);\n\n return {\n name: \"GitLab CI/CD\",\n service: \"gitlab\",\n commit: env.CI_COMMIT_SHA,\n tag: env.CI_COMMIT_TAG,\n build: env.CI_PIPELINE_ID,\n buildUrl: `${env.CI_PROJECT_URL}/pipelines/${env.CI_PIPELINE_ID}`,\n job: env.CI_JOB_ID,\n jobUrl: `${env.CI_PROJECT_URL}/-/jobs/${env.CI_JOB_ID}`,\n branch: isPr\n ? env.CI_MERGE_REQUEST_TARGET_BRANCH_NAME\n : env.CI_COMMIT_REF_NAME,\n pr,\n isPr,\n prBranch: env.CI_MERGE_REQUEST_SOURCE_BRANCH_NAME,\n slug: env.CI_PROJECT_PATH,\n root: env.CI_PROJECT_DIR,\n };\n },\n};\n","import { head } from \"../lib/git.js\";\n\n// https://wiki.jenkins.io/display/JENKINS/Building+a+software+project\n\nexport default {\n detect({ env }) {\n return Boolean(env.JENKINS_URL);\n },\n configuration({ env, cwd }) {\n const pr = env.ghprbPullId || env.gitlabMergeRequestId || env.CHANGE_ID;\n const isPr = Boolean(pr);\n const localBranch =\n env.GIT_LOCAL_BRANCH ||\n env.GIT_BRANCH ||\n env.gitlabBranch ||\n env.BRANCH_NAME;\n\n return {\n name: \"Jenkins\",\n service: \"jenkins\",\n commit: env.ghprbActualCommit || env.GIT_COMMIT || head({ env, cwd }),\n branch: isPr\n ? env.ghprbTargetBranch || env.gitlabTargetBranch\n : localBranch,\n build: env.BUILD_NUMBER,\n buildUrl: env.BUILD_URL,\n root: env.WORKSPACE,\n pr,\n isPr,\n prBranch: isPr\n ? env.ghprbSourceBranch || env.gitlabSourceBranch || localBranch\n : undefined,\n };\n },\n};\n","// https://docs.netlify.com/configure-builds/environment-variables/#netlify-configuration-variables\n\nexport default {\n detect({ env }) {\n return env.NETLIFY === \"true\";\n },\n configuration({ env }) {\n const isPr = env.PULL_REQUEST === \"true\";\n\n return {\n name: \"Netlify\",\n service: \"netlify\",\n commit: env.COMMIT_REF,\n build: env.DEPLOY_ID,\n buildUrl: `https://app.netlify.com/sites/${env.SITE_NAME}/deploys/${env.DEPLOY_ID}`,\n branch: isPr ? undefined : env.HEAD,\n pr: env.REVIEW_ID,\n isPr,\n prBranch: isPr ? env.HEAD : undefined,\n slug: env.REPOSITORY_URL.match(/[^/:]+\\/[^/]+?$/)[0],\n root: env.PWD,\n };\n },\n};\n","// https://puppet.com/docs/pipelines-for-apps/enterprise/environment-variable.html\n\nexport default {\n detect({ env }) {\n return Boolean(env.DISTELLI_APPNAME);\n },\n configuration({ env }) {\n return {\n name: \"Puppet\",\n service: \"puppet\",\n build: env.DISTELLI_BUILDNUM,\n buildUrl: env.DISTELLI_RELEASE,\n commit: env.DISTELLI_RELREVISION,\n branch: env.DISTELLI_RELBRANCH,\n root: env.DISTELLI_INSTALLHOME,\n };\n },\n};\n","// https://sail.ci/docs/environment-variables\n\nexport default {\n detect({ env }) {\n return Boolean(env.SAILCI);\n },\n configuration({ env }) {\n const pr = env.SAIL_PULL_REQUEST_NUMBER;\n const isPr = Boolean(pr);\n\n return {\n name: \"Sail CI\",\n service: \"sail\",\n commit: env.SAIL_COMMIT_SHA,\n branch: isPr ? undefined : env.SAIL_COMMIT_BRANCH,\n pr,\n isPr,\n slug: `${env.SAIL_REPO_OWNER}/${env.SAIL_REPO_NAME}`,\n root: env.SAIL_CLONE_DIR,\n };\n },\n};\n","// https://docs.screwdriver.cd/user-guide/environment-variables\n\nexport default {\n detect({ env }) {\n return Boolean(env.SCREWDRIVER);\n },\n configuration({ env }) {\n const pr = env.SD_PULL_REQUEST;\n const isPr = Boolean(pr);\n\n return {\n name: \"Screwdriver.cd\",\n service: \"screwdriver\",\n branch: isPr ? env.PR_BASE_BRANCH_NAME : env.GIT_BRANCH,\n prBranch: isPr ? env.PR_BRANCH_NAME : undefined,\n commit: env.SD_BUILD_SHA,\n build: env.SD_BUILD_ID,\n buildUrl: env.SD_UI_BUILD_URL,\n job: env.SD_JOB_ID,\n pr,\n isPr,\n slug: env.SD_PIPELINE_NAME,\n root: env.SD_ROOT_DIR,\n };\n },\n};\n","// https://scrutinizer-ci.com/docs/build/environment-variables\n\nexport default {\n detect({ env }) {\n return Boolean(env.SCRUTINIZER);\n },\n configuration({ env }) {\n const pr = env.SCRUTINIZER_PR_NUMBER;\n const isPr = Boolean(pr);\n\n return {\n name: \"Scrutinizer\",\n service: \"scrutinizer\",\n commit: env.SCRUTINIZER_SHA1,\n build: env.SCRUTINIZER_INSPECTION_UUID,\n branch: env.SCRUTINIZER_BRANCH,\n pr,\n isPr,\n prBranch: env.SCRUTINIZER_PR_SOURCE_BRANCH,\n };\n },\n};\n","import { head } from \"../lib/git.js\";\n\n// 1.0: https://semaphoreci.com/docs/available-environment-variables.html\n// 2.0: https://docs.semaphoreci.com/article/12-environment-variables\n\nexport default {\n detect({ env }) {\n return Boolean(env.SEMAPHORE);\n },\n configuration({ env, cwd }) {\n const pr = env.SEMAPHORE_GIT_PR_NUMBER || env.PULL_REQUEST_NUMBER;\n const isPr = Boolean(pr);\n\n return {\n name: \"Semaphore\",\n service: \"semaphore\",\n commit: env.SEMAPHORE_GIT_SHA || head({ env, cwd }),\n tag: env.SEMAPHORE_GIT_TAG_NAME,\n build: env.SEMAPHORE_JOB_ID || env.SEMAPHORE_BUILD_NUMBER,\n branch: env.SEMAPHORE_GIT_BRANCH || (isPr ? undefined : env.BRANCH_NAME),\n pr,\n isPr,\n prBranch:\n env.SEMAPHORE_GIT_PR_BRANCH || (isPr ? env.BRANCH_NAME : undefined),\n slug: env.SEMAPHORE_GIT_REPO_SLUG || env.SEMAPHORE_REPO_SLUG,\n root: env.SEMAPHORE_GIT_DIR || env.SEMAPHORE_PROJECT_DIR,\n };\n },\n};\n","// http://docs.shippable.com/ci/env-vars/#stdEnv\n\nexport default {\n detect({ env }) {\n return Boolean(env.SHIPPABLE);\n },\n configuration({ env }) {\n const pr = env.IS_PULL_REQUEST === \"true\" ? env.PULL_REQUEST : undefined;\n const isPr = Boolean(pr);\n\n return {\n name: \"Shippable\",\n service: \"shippable\",\n commit: env.COMMIT,\n tag: env.GIT_TAG_NAME,\n build: env.BUILD_NUMBER,\n buildUrl: env.BUILD_URL,\n branch: isPr ? env.BASE_BRANCH : env.BRANCH,\n job: env.JOB_NUMBER,\n pr,\n isPr,\n prBranch: isPr ? env.HEAD_BRANCH : undefined,\n slug: env.SHIPPABLE_REPO_SLUG,\n root: env.SHIPPABLE_BUILD_DIR,\n };\n },\n};\n","// https://confluence.jetbrains.com/display/TCD10/Predefined+Build+Parameters\n\nimport javaProperties from \"java-properties\";\n\nimport { branch } from \"../lib/git.js\";\n\nconst PROPERTIES_MAPPING = {\n root: \"teamcity.build.workingDir\",\n branch: \"teamcity.build.branch\",\n};\n\nconst safeReadProperties = (filePath) => {\n try {\n return javaProperties.of(filePath);\n } catch {\n return undefined;\n }\n};\n\nconst getProperties = ({ env, cwd }) => {\n const buildProperties = env.TEAMCITY_BUILD_PROPERTIES_FILE\n ? safeReadProperties(env.TEAMCITY_BUILD_PROPERTIES_FILE)\n : undefined;\n const configFile = buildProperties\n ? buildProperties.get(\"teamcity.configuration.properties.file\")\n : undefined;\n const configProperties = configFile\n ? safeReadProperties(configFile)\n : configFile;\n\n return Object.fromEntries(\n Object.keys(PROPERTIES_MAPPING).map((key) => [\n key,\n (buildProperties\n ? buildProperties.get(PROPERTIES_MAPPING[key])\n : undefined) ||\n (configProperties\n ? configProperties.get(PROPERTIES_MAPPING[key])\n : undefined) ||\n (key === \"branch\" ? branch({ env, cwd }) : undefined),\n ]),\n );\n};\n\nexport default {\n detect({ env }) {\n return Boolean(env.TEAMCITY_VERSION);\n },\n configuration({ env, cwd }) {\n return {\n name: \"TeamCity\",\n service: \"teamcity\",\n commit: env.BUILD_VCS_NUMBER,\n build: env.BUILD_NUMBER,\n slug: env.TEAMCITY_BUILDCONF_NAME,\n ...getProperties({ env, cwd }),\n };\n },\n};\n","// https://docs.travis-ci.com/user/environment-variables#default-environment-variables\n\nexport default {\n detect({ env }) {\n return Boolean(env.TRAVIS);\n },\n configuration({ env }) {\n const pr =\n env.TRAVIS_PULL_REQUEST === \"false\" ? undefined : env.TRAVIS_PULL_REQUEST;\n const isPr = Boolean(pr);\n\n return {\n name: \"Travis CI\",\n service: \"travis\",\n commit: env.TRAVIS_COMMIT,\n tag: env.TRAVIS_TAG,\n build: env.TRAVIS_BUILD_NUMBER,\n buildUrl: env.TRAVIS_BUILD_WEB_URL,\n branch: env.TRAVIS_BRANCH,\n job: env.TRAVIS_JOB_NUMBER,\n jobUrl: env.TRAVIS_JOB_WEB_URL,\n pr,\n isPr,\n prBranch: env.TRAVIS_PULL_REQUEST_BRANCH,\n slug: env.TRAVIS_REPO_SLUG,\n root: env.TRAVIS_BUILD_DIR,\n };\n },\n};\n","// https://go-vela.github.io/docs/reference/environment/variables/\n\nexport default {\n detect({ env }) {\n return Boolean(env.VELA);\n },\n configuration({ env }) {\n const isPr = env.VELA_BUILD_EVENT === \"pull_request\";\n\n return {\n name: \"Vela\",\n service: \"vela\",\n branch: isPr ? env.VELA_PULL_REQUEST_TARGET : env.VELA_BUILD_BRANCH,\n commit: env.VELA_BUILD_COMMIT,\n tag: env.VELA_BUILD_TAG,\n build: env.VELA_BUILD_NUMBER,\n buildUrl: env.VELA_BUILD_LINK,\n job: undefined,\n jobUrl: undefined,\n isPr,\n pr: env.VELA_BUILD_PULL_REQUEST,\n prBranch: env.VELA_PULL_REQUEST_SOURCE,\n slug: env.VELA_REPO_FULL_NAME,\n root: env.VELA_BUILD_WORKSPACE,\n };\n },\n};\n","// https://vercel.com/docs/environment-variables\n\nexport default {\n detect({ env }) {\n return Boolean(env.VERCEL) || Boolean(env.NOW_GITHUB_DEPLOYMENT);\n },\n configuration({ env }) {\n const name = \"Vercel\";\n const service = \"vercel\";\n\n if (env.VERCEL) {\n return {\n name,\n service,\n commit: env.VERCEL_GIT_COMMIT_SHA,\n branch: env.VERCEL_GIT_COMMIT_REF,\n slug: `${env.VERCEL_GIT_REPO_OWNER}/${env.VERCEL_GIT_REPO_SLUG}`,\n };\n }\n\n return {\n name,\n service,\n commit: env.NOW_GITHUB_COMMIT_SHA,\n branch: env.NOW_GITHUB_COMMIT_REF,\n slug: `${env.NOW_GITHUB_ORG}/${env.NOW_GITHUB_REPO}`,\n };\n },\n};\n","// http://devcenter.wercker.com/docs/environment-variables/available-env-vars#hs_cos_wrapper_name\n\nexport default {\n detect({ env }) {\n return Boolean(env.WERCKER_MAIN_PIPELINE_STARTED);\n },\n configuration({ env }) {\n return {\n name: \"Wercker\",\n service: \"wercker\",\n commit: env.WERCKER_GIT_COMMIT,\n build: env.WERCKER_MAIN_PIPELINE_STARTED,\n buildUrl: env.WERCKER_RUN_URL,\n branch: env.WERCKER_GIT_BRANCH,\n slug: `${env.WERCKER_GIT_OWNER}/${env.WERCKER_GIT_REPOSITORY}`,\n root: env.WERCKER_ROOT,\n };\n },\n};\n","// https://woodpecker-ci.org/docs/usage/environment#built-in-environment-variables\n\nexport default {\n detect({ env }) {\n return env.CI && env.CI === \"woodpecker\";\n },\n configuration({ env }) {\n const isPr = env.CI_PIPELINE_EVENT === \"pull_request\";\n\n return {\n name: \"Woodpecker CI\",\n service: \"woodpecker\",\n commit: env.CI_COMMIT_SHA,\n tag: env.CI_COMMIT_TAG,\n build: env.CI_PIPELINE_NUMBER,\n buildUrl: env.CI_PIPELINE_URL,\n branch: isPr ? env.CI_COMMIT_TARGET_BRANCH : env.CI_COMMIT_BRANCH,\n job: env.CI_STEP_NUMBER,\n jobUrl: env.CI_STEP_URL,\n pr: env.CI_COMMIT_PULL_REQUEST,\n isPr,\n prBranch: isPr ? env.CI_COMMIT_SOURCE_BRANCH : undefined,\n slug: `${env.CI_REPO_OWNER}/${env.CI_REPO_NAME}`,\n root: env.CI_WORKSPACE,\n };\n },\n};\n","// https://jetbrains.com/help/space/automation-environment-variables.html#automation\nimport { parseBranch } from \"../lib/utils.js\";\n\nexport default {\n detect({ env }) {\n return Boolean(env.JB_SPACE_EXECUTION_NUMBER);\n },\n configuration({ env }) {\n const projectKey = env.JB_SPACE_PROJECT_KEY;\n const repositoryName = env.JB_SPACE_GIT_REPOSITORY_NAME;\n return {\n name: \"JetBrains Space\",\n service: \"jetbrainsSpace\",\n commit: env.JB_SPACE_GIT_REVISION,\n build: env.JB_SPACE_EXECUTION_NUMBER,\n branch: parseBranch(env.JB_SPACE_GIT_BRANCH),\n slug:\n projectKey && repositoryName\n ? `${projectKey.toLowerCase()}/${repositoryName}`\n : undefined,\n };\n },\n};\n","import appveyor from \"./services/appveyor.js\";\nimport azurePipelines from \"./services/azure-pipelines.js\";\nimport bamboo from \"./services/bamboo.js\";\nimport bitbucket from \"./services/bitbucket.js\";\nimport bitrise from \"./services/bitrise.js\";\nimport buddy from \"./services/buddy.js\";\nimport buildkite from \"./services/buildkite.js\";\nimport circleci from \"./services/circleci.js\";\nimport cirrus from \"./services/cirrus.js\";\nimport cloudflarePages from \"./services/cloudflare-pages.js\";\nimport codebuild from \"./services/codebuild.js\";\nimport codefresh from \"./services/codefresh.js\";\nimport codeship from \"./services/codeship.js\";\nimport drone from \"./services/drone.js\";\nimport git from \"./services/git.js\";\nimport github from \"./services/github.js\";\nimport gitlab from \"./services/gitlab.js\";\nimport jenkins from \"./services/jenkins.js\";\nimport netlify from \"./services/netlify.js\";\nimport puppet from \"./services/puppet.js\";\nimport sail from \"./services/sail.js\";\nimport screwdriver from \"./services/screwdriver.js\";\nimport scrutinizer from \"./services/scrutinizer.js\";\nimport semaphore from \"./services/semaphore.js\";\nimport shippable from \"./services/shippable.js\";\nimport teamcity from \"./services/teamcity.js\";\nimport travis from \"./services/travis.js\";\nimport vela from \"./services/vela.js\";\nimport vercel from \"./services/vercel.js\";\nimport wercker from \"./services/wercker.js\";\nimport woodpecker from \"./services/woodpecker.js\";\nimport jetbrainsSpace from \"./services/jetbrains-space.js\";\n\nconst services = {\n appveyor,\n azurePipelines,\n bamboo,\n bitbucket,\n bitrise,\n buddy,\n buildkite,\n circleci,\n cirrus,\n cloudflarePages,\n codebuild,\n codefresh,\n codeship,\n drone,\n github,\n gitlab,\n jenkins,\n netlify,\n puppet,\n sail,\n screwdriver,\n scrutinizer,\n semaphore,\n shippable,\n teamcity,\n travis,\n vela,\n vercel,\n wercker,\n woodpecker,\n jetbrainsSpace,\n};\n\nexport default ({ env = process.env, cwd = process.cwd() } = {}) => {\n for (const name of Object.keys(services)) {\n if (services[name].detect({ env, cwd })) {\n return { isCi: true, ...services[name].configuration({ env, cwd }) };\n }\n }\n\n return { isCi: Boolean(env.CI), ...git.configuration({ env, cwd }) };\n};\n","import envCi from \"env-ci\";\n\nfunction getAttemptFromEnv(ciService?: string): string | undefined {\n switch (ciService) {\n case \"github\":\n return process.env.GITHUB_RUN_ATTEMPT;\n case \"azure-devops\":\n return process.env.SYSTEM_JOBATTEMPT;\n case \"bitbucket\":\n return process.env.BITBUCKET_STEP_RUN_NUMBER;\n default:\n return undefined;\n }\n}\n\n/**\n * Includes attempt when the provider exposes it.\n */\nexport function getCiRunKey(): string | undefined {\n if (process.env.CI_BUILD_ID) {\n return process.env.CI_BUILD_ID;\n }\n\n const ci = envCi();\n if (!ci.isCi) {\n return undefined;\n }\n\n const attempt = getAttemptFromEnv(ci.service);\n\n // build = normalized \"run/pipeline/build number\"\n // job = normalized job number (when available)\n const parts = [\n ci.service,\n \"slug\" in ci ? ci.slug : undefined,\n \"build\" in ci ? String(ci.build) : undefined,\n \"job\" in ci ? String(ci.job) : undefined,\n attempt && String(attempt),\n ].filter(Boolean);\n\n return parts.length > 0 ? parts.join(\"-\") : undefined;\n}\n","export default function ansiRegex({onlyFirst = false} = {}) {\n\t// Valid string terminator sequences are BEL, ESC\\, and 0x9c\n\tconst ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n\tconst pattern = [\n\t\t`[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?${ST})`,\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))',\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n","import ansiRegex from 'ansi-regex';\n\nconst regex = ansiRegex();\n\nexport default function stripAnsi(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\t// Even though the regex is global, we don't need to reset the `.lastIndex`\n\t// because unlike `.exec()` and `.test()`, `.replace()` does it automatically\n\t// and doing it manually has a performance penalty.\n\treturn string.replace(regex, '');\n}\n","var eaw = {};\n\nif ('undefined' == typeof module) {\n window.eastasianwidth = eaw;\n} else {\n module.exports = eaw;\n}\n\neaw.eastAsianWidth = function(character) {\n var x = character.charCodeAt(0);\n var y = (character.length == 2) ? character.charCodeAt(1) : 0;\n var codePoint = x;\n if ((0xD800 <= x && x <= 0xDBFF) && (0xDC00 <= y && y <= 0xDFFF)) {\n x &= 0x3FF;\n y &= 0x3FF;\n codePoint = (x << 10) | y;\n codePoint += 0x10000;\n }\n\n if ((0x3000 == codePoint) ||\n (0xFF01 <= codePoint && codePoint <= 0xFF60) ||\n (0xFFE0 <= codePoint && codePoint <= 0xFFE6)) {\n return 'F';\n }\n if ((0x20A9 == codePoint) ||\n (0xFF61 <= codePoint && codePoint <= 0xFFBE) ||\n (0xFFC2 <= codePoint && codePoint <= 0xFFC7) ||\n (0xFFCA <= codePoint && codePoint <= 0xFFCF) ||\n (0xFFD2 <= codePoint && codePoint <= 0xFFD7) ||\n (0xFFDA <= codePoint && codePoint <= 0xFFDC) ||\n (0xFFE8 <= codePoint && codePoint <= 0xFFEE)) {\n return 'H';\n }\n if ((0x1100 <= codePoint && codePoint <= 0x115F) ||\n (0x11A3 <= codePoint && codePoint <= 0x11A7) ||\n (0x11FA <= codePoint && codePoint <= 0x11FF) ||\n (0x2329 <= codePoint && codePoint <= 0x232A) ||\n (0x2E80 <= codePoint && codePoint <= 0x2E99) ||\n (0x2E9B <= codePoint && codePoint <= 0x2EF3) ||\n (0x2F00 <= codePoint && codePoint <= 0x2FD5) ||\n (0x2FF0 <= codePoint && codePoint <= 0x2FFB) ||\n (0x3001 <= codePoint && codePoint <= 0x303E) ||\n (0x3041 <= codePoint && codePoint <= 0x3096) ||\n (0x3099 <= codePoint && codePoint <= 0x30FF) ||\n (0x3105 <= codePoint && codePoint <= 0x312D) ||\n (0x3131 <= codePoint && codePoint <= 0x318E) ||\n (0x3190 <= codePoint && codePoint <= 0x31BA) ||\n (0x31C0 <= codePoint && codePoint <= 0x31E3) ||\n (0x31F0 <= codePoint && codePoint <= 0x321E) ||\n (0x3220 <= codePoint && codePoint <= 0x3247) ||\n (0x3250 <= codePoint && codePoint <= 0x32FE) ||\n (0x3300 <= codePoint && codePoint <= 0x4DBF) ||\n (0x4E00 <= codePoint && codePoint <= 0xA48C) ||\n (0xA490 <= codePoint && codePoint <= 0xA4C6) ||\n (0xA960 <= codePoint && codePoint <= 0xA97C) ||\n (0xAC00 <= codePoint && codePoint <= 0xD7A3) ||\n (0xD7B0 <= codePoint && codePoint <= 0xD7C6) ||\n (0xD7CB <= codePoint && codePoint <= 0xD7FB) ||\n (0xF900 <= codePoint && codePoint <= 0xFAFF) ||\n (0xFE10 <= codePoint && codePoint <= 0xFE19) ||\n (0xFE30 <= codePoint && codePoint <= 0xFE52) ||\n (0xFE54 <= codePoint && codePoint <= 0xFE66) ||\n (0xFE68 <= codePoint && codePoint <= 0xFE6B) ||\n (0x1B000 <= codePoint && codePoint <= 0x1B001) ||\n (0x1F200 <= codePoint && codePoint <= 0x1F202) ||\n (0x1F210 <= codePoint && codePoint <= 0x1F23A) ||\n (0x1F240 <= codePoint && codePoint <= 0x1F248) ||\n (0x1F250 <= codePoint && codePoint <= 0x1F251) ||\n (0x20000 <= codePoint && codePoint <= 0x2F73F) ||\n (0x2B740 <= codePoint && codePoint <= 0x2FFFD) ||\n (0x30000 <= codePoint && codePoint <= 0x3FFFD)) {\n return 'W';\n }\n if ((0x0020 <= codePoint && codePoint <= 0x007E) ||\n (0x00A2 <= codePoint && codePoint <= 0x00A3) ||\n (0x00A5 <= codePoint && codePoint <= 0x00A6) ||\n (0x00AC == codePoint) ||\n (0x00AF == codePoint) ||\n (0x27E6 <= codePoint && codePoint <= 0x27ED) ||\n (0x2985 <= codePoint && codePoint <= 0x2986)) {\n return 'Na';\n }\n if ((0x00A1 == codePoint) ||\n (0x00A4 == codePoint) ||\n (0x00A7 <= codePoint && codePoint <= 0x00A8) ||\n (0x00AA == codePoint) ||\n (0x00AD <= codePoint && codePoint <= 0x00AE) ||\n (0x00B0 <= codePoint && codePoint <= 0x00B4) ||\n (0x00B6 <= codePoint && codePoint <= 0x00BA) ||\n (0x00BC <= codePoint && codePoint <= 0x00BF) ||\n (0x00C6 == codePoint) ||\n (0x00D0 == codePoint) ||\n (0x00D7 <= codePoint && codePoint <= 0x00D8) ||\n (0x00DE <= codePoint && codePoint <= 0x00E1) ||\n (0x00E6 == codePoint) ||\n (0x00E8 <= codePoint && codePoint <= 0x00EA) ||\n (0x00EC <= codePoint && codePoint <= 0x00ED) ||\n (0x00F0 == codePoint) ||\n (0x00F2 <= codePoint && codePoint <= 0x00F3) ||\n (0x00F7 <= codePoint && codePoint <= 0x00FA) ||\n (0x00FC == codePoint) ||\n (0x00FE == codePoint) ||\n (0x0101 == codePoint) ||\n (0x0111 == codePoint) ||\n (0x0113 == codePoint) ||\n (0x011B == codePoint) ||\n (0x0126 <= codePoint && codePoint <= 0x0127) ||\n (0x012B == codePoint) ||\n (0x0131 <= codePoint && codePoint <= 0x0133) ||\n (0x0138 == codePoint) ||\n (0x013F <= codePoint && codePoint <= 0x0142) ||\n (0x0144 == codePoint) ||\n (0x0148 <= codePoint && codePoint <= 0x014B) ||\n (0x014D == codePoint) ||\n (0x0152 <= codePoint && codePoint <= 0x0153) ||\n (0x0166 <= codePoint && codePoint <= 0x0167) ||\n (0x016B == codePoint) ||\n (0x01CE == codePoint) ||\n (0x01D0 == codePoint) ||\n (0x01D2 == codePoint) ||\n (0x01D4 == codePoint) ||\n (0x01D6 == codePoint) ||\n (0x01D8 == codePoint) ||\n (0x01DA == codePoint) ||\n (0x01DC == codePoint) ||\n (0x0251 == codePoint) ||\n (0x0261 == codePoint) ||\n (0x02C4 == codePoint) ||\n (0x02C7 == codePoint) ||\n (0x02C9 <= codePoint && codePoint <= 0x02CB) ||\n (0x02CD == codePoint) ||\n (0x02D0 == codePoint) ||\n (0x02D8 <= codePoint && codePoint <= 0x02DB) ||\n (0x02DD == codePoint) ||\n (0x02DF == codePoint) ||\n (0x0300 <= codePoint && codePoint <= 0x036F) ||\n (0x0391 <= codePoint && codePoint <= 0x03A1) ||\n (0x03A3 <= codePoint && codePoint <= 0x03A9) ||\n (0x03B1 <= codePoint && codePoint <= 0x03C1) ||\n (0x03C3 <= codePoint && codePoint <= 0x03C9) ||\n (0x0401 == codePoint) ||\n (0x0410 <= codePoint && codePoint <= 0x044F) ||\n (0x0451 == codePoint) ||\n (0x2010 == codePoint) ||\n (0x2013 <= codePoint && codePoint <= 0x2016) ||\n (0x2018 <= codePoint && codePoint <= 0x2019) ||\n (0x201C <= codePoint && codePoint <= 0x201D) ||\n (0x2020 <= codePoint && codePoint <= 0x2022) ||\n (0x2024 <= codePoint && codePoint <= 0x2027) ||\n (0x2030 == codePoint) ||\n (0x2032 <= codePoint && codePoint <= 0x2033) ||\n (0x2035 == codePoint) ||\n (0x203B == codePoint) ||\n (0x203E == codePoint) ||\n (0x2074 == codePoint) ||\n (0x207F == codePoint) ||\n (0x2081 <= codePoint && codePoint <= 0x2084) ||\n (0x20AC == codePoint) ||\n (0x2103 == codePoint) ||\n (0x2105 == codePoint) ||\n (0x2109 == codePoint) ||\n (0x2113 == codePoint) ||\n (0x2116 == codePoint) ||\n (0x2121 <= codePoint && codePoint <= 0x2122) ||\n (0x2126 == codePoint) ||\n (0x212B == codePoint) ||\n (0x2153 <= codePoint && codePoint <= 0x2154) ||\n (0x215B <= codePoint && codePoint <= 0x215E) ||\n (0x2160 <= codePoint && codePoint <= 0x216B) ||\n (0x2170 <= codePoint && codePoint <= 0x2179) ||\n (0x2189 == codePoint) ||\n (0x2190 <= codePoint && codePoint <= 0x2199) ||\n (0x21B8 <= codePoint && codePoint <= 0x21B9) ||\n (0x21D2 == codePoint) ||\n (0x21D4 == codePoint) ||\n (0x21E7 == codePoint) ||\n (0x2200 == codePoint) ||\n (0x2202 <= codePoint && codePoint <= 0x2203) ||\n (0x2207 <= codePoint && codePoint <= 0x2208) ||\n (0x220B == codePoint) ||\n (0x220F == codePoint) ||\n (0x2211 == codePoint) ||\n (0x2215 == codePoint) ||\n (0x221A == codePoint) ||\n (0x221D <= codePoint && codePoint <= 0x2220) ||\n (0x2223 == codePoint) ||\n (0x2225 == codePoint) ||\n (0x2227 <= codePoint && codePoint <= 0x222C) ||\n (0x222E == codePoint) ||\n (0x2234 <= codePoint && codePoint <= 0x2237) ||\n (0x223C <= codePoint && codePoint <= 0x223D) ||\n (0x2248 == codePoint) ||\n (0x224C == codePoint) ||\n (0x2252 == codePoint) ||\n (0x2260 <= codePoint && codePoint <= 0x2261) ||\n (0x2264 <= codePoint && codePoint <= 0x2267) ||\n (0x226A <= codePoint && codePoint <= 0x226B) ||\n (0x226E <= codePoint && codePoint <= 0x226F) ||\n (0x2282 <= codePoint && codePoint <= 0x2283) ||\n (0x2286 <= codePoint && codePoint <= 0x2287) ||\n (0x2295 == codePoint) ||\n (0x2299 == codePoint) ||\n (0x22A5 == codePoint) ||\n (0x22BF == codePoint) ||\n (0x2312 == codePoint) ||\n (0x2460 <= codePoint && codePoint <= 0x24E9) ||\n (0x24EB <= codePoint && codePoint <= 0x254B) ||\n (0x2550 <= codePoint && codePoint <= 0x2573) ||\n (0x2580 <= codePoint && codePoint <= 0x258F) ||\n (0x2592 <= codePoint && codePoint <= 0x2595) ||\n (0x25A0 <= codePoint && codePoint <= 0x25A1) ||\n (0x25A3 <= codePoint && codePoint <= 0x25A9) ||\n (0x25B2 <= codePoint && codePoint <= 0x25B3) ||\n (0x25B6 <= codePoint && codePoint <= 0x25B7) ||\n (0x25BC <= codePoint && codePoint <= 0x25BD) ||\n (0x25C0 <= codePoint && codePoint <= 0x25C1) ||\n (0x25C6 <= codePoint && codePoint <= 0x25C8) ||\n (0x25CB == codePoint) ||\n (0x25CE <= codePoint && codePoint <= 0x25D1) ||\n (0x25E2 <= codePoint && codePoint <= 0x25E5) ||\n (0x25EF == codePoint) ||\n (0x2605 <= codePoint && codePoint <= 0x2606) ||\n (0x2609 == codePoint) ||\n (0x260E <= codePoint && codePoint <= 0x260F) ||\n (0x2614 <= codePoint && codePoint <= 0x2615) ||\n (0x261C == codePoint) ||\n (0x261E == codePoint) ||\n (0x2640 == codePoint) ||\n (0x2642 == codePoint) ||\n (0x2660 <= codePoint && codePoint <= 0x2661) ||\n (0x2663 <= codePoint && codePoint <= 0x2665) ||\n (0x2667 <= codePoint && codePoint <= 0x266A) ||\n (0x266C <= codePoint && codePoint <= 0x266D) ||\n (0x266F == codePoint) ||\n (0x269E <= codePoint && codePoint <= 0x269F) ||\n (0x26BE <= codePoint && codePoint <= 0x26BF) ||\n (0x26C4 <= codePoint && codePoint <= 0x26CD) ||\n (0x26CF <= codePoint && codePoint <= 0x26E1) ||\n (0x26E3 == codePoint) ||\n (0x26E8 <= codePoint && codePoint <= 0x26FF) ||\n (0x273D == codePoint) ||\n (0x2757 == codePoint) ||\n (0x2776 <= codePoint && codePoint <= 0x277F) ||\n (0x2B55 <= codePoint && codePoint <= 0x2B59) ||\n (0x3248 <= codePoint && codePoint <= 0x324F) ||\n (0xE000 <= codePoint && codePoint <= 0xF8FF) ||\n (0xFE00 <= codePoint && codePoint <= 0xFE0F) ||\n (0xFFFD == codePoint) ||\n (0x1F100 <= codePoint && codePoint <= 0x1F10A) ||\n (0x1F110 <= codePoint && codePoint <= 0x1F12D) ||\n (0x1F130 <= codePoint && codePoint <= 0x1F169) ||\n (0x1F170 <= codePoint && codePoint <= 0x1F19A) ||\n (0xE0100 <= codePoint && codePoint <= 0xE01EF) ||\n (0xF0000 <= codePoint && codePoint <= 0xFFFFD) ||\n (0x100000 <= codePoint && codePoint <= 0x10FFFD)) {\n return 'A';\n }\n\n return 'N';\n};\n\neaw.characterLength = function(character) {\n var code = this.eastAsianWidth(character);\n if (code == 'F' || code == 'W' || code == 'A') {\n return 2;\n } else {\n return 1;\n }\n};\n\n// Split a string considering surrogate-pairs.\nfunction stringToArray(string) {\n return string.match(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[^\\uD800-\\uDFFF]/g) || [];\n}\n\neaw.length = function(string) {\n var characters = stringToArray(string);\n var len = 0;\n for (var i = 0; i < characters.length; i++) {\n len = len + this.characterLength(characters[i]);\n }\n return len;\n};\n\neaw.slice = function(text, start, end) {\n textLen = eaw.length(text)\n start = start ? start : 0;\n end = end ? end : 1;\n if (start < 0) {\n start = textLen + start;\n }\n if (end < 0) {\n end = textLen + end;\n }\n var result = '';\n var eawLen = 0;\n var chars = stringToArray(text);\n for (var i = 0; i < chars.length; i++) {\n var char = chars[i];\n var charLen = eaw.length(char);\n if (eawLen >= start - (charLen == 2 ? 1 : 0)) {\n if (eawLen + charLen <= end) {\n result += char;\n } else {\n break;\n }\n }\n eawLen += charLen;\n }\n return result;\n};\n","\"use strict\";\n\nmodule.exports = function () {\n // https://mths.be/emoji\n return /\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67)\\uDB40\\uDC7F|(?:\\uD83E\\uDDD1\\uD83C\\uDFFF\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C\\uDFFB(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF]))|\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))?|(?:\\uD83C[\\uDFFC-\\uDFFF])\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF]))|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\u200D(?:(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC)?|(?:\\uD83D\\uDC69(?:\\uD83C\\uDFFB\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|(?:\\uD83C[\\uDFFC-\\uDFFF])\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69]))|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC69(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83E\\uDDD1(?:\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83D\\uDE36\\u200D\\uD83C\\uDF2B|\\uD83C\\uDFF3\\uFE0F\\u200D\\u26A7|\\uD83D\\uDC3B\\u200D\\u2744|(?:(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\uD83C\\uDFF4\\u200D\\u2620|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])\\u200D[\\u2640\\u2642]|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u2600-\\u2604\\u260E\\u2611\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26B0\\u26B1\\u26C8\\u26CF\\u26D1\\u26D3\\u26E9\\u26F0\\u26F1\\u26F4\\u26F7\\u26F8\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]|\\uD83D[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3])\\uFE0F|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDE35\\u200D\\uD83D\\uDCAB|\\uD83D\\uDE2E\\u200D\\uD83D\\uDCA8|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83D\\uDC69(?:\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF6\\uD83C\\uDDE6|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83D\\uDC08\\u200D\\u2B1B|\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79)|\\uD83D\\uDC41\\uFE0F|\\uD83C\\uDFF3\\uFE0F|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|[#\\*0-9]\\uFE0F\\u20E3|\\u2764\\uFE0F|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDFF4|(?:[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270C\\u270D]|\\uD83D[\\uDD74\\uDD90])(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC08\\uDC15\\uDC3B\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE2E\\uDE35\\uDE36\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5]|\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD]|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF]|[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD1D\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78\\uDD7A-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCB\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6]|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26A7\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5-\\uDED7\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDD77\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g;\n};\n","import stripAnsi from 'strip-ansi';\nimport eastAsianWidth from 'eastasianwidth';\nimport emojiRegex from 'emoji-regex';\n\nexport default function stringWidth(string, options = {}) {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\toptions = {\n\t\tambiguousIsNarrow: true,\n\t\t...options\n\t};\n\n\tstring = stripAnsi(string);\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = string.replace(emojiRegex(), ' ');\n\n\tconst ambiguousCharacterWidth = options.ambiguousIsNarrow ? 1 : 2;\n\tlet width = 0;\n\n\tfor (const character of string) {\n\t\tconst codePoint = character.codePointAt(0);\n\n\t\t// Ignore control characters\n\t\tif (codePoint <= 0x1F || (codePoint >= 0x7F && codePoint <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (codePoint >= 0x300 && codePoint <= 0x36F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst code = eastAsianWidth.eastAsianWidth(character);\n\t\tswitch (code) {\n\t\t\tcase 'F':\n\t\t\tcase 'W':\n\t\t\t\twidth += 2;\n\t\t\t\tbreak;\n\t\t\tcase 'A':\n\t\t\t\twidth += ambiguousCharacterWidth;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\twidth += 1;\n\t\t}\n\t}\n\n\treturn width;\n}\n","const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue: (red, green, blue) => {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue: hex => {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue: code => {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n","import stringWidth from 'string-width';\nimport stripAnsi from 'strip-ansi';\nimport ansiStyles from 'ansi-styles';\n\nconst ESCAPES = new Set([\n\t'\\u001B',\n\t'\\u009B',\n]);\n\nconst END_CODE = 39;\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\n\nconst wrapAnsiCode = code => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = uri => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${uri}${ANSI_ESCAPE_BELL}`;\n\n// Calculate the length of words split on ' ', ignoring\n// the extra characters added by ansi escape codes\nconst wordLengths = string => string.split(' ').map(character => stringWidth(character));\n\n// Wrap a long word across multiple rows\n// Ansi escape codes do not count towards length\nconst wrapWord = (rows, word, columns) => {\n\tconst characters = [...word];\n\n\tlet isInsideEscape = false;\n\tlet isInsideLinkEscape = false;\n\tlet visible = stringWidth(stripAnsi(rows[rows.length - 1]));\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tconst characterLength = stringWidth(character);\n\n\t\tif (visible + characterLength <= columns) {\n\t\t\trows[rows.length - 1] += character;\n\t\t} else {\n\t\t\trows.push(character);\n\t\t\tvisible = 0;\n\t\t}\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tisInsideEscape = true;\n\t\t\tisInsideLinkEscape = characters.slice(index + 1).join('').startsWith(ANSI_ESCAPE_LINK);\n\t\t}\n\n\t\tif (isInsideEscape) {\n\t\t\tif (isInsideLinkEscape) {\n\t\t\t\tif (character === ANSI_ESCAPE_BELL) {\n\t\t\t\t\tisInsideEscape = false;\n\t\t\t\t\tisInsideLinkEscape = false;\n\t\t\t\t}\n\t\t\t} else if (character === ANSI_SGR_TERMINATOR) {\n\t\t\t\tisInsideEscape = false;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvisible += characterLength;\n\n\t\tif (visible === columns && index < characters.length - 1) {\n\t\t\trows.push('');\n\t\t\tvisible = 0;\n\t\t}\n\t}\n\n\t// It's possible that the last row we copy over is only\n\t// ansi escape characters, handle this edge-case\n\tif (!visible && rows[rows.length - 1].length > 0 && rows.length > 1) {\n\t\trows[rows.length - 2] += rows.pop();\n\t}\n};\n\n// Trims spaces from a string ignoring invisible sequences\nconst stringVisibleTrimSpacesRight = string => {\n\tconst words = string.split(' ');\n\tlet last = words.length;\n\n\twhile (last > 0) {\n\t\tif (stringWidth(words[last - 1]) > 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tlast--;\n\t}\n\n\tif (last === words.length) {\n\t\treturn string;\n\t}\n\n\treturn words.slice(0, last).join(' ') + words.slice(last).join('');\n};\n\n// The wrap-ansi module can be invoked in either 'hard' or 'soft' wrap mode\n//\n// 'hard' will never allow a string to take up more than columns characters\n//\n// 'soft' allows long words to expand past the column length\nconst exec = (string, columns, options = {}) => {\n\tif (options.trim !== false && string.trim() === '') {\n\t\treturn '';\n\t}\n\n\tlet returnValue = '';\n\tlet escapeCode;\n\tlet escapeUrl;\n\n\tconst lengths = wordLengths(string);\n\tlet rows = [''];\n\n\tfor (const [index, word] of string.split(' ').entries()) {\n\t\tif (options.trim !== false) {\n\t\t\trows[rows.length - 1] = rows[rows.length - 1].trimStart();\n\t\t}\n\n\t\tlet rowLength = stringWidth(rows[rows.length - 1]);\n\n\t\tif (index !== 0) {\n\t\t\tif (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {\n\t\t\t\t// If we start with a new word but the current row length equals the length of the columns, add a new row\n\t\t\t\trows.push('');\n\t\t\t\trowLength = 0;\n\t\t\t}\n\n\t\t\tif (rowLength > 0 || options.trim === false) {\n\t\t\t\trows[rows.length - 1] += ' ';\n\t\t\t\trowLength++;\n\t\t\t}\n\t\t}\n\n\t\t// In 'hard' wrap mode, the length of a line is never allowed to extend past 'columns'\n\t\tif (options.hard && lengths[index] > columns) {\n\t\t\tconst remainingColumns = (columns - rowLength);\n\t\t\tconst breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);\n\t\t\tconst breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns);\n\t\t\tif (breaksStartingNextLine < breaksStartingThisLine) {\n\t\t\t\trows.push('');\n\t\t\t}\n\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {\n\t\t\tif (options.wordWrap === false && rowLength < columns) {\n\t\t\t\twrapWord(rows, word, columns);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\trows.push('');\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && options.wordWrap === false) {\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\trows[rows.length - 1] += word;\n\t}\n\n\tif (options.trim !== false) {\n\t\trows = rows.map(row => stringVisibleTrimSpacesRight(row));\n\t}\n\n\tconst pre = [...rows.join('\\n')];\n\n\tfor (const [index, character] of pre.entries()) {\n\t\treturnValue += character;\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tconst {groups} = new RegExp(`(?:\\\\${ANSI_CSI}(?<code>\\\\d+)m|\\\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`).exec(pre.slice(index).join('')) || {groups: {}};\n\t\t\tif (groups.code !== undefined) {\n\t\t\t\tconst code = Number.parseFloat(groups.code);\n\t\t\t\tescapeCode = code === END_CODE ? undefined : code;\n\t\t\t} else if (groups.uri !== undefined) {\n\t\t\t\tescapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n\t\t\t}\n\t\t}\n\n\t\tconst code = ansiStyles.codes.get(Number(escapeCode));\n\n\t\tif (pre[index + 1] === '\\n') {\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink('');\n\t\t\t}\n\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(code);\n\t\t\t}\n\t\t} else if (character === '\\n') {\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(escapeCode);\n\t\t\t}\n\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink(escapeUrl);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn returnValue;\n};\n\n// For each newline, invoke the method separately\nexport default function wrapAnsi(string, columns, options) {\n\treturn String(string)\n\t\t.normalize()\n\t\t.replace(/\\r\\n/g, '\\n')\n\t\t.split('\\n')\n\t\t.map(line => exec(line, columns, options))\n\t\t.join('\\n');\n}\n","const actions = ['up', 'down', 'left', 'right', 'space', 'enter', 'cancel'] as const;\nexport type Action = (typeof actions)[number];\n\n/** Global settings for Clack programs, stored in memory */\ninterface InternalClackSettings {\n\tactions: Set<Action>;\n\taliases: Map<string, Action>;\n}\n\nexport const settings: InternalClackSettings = {\n\tactions: new Set(actions),\n\taliases: new Map<string, Action>([\n\t\t// vim support\n\t\t['k', 'up'],\n\t\t['j', 'down'],\n\t\t['h', 'left'],\n\t\t['l', 'right'],\n\t\t['\\x03', 'cancel'],\n\t\t// opinionated defaults!\n\t\t['escape', 'cancel'],\n\t]),\n};\n\nexport interface ClackSettings {\n\t/**\n\t * Set custom global aliases for the default actions.\n\t * This will not overwrite existing aliases, it will only add new ones!\n\t *\n\t * @param aliases - An object that maps aliases to actions\n\t * @default { k: 'up', j: 'down', h: 'left', l: 'right', '\\x03': 'cancel', 'escape': 'cancel' }\n\t */\n\taliases: Record<string, Action>;\n}\n\nexport function updateSettings(updates: ClackSettings) {\n\tfor (const _key in updates) {\n\t\tconst key = _key as keyof ClackSettings;\n\t\tif (!Object.hasOwn(updates, key)) continue;\n\t\tconst value = updates[key];\n\n\t\tswitch (key) {\n\t\t\tcase 'aliases': {\n\t\t\t\tfor (const alias in value) {\n\t\t\t\t\tif (!Object.hasOwn(value, alias)) continue;\n\t\t\t\t\tif (!settings.aliases.has(alias)) {\n\t\t\t\t\t\tsettings.aliases.set(alias, value[alias]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Check if a key is an alias for a default action\n * @param key - The raw key which might match to an action\n * @param action - The action to match\n * @returns boolean\n */\nexport function isActionKey(key: string | Array<string | undefined>, action: Action) {\n\tif (typeof key === 'string') {\n\t\treturn settings.aliases.get(key) === action;\n\t}\n\n\tfor (const value of key) {\n\t\tif (value === undefined) continue;\n\t\tif (isActionKey(value, action)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","export function diffLines(a: string, b: string) {\n\tif (a === b) return;\n\n\tconst aLines = a.split('\\n');\n\tconst bLines = b.split('\\n');\n\tconst diff: number[] = [];\n\n\tfor (let i = 0; i < Math.max(aLines.length, bLines.length); i++) {\n\t\tif (aLines[i] !== bLines[i]) diff.push(i);\n\t}\n\n\treturn diff;\n}\n","import { stdin, stdout } from 'node:process';\nimport type { Key } from 'node:readline';\nimport * as readline from 'node:readline';\nimport type { Readable } from 'node:stream';\nimport { cursor } from 'sisteransi';\nimport { isActionKey } from './settings';\n\nexport * from './string';\nexport * from './settings';\n\nconst isWindows = globalThis.process.platform.startsWith('win');\n\nexport const CANCEL_SYMBOL = Symbol('clack:cancel');\n\nexport function isCancel(value: unknown): value is symbol {\n\treturn value === CANCEL_SYMBOL;\n}\n\nexport function setRawMode(input: Readable, value: boolean) {\n\tconst i = input as typeof stdin;\n\n\tif (i.isTTY) i.setRawMode(value);\n}\n\nexport function block({\n\tinput = stdin,\n\toutput = stdout,\n\toverwrite = true,\n\thideCursor = true,\n} = {}) {\n\tconst rl = readline.createInterface({\n\t\tinput,\n\t\toutput,\n\t\tprompt: '',\n\t\ttabSize: 1,\n\t});\n\treadline.emitKeypressEvents(input, rl);\n\tif (input.isTTY) input.setRawMode(true);\n\n\tconst clear = (data: Buffer, { name, sequence }: Key) => {\n\t\tconst str = String(data);\n\t\tif (isActionKey([str, name, sequence], 'cancel')) {\n\t\t\tif (hideCursor) output.write(cursor.show);\n\t\t\tprocess.exit(0);\n\t\t\treturn;\n\t\t}\n\t\tif (!overwrite) return;\n\t\tconst dx = name === 'return' ? 0 : -1;\n\t\tconst dy = name === 'return' ? -1 : 0;\n\n\t\treadline.moveCursor(output, dx, dy, () => {\n\t\t\treadline.clearLine(output, 1, () => {\n\t\t\t\tinput.once('keypress', clear);\n\t\t\t});\n\t\t});\n\t};\n\tif (hideCursor) output.write(cursor.hide);\n\tinput.once('keypress', clear);\n\n\treturn () => {\n\t\tinput.off('keypress', clear);\n\t\tif (hideCursor) output.write(cursor.show);\n\n\t\t// Prevent Windows specific issues: https://github.com/bombshell-dev/clack/issues/176\n\t\tif (input.isTTY && !isWindows) input.setRawMode(false);\n\n\t\t// @ts-expect-error fix for https://github.com/nodejs/node/issues/31762#issuecomment-1441223907\n\t\trl.terminal = false;\n\t\trl.close();\n\t};\n}\n","import { stdin, stdout } from 'node:process';\nimport readline, { type Key, type ReadLine } from 'node:readline';\nimport type { Readable } from 'node:stream';\nimport { Writable } from 'node:stream';\nimport { cursor, erase } from 'sisteransi';\nimport wrap from 'wrap-ansi';\n\nimport { CANCEL_SYMBOL, diffLines, isActionKey, setRawMode, settings } from '../utils';\n\nimport type { ClackEvents, ClackState } from '../types';\nimport type { Action } from '../utils';\n\nexport interface PromptOptions<Self extends Prompt> {\n\trender(this: Omit<Self, 'prompt'>): string | undefined;\n\tplaceholder?: string;\n\tinitialValue?: any;\n\tvalidate?: ((value: any) => string | Error | undefined) | undefined;\n\tinput?: Readable;\n\toutput?: Writable;\n\tdebug?: boolean;\n\tsignal?: AbortSignal;\n}\n\nexport default class Prompt {\n\tprotected input: Readable;\n\tprotected output: Writable;\n\tprivate _abortSignal?: AbortSignal;\n\n\tprivate rl: ReadLine | undefined;\n\tprivate opts: Omit<PromptOptions<Prompt>, 'render' | 'input' | 'output'>;\n\tprivate _render: (context: Omit<Prompt, 'prompt'>) => string | undefined;\n\tprivate _track = false;\n\tprivate _prevFrame = '';\n\tprivate _subscribers = new Map<string, { cb: (...args: any) => any; once?: boolean }[]>();\n\tprotected _cursor = 0;\n\n\tpublic state: ClackState = 'initial';\n\tpublic error = '';\n\tpublic value: any;\n\n\tconstructor(options: PromptOptions<Prompt>, trackValue = true) {\n\t\tconst { input = stdin, output = stdout, render, signal, ...opts } = options;\n\n\t\tthis.opts = opts;\n\t\tthis.onKeypress = this.onKeypress.bind(this);\n\t\tthis.close = this.close.bind(this);\n\t\tthis.render = this.render.bind(this);\n\t\tthis._render = render.bind(this);\n\t\tthis._track = trackValue;\n\t\tthis._abortSignal = signal;\n\n\t\tthis.input = input;\n\t\tthis.output = output;\n\t}\n\n\t/**\n\t * Unsubscribe all listeners\n\t */\n\tprotected unsubscribe() {\n\t\tthis._subscribers.clear();\n\t}\n\n\t/**\n\t * Set a subscriber with opts\n\t * @param event - The event name\n\t */\n\tprivate setSubscriber<T extends keyof ClackEvents>(\n\t\tevent: T,\n\t\topts: { cb: ClackEvents[T]; once?: boolean }\n\t) {\n\t\tconst params = this._subscribers.get(event) ?? [];\n\t\tparams.push(opts);\n\t\tthis._subscribers.set(event, params);\n\t}\n\n\t/**\n\t * Subscribe to an event\n\t * @param event - The event name\n\t * @param cb - The callback\n\t */\n\tpublic on<T extends keyof ClackEvents>(event: T, cb: ClackEvents[T]) {\n\t\tthis.setSubscriber(event, { cb });\n\t}\n\n\t/**\n\t * Subscribe to an event once\n\t * @param event - The event name\n\t * @param cb - The callback\n\t */\n\tpublic once<T extends keyof ClackEvents>(event: T, cb: ClackEvents[T]) {\n\t\tthis.setSubscriber(event, { cb, once: true });\n\t}\n\n\t/**\n\t * Emit an event with data\n\t * @param event - The event name\n\t * @param data - The data to pass to the callback\n\t */\n\tpublic emit<T extends keyof ClackEvents>(event: T, ...data: Parameters<ClackEvents[T]>) {\n\t\tconst cbs = this._subscribers.get(event) ?? [];\n\t\tconst cleanup: (() => void)[] = [];\n\n\t\tfor (const subscriber of cbs) {\n\t\t\tsubscriber.cb(...data);\n\n\t\t\tif (subscriber.once) {\n\t\t\t\tcleanup.push(() => cbs.splice(cbs.indexOf(subscriber), 1));\n\t\t\t}\n\t\t}\n\n\t\tfor (const cb of cleanup) {\n\t\t\tcb();\n\t\t}\n\t}\n\n\tpublic prompt() {\n\t\treturn new Promise<string | symbol>((resolve, reject) => {\n\t\t\tif (this._abortSignal) {\n\t\t\t\tif (this._abortSignal.aborted) {\n\t\t\t\t\tthis.state = 'cancel';\n\n\t\t\t\t\tthis.close();\n\t\t\t\t\treturn resolve(CANCEL_SYMBOL);\n\t\t\t\t}\n\n\t\t\t\tthis._abortSignal.addEventListener(\n\t\t\t\t\t'abort',\n\t\t\t\t\t() => {\n\t\t\t\t\t\tthis.state = 'cancel';\n\t\t\t\t\t\tthis.close();\n\t\t\t\t\t},\n\t\t\t\t\t{ once: true }\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst sink = new Writable();\n\t\t\tsink._write = (chunk, encoding, done) => {\n\t\t\t\tif (this._track) {\n\t\t\t\t\tthis.value = this.rl?.line.replace(/\\t/g, '');\n\t\t\t\t\tthis._cursor = this.rl?.cursor ?? 0;\n\t\t\t\t\tthis.emit('value', this.value);\n\t\t\t\t}\n\t\t\t\tdone();\n\t\t\t};\n\t\t\tthis.input.pipe(sink);\n\n\t\t\tthis.rl = readline.createInterface({\n\t\t\t\tinput: this.input,\n\t\t\t\toutput: sink,\n\t\t\t\ttabSize: 2,\n\t\t\t\tprompt: '',\n\t\t\t\tescapeCodeTimeout: 50,\n\t\t\t\tterminal: true,\n\t\t\t});\n\t\t\treadline.emitKeypressEvents(this.input, this.rl);\n\t\t\tthis.rl.prompt();\n\t\t\tif (this.opts.initialValue !== undefined && this._track) {\n\t\t\t\tthis.rl.write(this.opts.initialValue);\n\t\t\t}\n\n\t\t\tthis.input.on('keypress', this.onKeypress);\n\t\t\tsetRawMode(this.input, true);\n\t\t\tthis.output.on('resize', this.render);\n\n\t\t\tthis.render();\n\n\t\t\tthis.once('submit', () => {\n\t\t\t\tthis.output.write(cursor.show);\n\t\t\t\tthis.output.off('resize', this.render);\n\t\t\t\tsetRawMode(this.input, false);\n\t\t\t\tresolve(this.value);\n\t\t\t});\n\t\t\tthis.once('cancel', () => {\n\t\t\t\tthis.output.write(cursor.show);\n\t\t\t\tthis.output.off('resize', this.render);\n\t\t\t\tsetRawMode(this.input, false);\n\t\t\t\tresolve(CANCEL_SYMBOL);\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate onKeypress(char: string, key?: Key) {\n\t\tif (this.state === 'error') {\n\t\t\tthis.state = 'active';\n\t\t}\n\t\tif (key?.name) {\n\t\t\tif (!this._track && settings.aliases.has(key.name)) {\n\t\t\t\tthis.emit('cursor', settings.aliases.get(key.name));\n\t\t\t}\n\t\t\tif (settings.actions.has(key.name as Action)) {\n\t\t\t\tthis.emit('cursor', key.name as Action);\n\t\t\t}\n\t\t}\n\t\tif (char && (char.toLowerCase() === 'y' || char.toLowerCase() === 'n')) {\n\t\t\tthis.emit('confirm', char.toLowerCase() === 'y');\n\t\t}\n\t\tif (char === '\\t' && this.opts.placeholder) {\n\t\t\tif (!this.value) {\n\t\t\t\tthis.rl?.write(this.opts.placeholder);\n\t\t\t\tthis.emit('value', this.opts.placeholder);\n\t\t\t}\n\t\t}\n\t\tif (char) {\n\t\t\tthis.emit('key', char.toLowerCase());\n\t\t}\n\n\t\tif (key?.name === 'return') {\n\t\t\tif (this.opts.validate) {\n\t\t\t\tconst problem = this.opts.validate(this.value);\n\t\t\t\tif (problem) {\n\t\t\t\t\tthis.error = problem instanceof Error ? problem.message : problem;\n\t\t\t\t\tthis.state = 'error';\n\t\t\t\t\tthis.rl?.write(this.value);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.state !== 'error') {\n\t\t\t\tthis.state = 'submit';\n\t\t\t}\n\t\t}\n\n\t\tif (isActionKey([char, key?.name, key?.sequence], 'cancel')) {\n\t\t\tthis.state = 'cancel';\n\t\t}\n\t\tif (this.state === 'submit' || this.state === 'cancel') {\n\t\t\tthis.emit('finalize');\n\t\t}\n\t\tthis.render();\n\t\tif (this.state === 'submit' || this.state === 'cancel') {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tprotected close() {\n\t\tthis.input.unpipe();\n\t\tthis.input.removeListener('keypress', this.onKeypress);\n\t\tthis.output.write('\\n');\n\t\tsetRawMode(this.input, false);\n\t\tthis.rl?.close();\n\t\tthis.rl = undefined;\n\t\tthis.emit(`${this.state}`, this.value);\n\t\tthis.unsubscribe();\n\t}\n\n\tprivate restoreCursor() {\n\t\tconst lines =\n\t\t\twrap(this._prevFrame, process.stdout.columns, { hard: true }).split('\\n').length - 1;\n\t\tthis.output.write(cursor.move(-999, lines * -1));\n\t}\n\n\tprivate render() {\n\t\tconst frame = wrap(this._render(this) ?? '', process.stdout.columns, { hard: true });\n\t\tif (frame === this._prevFrame) return;\n\n\t\tif (this.state === 'initial') {\n\t\t\tthis.output.write(cursor.hide);\n\t\t} else {\n\t\t\tconst diff = diffLines(this._prevFrame, frame);\n\t\t\tthis.restoreCursor();\n\t\t\t// If a single line has changed, only update that line\n\t\t\tif (diff && diff?.length === 1) {\n\t\t\t\tconst diffLine = diff[0];\n\t\t\t\tthis.output.write(cursor.move(0, diffLine));\n\t\t\t\tthis.output.write(erase.lines(1));\n\t\t\t\tconst lines = frame.split('\\n');\n\t\t\t\tthis.output.write(lines[diffLine]);\n\t\t\t\tthis._prevFrame = frame;\n\t\t\t\tthis.output.write(cursor.move(0, lines.length - diffLine - 1));\n\t\t\t\treturn;\n\t\t\t\t// If many lines have changed, rerender everything past the first line\n\t\t\t}\n\t\t\tif (diff && diff?.length > 1) {\n\t\t\t\tconst diffLine = diff[0];\n\t\t\t\tthis.output.write(cursor.move(0, diffLine));\n\t\t\t\tthis.output.write(erase.down());\n\t\t\t\tconst lines = frame.split('\\n');\n\t\t\t\tconst newLines = lines.slice(diffLine);\n\t\t\t\tthis.output.write(newLines.join('\\n'));\n\t\t\t\tthis._prevFrame = frame;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.output.write(erase.down());\n\t\t}\n\n\t\tthis.output.write(frame);\n\t\tif (this.state === 'initial') {\n\t\t\tthis.state = 'active';\n\t\t}\n\t\tthis._prevFrame = frame;\n\t}\n}\n","import { cursor } from 'sisteransi';\nimport Prompt, { type PromptOptions } from './prompt';\n\ninterface ConfirmOptions extends PromptOptions<ConfirmPrompt> {\n\tactive: string;\n\tinactive: string;\n\tinitialValue?: boolean;\n}\nexport default class ConfirmPrompt extends Prompt {\n\tget cursor() {\n\t\treturn this.value ? 0 : 1;\n\t}\n\n\tprivate get _value() {\n\t\treturn this.cursor === 0;\n\t}\n\n\tconstructor(opts: ConfirmOptions) {\n\t\tsuper(opts, false);\n\t\tthis.value = !!opts.initialValue;\n\n\t\tthis.on('value', () => {\n\t\t\tthis.value = this._value;\n\t\t});\n\n\t\tthis.on('confirm', (confirm) => {\n\t\t\tthis.output.write(cursor.move(0, -1));\n\t\t\tthis.value = confirm;\n\t\t\tthis.state = 'submit';\n\t\t\tthis.close();\n\t\t});\n\n\t\tthis.on('cursor', () => {\n\t\t\tthis.value = !this.value;\n\t\t});\n\t}\n}\n","import Prompt, { type PromptOptions } from './prompt';\n\ninterface GroupMultiSelectOptions<T extends { value: any }>\n\textends PromptOptions<GroupMultiSelectPrompt<T>> {\n\toptions: Record<string, T[]>;\n\tinitialValues?: T['value'][];\n\trequired?: boolean;\n\tcursorAt?: T['value'];\n\tselectableGroups?: boolean;\n}\nexport default class GroupMultiSelectPrompt<T extends { value: any }> extends Prompt {\n\toptions: (T & { group: string | boolean })[];\n\tcursor = 0;\n\t#selectableGroups: boolean;\n\n\tgetGroupItems(group: string): T[] {\n\t\treturn this.options.filter((o) => o.group === group);\n\t}\n\n\tisGroupSelected(group: string) {\n\t\tconst items = this.getGroupItems(group);\n\t\treturn items.every((i) => this.value.includes(i.value));\n\t}\n\n\tprivate toggleValue() {\n\t\tconst item = this.options[this.cursor];\n\t\tif (item.group === true) {\n\t\t\tconst group = item.value;\n\t\t\tconst groupedItems = this.getGroupItems(group);\n\t\t\tif (this.isGroupSelected(group)) {\n\t\t\t\tthis.value = this.value.filter(\n\t\t\t\t\t(v: string) => groupedItems.findIndex((i) => i.value === v) === -1\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tthis.value = [...this.value, ...groupedItems.map((i) => i.value)];\n\t\t\t}\n\t\t\tthis.value = Array.from(new Set(this.value));\n\t\t} else {\n\t\t\tconst selected = this.value.includes(item.value);\n\t\t\tthis.value = selected\n\t\t\t\t? this.value.filter((v: T['value']) => v !== item.value)\n\t\t\t\t: [...this.value, item.value];\n\t\t}\n\t}\n\n\tconstructor(opts: GroupMultiSelectOptions<T>) {\n\t\tsuper(opts, false);\n\t\tconst { options } = opts;\n\t\tthis.#selectableGroups = opts.selectableGroups !== false;\n\t\tthis.options = Object.entries(options).flatMap(([key, option]) => [\n\t\t\t{ value: key, group: true, label: key },\n\t\t\t...option.map((opt) => ({ ...opt, group: key })),\n\t\t]) as any;\n\t\tthis.value = [...(opts.initialValues ?? [])];\n\t\tthis.cursor = Math.max(\n\t\t\tthis.options.findIndex(({ value }) => value === opts.cursorAt),\n\t\t\tthis.#selectableGroups ? 0 : 1\n\t\t);\n\n\t\tthis.on('cursor', (key) => {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'left':\n\t\t\t\tcase 'up': {\n\t\t\t\t\tthis.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n\t\t\t\t\tconst currentIsGroup = this.options[this.cursor]?.group === true;\n\t\t\t\t\tif (!this.#selectableGroups && currentIsGroup) {\n\t\t\t\t\t\tthis.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'down':\n\t\t\t\tcase 'right': {\n\t\t\t\t\tthis.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n\t\t\t\t\tconst currentIsGroup = this.options[this.cursor]?.group === true;\n\t\t\t\t\tif (!this.#selectableGroups && currentIsGroup) {\n\t\t\t\t\t\tthis.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'space':\n\t\t\t\t\tthis.toggleValue();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t}\n}\n","import Prompt, { type PromptOptions } from './prompt';\n\ninterface MultiSelectOptions<T extends { value: any }> extends PromptOptions<MultiSelectPrompt<T>> {\n\toptions: T[];\n\tinitialValues?: T['value'][];\n\trequired?: boolean;\n\tcursorAt?: T['value'];\n}\nexport default class MultiSelectPrompt<T extends { value: any }> extends Prompt {\n\toptions: T[];\n\tcursor = 0;\n\n\tprivate get _value() {\n\t\treturn this.options[this.cursor].value;\n\t}\n\n\tprivate toggleAll() {\n\t\tconst allSelected = this.value.length === this.options.length;\n\t\tthis.value = allSelected ? [] : this.options.map((v) => v.value);\n\t}\n\n\tprivate toggleValue() {\n\t\tconst selected = this.value.includes(this._value);\n\t\tthis.value = selected\n\t\t\t? this.value.filter((value: T['value']) => value !== this._value)\n\t\t\t: [...this.value, this._value];\n\t}\n\n\tconstructor(opts: MultiSelectOptions<T>) {\n\t\tsuper(opts, false);\n\n\t\tthis.options = opts.options;\n\t\tthis.value = [...(opts.initialValues ?? [])];\n\t\tthis.cursor = Math.max(\n\t\t\tthis.options.findIndex(({ value }) => value === opts.cursorAt),\n\t\t\t0\n\t\t);\n\t\tthis.on('key', (char) => {\n\t\t\tif (char === 'a') {\n\t\t\t\tthis.toggleAll();\n\t\t\t}\n\t\t});\n\n\t\tthis.on('cursor', (key) => {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'left':\n\t\t\t\tcase 'up':\n\t\t\t\t\tthis.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'down':\n\t\t\t\tcase 'right':\n\t\t\t\t\tthis.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'space':\n\t\t\t\t\tthis.toggleValue();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t}\n}\n","import color from 'picocolors';\nimport Prompt, { type PromptOptions } from './prompt';\n\ninterface PasswordOptions extends PromptOptions<PasswordPrompt> {\n\tmask?: string;\n}\nexport default class PasswordPrompt extends Prompt {\n\tvalueWithCursor = '';\n\tprivate _mask = '•';\n\tget cursor() {\n\t\treturn this._cursor;\n\t}\n\tget masked() {\n\t\treturn this.value.replaceAll(/./g, this._mask);\n\t}\n\tconstructor({ mask, ...opts }: PasswordOptions) {\n\t\tsuper(opts);\n\t\tthis._mask = mask ?? '•';\n\n\t\tthis.on('finalize', () => {\n\t\t\tthis.valueWithCursor = this.masked;\n\t\t});\n\t\tthis.on('value', () => {\n\t\t\tif (this.cursor >= this.value.length) {\n\t\t\t\tthis.valueWithCursor = `${this.masked}${color.inverse(color.hidden('_'))}`;\n\t\t\t} else {\n\t\t\t\tconst s1 = this.masked.slice(0, this.cursor);\n\t\t\t\tconst s2 = this.masked.slice(this.cursor);\n\t\t\t\tthis.valueWithCursor = `${s1}${color.inverse(s2[0])}${s2.slice(1)}`;\n\t\t\t}\n\t\t});\n\t}\n}\n","import Prompt, { type PromptOptions } from './prompt';\n\ninterface SelectOptions<T extends { value: any }> extends PromptOptions<SelectPrompt<T>> {\n\toptions: T[];\n\tinitialValue?: T['value'];\n}\nexport default class SelectPrompt<T extends { value: any }> extends Prompt {\n\toptions: T[];\n\tcursor = 0;\n\n\tprivate get _value() {\n\t\treturn this.options[this.cursor];\n\t}\n\n\tprivate changeValue() {\n\t\tthis.value = this._value.value;\n\t}\n\n\tconstructor(opts: SelectOptions<T>) {\n\t\tsuper(opts, false);\n\n\t\tthis.options = opts.options;\n\t\tthis.cursor = this.options.findIndex(({ value }) => value === opts.initialValue);\n\t\tif (this.cursor === -1) this.cursor = 0;\n\t\tthis.changeValue();\n\n\t\tthis.on('cursor', (key) => {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'left':\n\t\t\t\tcase 'up':\n\t\t\t\t\tthis.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'down':\n\t\t\t\tcase 'right':\n\t\t\t\t\tthis.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis.changeValue();\n\t\t});\n\t}\n}\n","import Prompt, { type PromptOptions } from './prompt';\n\ninterface SelectKeyOptions<T extends { value: any }> extends PromptOptions<SelectKeyPrompt<T>> {\n\toptions: T[];\n}\nexport default class SelectKeyPrompt<T extends { value: any }> extends Prompt {\n\toptions: T[];\n\tcursor = 0;\n\n\tconstructor(opts: SelectKeyOptions<T>) {\n\t\tsuper(opts, false);\n\n\t\tthis.options = opts.options;\n\t\tconst keys = this.options.map(({ value: [initial] }) => initial?.toLowerCase());\n\t\tthis.cursor = Math.max(keys.indexOf(opts.initialValue), 0);\n\n\t\tthis.on('key', (key) => {\n\t\t\tif (!keys.includes(key)) return;\n\t\t\tconst value = this.options.find(({ value: [initial] }) => initial?.toLowerCase() === key);\n\t\t\tif (value) {\n\t\t\t\tthis.value = value.value;\n\t\t\t\tthis.state = 'submit';\n\t\t\t\tthis.emit('submit');\n\t\t\t}\n\t\t});\n\t}\n}\n","import color from 'picocolors';\nimport Prompt, { type PromptOptions } from './prompt';\n\nexport interface TextOptions extends PromptOptions<TextPrompt> {\n\tplaceholder?: string;\n\tdefaultValue?: string;\n}\n\nexport default class TextPrompt extends Prompt {\n\tget valueWithCursor() {\n\t\tif (this.state === 'submit') {\n\t\t\treturn this.value;\n\t\t}\n\t\tif (this.cursor >= this.value.length) {\n\t\t\treturn `${this.value}█`;\n\t\t}\n\t\tconst s1 = this.value.slice(0, this.cursor);\n\t\tconst [s2, ...s3] = this.value.slice(this.cursor);\n\t\treturn `${s1}${color.inverse(s2)}${s3.join('')}`;\n\t}\n\tget cursor() {\n\t\treturn this._cursor;\n\t}\n\tconstructor(opts: TextOptions) {\n\t\tsuper(opts);\n\n\t\tthis.on('finalize', () => {\n\t\t\tif (!this.value) {\n\t\t\t\tthis.value = opts.defaultValue;\n\t\t\t}\n\t\t});\n\t}\n}\n","import process from 'node:process';\n\nexport default function isUnicodeSupported() {\n\tif (process.platform !== 'win32') {\n\t\treturn process.env.TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(process.env.CI)\n\t\t|| Boolean(process.env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(process.env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| process.env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| process.env.TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| process.env.TERM_PROGRAM === 'vscode'\n\t\t|| process.env.TERM === 'xterm-256color'\n\t\t|| process.env.TERM === 'alacritty'\n\t\t|| process.env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n","import { stripVTControlCharacters as strip } from 'node:util';\nimport {\n\tConfirmPrompt,\n\tGroupMultiSelectPrompt,\n\tMultiSelectPrompt,\n\tPasswordPrompt,\n\tSelectKeyPrompt,\n\tSelectPrompt,\n\ttype State,\n\tTextPrompt,\n\tblock,\n\tisCancel,\n} from '@clack/core';\nimport isUnicodeSupported from 'is-unicode-supported';\nimport color from 'picocolors';\nimport { cursor, erase } from 'sisteransi';\n\nexport { isCancel } from '@clack/core';\nexport { updateSettings, type ClackSettings } from '@clack/core';\n\nconst unicode = isUnicodeSupported();\nconst s = (c: string, fallback: string) => (unicode ? c : fallback);\nconst S_STEP_ACTIVE = s('◆', '*');\nconst S_STEP_CANCEL = s('■', 'x');\nconst S_STEP_ERROR = s('▲', 'x');\nconst S_STEP_SUBMIT = s('◇', 'o');\n\nconst S_BAR_START = s('┌', 'T');\nconst S_BAR = s('│', '|');\nconst S_BAR_END = s('└', '—');\n\nconst S_RADIO_ACTIVE = s('●', '>');\nconst S_RADIO_INACTIVE = s('○', ' ');\nconst S_CHECKBOX_ACTIVE = s('◻', '[•]');\nconst S_CHECKBOX_SELECTED = s('◼', '[+]');\nconst S_CHECKBOX_INACTIVE = s('◻', '[ ]');\nconst S_PASSWORD_MASK = s('▪', '•');\n\nconst S_BAR_H = s('─', '-');\nconst S_CORNER_TOP_RIGHT = s('╮', '+');\nconst S_CONNECT_LEFT = s('├', '+');\nconst S_CORNER_BOTTOM_RIGHT = s('╯', '+');\n\nconst S_INFO = s('●', '•');\nconst S_SUCCESS = s('◆', '*');\nconst S_WARN = s('▲', '!');\nconst S_ERROR = s('■', 'x');\n\nconst symbol = (state: State) => {\n\tswitch (state) {\n\t\tcase 'initial':\n\t\tcase 'active':\n\t\t\treturn color.cyan(S_STEP_ACTIVE);\n\t\tcase 'cancel':\n\t\t\treturn color.red(S_STEP_CANCEL);\n\t\tcase 'error':\n\t\t\treturn color.yellow(S_STEP_ERROR);\n\t\tcase 'submit':\n\t\t\treturn color.green(S_STEP_SUBMIT);\n\t}\n};\n\ninterface LimitOptionsParams<TOption> {\n\toptions: TOption[];\n\tmaxItems: number | undefined;\n\tcursor: number;\n\tstyle: (option: TOption, active: boolean) => string;\n}\n\nconst limitOptions = <TOption>(params: LimitOptionsParams<TOption>): string[] => {\n\tconst { cursor, options, style } = params;\n\n\tconst paramMaxItems = params.maxItems ?? Number.POSITIVE_INFINITY;\n\tconst outputMaxItems = Math.max(process.stdout.rows - 4, 0);\n\t// We clamp to minimum 5 because anything less doesn't make sense UX wise\n\tconst maxItems = Math.min(outputMaxItems, Math.max(paramMaxItems, 5));\n\tlet slidingWindowLocation = 0;\n\n\tif (cursor >= slidingWindowLocation + maxItems - 3) {\n\t\tslidingWindowLocation = Math.max(Math.min(cursor - maxItems + 3, options.length - maxItems), 0);\n\t} else if (cursor < slidingWindowLocation + 2) {\n\t\tslidingWindowLocation = Math.max(cursor - 2, 0);\n\t}\n\n\tconst shouldRenderTopEllipsis = maxItems < options.length && slidingWindowLocation > 0;\n\tconst shouldRenderBottomEllipsis =\n\t\tmaxItems < options.length && slidingWindowLocation + maxItems < options.length;\n\n\treturn options\n\t\t.slice(slidingWindowLocation, slidingWindowLocation + maxItems)\n\t\t.map((option, i, arr) => {\n\t\t\tconst isTopLimit = i === 0 && shouldRenderTopEllipsis;\n\t\t\tconst isBottomLimit = i === arr.length - 1 && shouldRenderBottomEllipsis;\n\t\t\treturn isTopLimit || isBottomLimit\n\t\t\t\t? color.dim('...')\n\t\t\t\t: style(option, i + slidingWindowLocation === cursor);\n\t\t});\n};\n\nexport interface TextOptions {\n\tmessage: string;\n\tplaceholder?: string;\n\tdefaultValue?: string;\n\tinitialValue?: string;\n\tvalidate?: (value: string) => string | Error | undefined;\n}\nexport const text = (opts: TextOptions) => {\n\treturn new TextPrompt({\n\t\tvalidate: opts.validate,\n\t\tplaceholder: opts.placeholder,\n\t\tdefaultValue: opts.defaultValue,\n\t\tinitialValue: opts.initialValue,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst placeholder = opts.placeholder\n\t\t\t\t? color.inverse(opts.placeholder[0]) + color.dim(opts.placeholder.slice(1))\n\t\t\t\t: color.inverse(color.hidden('_'));\n\t\t\tconst value = !this.value ? placeholder : this.valueWithCursor;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error':\n\t\t\t\t\treturn `${title.trim()}\\n${color.yellow(S_BAR)} ${value}\\n${color.yellow(\n\t\t\t\t\t\tS_BAR_END\n\t\t\t\t\t)} ${color.yellow(this.error)}\\n`;\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.dim(this.value || opts.placeholder)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.strikethrough(\n\t\t\t\t\t\tcolor.dim(this.value ?? '')\n\t\t\t\t\t)}${this.value?.trim() ? `\\n${color.gray(S_BAR)}` : ''}`;\n\t\t\t\tdefault:\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${value}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<string | symbol>;\n};\n\nexport interface PasswordOptions {\n\tmessage: string;\n\tmask?: string;\n\tvalidate?: (value: string) => string | Error | undefined;\n}\nexport const password = (opts: PasswordOptions) => {\n\treturn new PasswordPrompt({\n\t\tvalidate: opts.validate,\n\t\tmask: opts.mask ?? S_PASSWORD_MASK,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst value = this.valueWithCursor;\n\t\t\tconst masked = this.masked;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error':\n\t\t\t\t\treturn `${title.trim()}\\n${color.yellow(S_BAR)} ${masked}\\n${color.yellow(\n\t\t\t\t\t\tS_BAR_END\n\t\t\t\t\t)} ${color.yellow(this.error)}\\n`;\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.dim(masked)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.strikethrough(color.dim(masked ?? ''))}${\n\t\t\t\t\t\tmasked ? `\\n${color.gray(S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\tdefault:\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${value}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<string | symbol>;\n};\n\nexport interface ConfirmOptions {\n\tmessage: string;\n\tactive?: string;\n\tinactive?: string;\n\tinitialValue?: boolean;\n}\nexport const confirm = (opts: ConfirmOptions) => {\n\tconst active = opts.active ?? 'Yes';\n\tconst inactive = opts.inactive ?? 'No';\n\treturn new ConfirmPrompt({\n\t\tactive,\n\t\tinactive,\n\t\tinitialValue: opts.initialValue ?? true,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst value = this.value ? active : inactive;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.dim(value)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.strikethrough(\n\t\t\t\t\t\tcolor.dim(value)\n\t\t\t\t\t)}\\n${color.gray(S_BAR)}`;\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${\n\t\t\t\t\t\tthis.value\n\t\t\t\t\t\t\t? `${color.green(S_RADIO_ACTIVE)} ${active}`\n\t\t\t\t\t\t\t: `${color.dim(S_RADIO_INACTIVE)} ${color.dim(active)}`\n\t\t\t\t\t} ${color.dim('/')} ${\n\t\t\t\t\t\t!this.value\n\t\t\t\t\t\t\t? `${color.green(S_RADIO_ACTIVE)} ${inactive}`\n\t\t\t\t\t\t\t: `${color.dim(S_RADIO_INACTIVE)} ${color.dim(inactive)}`\n\t\t\t\t\t}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<boolean | symbol>;\n};\n\ntype Primitive = Readonly<string | boolean | number>;\n\nexport type Option<Value> = Value extends Primitive\n\t? {\n\t\t\t/**\n\t\t\t * Internal data for this option.\n\t\t\t */\n\t\t\tvalue: Value;\n\t\t\t/**\n\t\t\t * The optional, user-facing text for this option.\n\t\t\t *\n\t\t\t * By default, the `value` is converted to a string.\n\t\t\t */\n\t\t\tlabel?: string;\n\t\t\t/**\n\t\t\t * An optional hint to display to the user when\n\t\t\t * this option might be selected.\n\t\t\t *\n\t\t\t * By default, no `hint` is displayed.\n\t\t\t */\n\t\t\thint?: string;\n\t\t}\n\t: {\n\t\t\t/**\n\t\t\t * Internal data for this option.\n\t\t\t */\n\t\t\tvalue: Value;\n\t\t\t/**\n\t\t\t * Required. The user-facing text for this option.\n\t\t\t */\n\t\t\tlabel: string;\n\t\t\t/**\n\t\t\t * An optional hint to display to the user when\n\t\t\t * this option might be selected.\n\t\t\t *\n\t\t\t * By default, no `hint` is displayed.\n\t\t\t */\n\t\t\thint?: string;\n\t\t};\n\nexport interface SelectOptions<Value> {\n\tmessage: string;\n\toptions: Option<Value>[];\n\tinitialValue?: Value;\n\tmaxItems?: number;\n}\n\nexport const select = <Value>(opts: SelectOptions<Value>) => {\n\tconst opt = (option: Option<Value>, state: 'inactive' | 'active' | 'selected' | 'cancelled') => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tswitch (state) {\n\t\t\tcase 'selected':\n\t\t\t\treturn `${color.dim(label)}`;\n\t\t\tcase 'active':\n\t\t\t\treturn `${color.green(S_RADIO_ACTIVE)} ${label} ${\n\t\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t\t}`;\n\t\t\tcase 'cancelled':\n\t\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t\tdefault:\n\t\t\t\treturn `${color.dim(S_RADIO_INACTIVE)} ${color.dim(label)}`;\n\t\t}\n\t};\n\n\treturn new SelectPrompt({\n\t\toptions: opts.options,\n\t\tinitialValue: opts.initialValue,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(this.options[this.cursor], 'selected')}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(\n\t\t\t\t\t\tthis.options[this.cursor],\n\t\t\t\t\t\t'cancelled'\n\t\t\t\t\t)}\\n${color.gray(S_BAR)}`;\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${limitOptions({\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tstyle: (item, active) => opt(item, active ? 'active' : 'inactive'),\n\t\t\t\t\t}).join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value | symbol>;\n};\n\nexport const selectKey = <Value extends string>(opts: SelectOptions<Value>) => {\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate: 'inactive' | 'active' | 'selected' | 'cancelled' = 'inactive'\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tif (state === 'selected') {\n\t\t\treturn `${color.dim(label)}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t}\n\t\tif (state === 'active') {\n\t\t\treturn `${color.bgCyan(color.gray(` ${option.value} `))} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\treturn `${color.gray(color.bgWhite(color.inverse(` ${option.value} `)))} ${label} ${\n\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t}`;\n\t};\n\n\treturn new SelectKeyPrompt({\n\t\toptions: opts.options,\n\t\tinitialValue: opts.initialValue,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(\n\t\t\t\t\t\tthis.options.find((opt) => opt.value === this.value) ?? opts.options[0],\n\t\t\t\t\t\t'selected'\n\t\t\t\t\t)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(this.options[0], 'cancelled')}\\n${color.gray(\n\t\t\t\t\t\tS_BAR\n\t\t\t\t\t)}`;\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${this.options\n\t\t\t\t\t\t.map((option, i) => opt(option, i === this.cursor ? 'active' : 'inactive'))\n\t\t\t\t\t\t.join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value | symbol>;\n};\n\nexport interface MultiSelectOptions<Value> {\n\tmessage: string;\n\toptions: Option<Value>[];\n\tinitialValues?: Value[];\n\tmaxItems?: number;\n\trequired?: boolean;\n\tcursorAt?: Value;\n}\nexport const multiselect = <Value>(opts: MultiSelectOptions<Value>) => {\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate: 'inactive' | 'active' | 'selected' | 'active-selected' | 'submitted' | 'cancelled'\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tif (state === 'active') {\n\t\t\treturn `${color.cyan(S_CHECKBOX_ACTIVE)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'selected') {\n\t\t\treturn `${color.green(S_CHECKBOX_SELECTED)} ${color.dim(label)} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t}\n\t\tif (state === 'active-selected') {\n\t\t\treturn `${color.green(S_CHECKBOX_SELECTED)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'submitted') {\n\t\t\treturn `${color.dim(label)}`;\n\t\t}\n\t\treturn `${color.dim(S_CHECKBOX_INACTIVE)} ${color.dim(label)}`;\n\t};\n\n\treturn new MultiSelectPrompt({\n\t\toptions: opts.options,\n\t\tinitialValues: opts.initialValues,\n\t\trequired: opts.required ?? true,\n\t\tcursorAt: opts.cursorAt,\n\t\tvalidate(selected: Value[]) {\n\t\t\tif (this.required && selected.length === 0)\n\t\t\t\treturn `Please select at least one option.\\n${color.reset(\n\t\t\t\t\tcolor.dim(\n\t\t\t\t\t\t`Press ${color.gray(color.bgWhite(color.inverse(' space ')))} to select, ${color.gray(\n\t\t\t\t\t\t\tcolor.bgWhite(color.inverse(' enter '))\n\t\t\t\t\t\t)} to submit`\n\t\t\t\t\t)\n\t\t\t\t)}`;\n\t\t},\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tconst styleOption = (option: Option<Value>, active: boolean) => {\n\t\t\t\tconst selected = this.value.includes(option.value);\n\t\t\t\tif (active && selected) {\n\t\t\t\t\treturn opt(option, 'active-selected');\n\t\t\t\t}\n\t\t\t\tif (selected) {\n\t\t\t\t\treturn opt(option, 'selected');\n\t\t\t\t}\n\t\t\t\treturn opt(option, active ? 'active' : 'inactive');\n\t\t\t};\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${\n\t\t\t\t\t\tthis.options\n\t\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t\t.map((option) => opt(option, 'submitted'))\n\t\t\t\t\t\t\t.join(color.dim(', ')) || color.dim('none')\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst label = this.options\n\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t.map((option) => opt(option, 'cancelled'))\n\t\t\t\t\t\t.join(color.dim(', '));\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${\n\t\t\t\t\t\tlabel.trim() ? `${label}\\n${color.gray(S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst footer = this.error\n\t\t\t\t\t\t.split('\\n')\n\t\t\t\t\t\t.map((ln, i) =>\n\t\t\t\t\t\t\ti === 0 ? `${color.yellow(S_BAR_END)} ${color.yellow(ln)}` : ` ${ln}`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\treturn `${title + color.yellow(S_BAR)} ${limitOptions({\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tstyle: styleOption,\n\t\t\t\t\t}).join(`\\n${color.yellow(S_BAR)} `)}\\n${footer}\\n`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${limitOptions({\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tstyle: styleOption,\n\t\t\t\t\t}).join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value[] | symbol>;\n};\n\nexport interface GroupMultiSelectOptions<Value> {\n\tmessage: string;\n\toptions: Record<string, Option<Value>[]>;\n\tinitialValues?: Value[];\n\trequired?: boolean;\n\tcursorAt?: Value;\n\tselectableGroups?: boolean;\n}\nexport const groupMultiselect = <Value>(opts: GroupMultiSelectOptions<Value>) => {\n\tconst { selectableGroups = true } = opts;\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate:\n\t\t\t| 'inactive'\n\t\t\t| 'active'\n\t\t\t| 'selected'\n\t\t\t| 'active-selected'\n\t\t\t| 'group-active'\n\t\t\t| 'group-active-selected'\n\t\t\t| 'submitted'\n\t\t\t| 'cancelled',\n\t\toptions: Option<Value>[] = []\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tconst isItem = typeof (option as any).group === 'string';\n\t\tconst next = isItem && (options[options.indexOf(option) + 1] ?? { group: true });\n\t\tconst isLast = isItem && (next as any).group === true;\n\t\tconst prefix = isItem ? (selectableGroups ? `${isLast ? S_BAR_END : S_BAR} ` : ' ') : '';\n\n\t\tif (state === 'active') {\n\t\t\treturn `${color.dim(prefix)}${color.cyan(S_CHECKBOX_ACTIVE)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'group-active') {\n\t\t\treturn `${prefix}${color.cyan(S_CHECKBOX_ACTIVE)} ${color.dim(label)}`;\n\t\t}\n\t\tif (state === 'group-active-selected') {\n\t\t\treturn `${prefix}${color.green(S_CHECKBOX_SELECTED)} ${color.dim(label)}`;\n\t\t}\n\t\tif (state === 'selected') {\n\t\t\tconst selectedCheckbox = isItem || selectableGroups ? color.green(S_CHECKBOX_SELECTED) : '';\n\t\t\treturn `${color.dim(prefix)}${selectedCheckbox} ${color.dim(label)} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t}\n\t\tif (state === 'active-selected') {\n\t\t\treturn `${color.dim(prefix)}${color.green(S_CHECKBOX_SELECTED)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'submitted') {\n\t\t\treturn `${color.dim(label)}`;\n\t\t}\n\t\tconst unselectedCheckbox = isItem || selectableGroups ? color.dim(S_CHECKBOX_INACTIVE) : '';\n\t\treturn `${color.dim(prefix)}${unselectedCheckbox} ${color.dim(label)}`;\n\t};\n\n\treturn new GroupMultiSelectPrompt({\n\t\toptions: opts.options,\n\t\tinitialValues: opts.initialValues,\n\t\trequired: opts.required ?? true,\n\t\tcursorAt: opts.cursorAt,\n\t\tselectableGroups,\n\t\tvalidate(selected: Value[]) {\n\t\t\tif (this.required && selected.length === 0)\n\t\t\t\treturn `Please select at least one option.\\n${color.reset(\n\t\t\t\t\tcolor.dim(\n\t\t\t\t\t\t`Press ${color.gray(color.bgWhite(color.inverse(' space ')))} to select, ${color.gray(\n\t\t\t\t\t\t\tcolor.bgWhite(color.inverse(' enter '))\n\t\t\t\t\t\t)} to submit`\n\t\t\t\t\t)\n\t\t\t\t)}`;\n\t\t},\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${this.options\n\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t.map((option) => opt(option, 'submitted'))\n\t\t\t\t\t\t.join(color.dim(', '))}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst label = this.options\n\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t.map((option) => opt(option, 'cancelled'))\n\t\t\t\t\t\t.join(color.dim(', '));\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${\n\t\t\t\t\t\tlabel.trim() ? `${label}\\n${color.gray(S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst footer = this.error\n\t\t\t\t\t\t.split('\\n')\n\t\t\t\t\t\t.map((ln, i) =>\n\t\t\t\t\t\t\ti === 0 ? `${color.yellow(S_BAR_END)} ${color.yellow(ln)}` : ` ${ln}`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\treturn `${title}${color.yellow(S_BAR)} ${this.options\n\t\t\t\t\t\t.map((option, i, options) => {\n\t\t\t\t\t\t\tconst selected =\n\t\t\t\t\t\t\t\tthis.value.includes(option.value) ||\n\t\t\t\t\t\t\t\t(option.group === true && this.isGroupSelected(`${option.value}`));\n\t\t\t\t\t\t\tconst active = i === this.cursor;\n\t\t\t\t\t\t\tconst groupActive =\n\t\t\t\t\t\t\t\t!active &&\n\t\t\t\t\t\t\t\ttypeof option.group === 'string' &&\n\t\t\t\t\t\t\t\tthis.options[this.cursor].value === option.group;\n\t\t\t\t\t\t\tif (groupActive) {\n\t\t\t\t\t\t\t\treturn opt(option, selected ? 'group-active-selected' : 'group-active', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (active && selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'active-selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn opt(option, active ? 'active' : 'inactive', options);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(`\\n${color.yellow(S_BAR)} `)}\\n${footer}\\n`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${this.options\n\t\t\t\t\t\t.map((option, i, options) => {\n\t\t\t\t\t\t\tconst selected =\n\t\t\t\t\t\t\t\tthis.value.includes(option.value) ||\n\t\t\t\t\t\t\t\t(option.group === true && this.isGroupSelected(`${option.value}`));\n\t\t\t\t\t\t\tconst active = i === this.cursor;\n\t\t\t\t\t\t\tconst groupActive =\n\t\t\t\t\t\t\t\t!active &&\n\t\t\t\t\t\t\t\ttypeof option.group === 'string' &&\n\t\t\t\t\t\t\t\tthis.options[this.cursor].value === option.group;\n\t\t\t\t\t\t\tif (groupActive) {\n\t\t\t\t\t\t\t\treturn opt(option, selected ? 'group-active-selected' : 'group-active', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (active && selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'active-selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn opt(option, active ? 'active' : 'inactive', options);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value[] | symbol>;\n};\n\nexport const note = (message = '', title = '') => {\n\tconst lines = `\\n${message}\\n`.split('\\n');\n\tconst titleLen = strip(title).length;\n\tconst len =\n\t\tMath.max(\n\t\t\tlines.reduce((sum, ln) => {\n\t\t\t\tconst line = strip(ln);\n\t\t\t\treturn line.length > sum ? line.length : sum;\n\t\t\t}, 0),\n\t\t\ttitleLen\n\t\t) + 2;\n\tconst msg = lines\n\t\t.map(\n\t\t\t(ln) =>\n\t\t\t\t`${color.gray(S_BAR)} ${color.dim(ln)}${' '.repeat(len - strip(ln).length)}${color.gray(\n\t\t\t\t\tS_BAR\n\t\t\t\t)}`\n\t\t)\n\t\t.join('\\n');\n\tprocess.stdout.write(\n\t\t`${color.gray(S_BAR)}\\n${color.green(S_STEP_SUBMIT)} ${color.reset(title)} ${color.gray(\n\t\t\tS_BAR_H.repeat(Math.max(len - titleLen - 1, 1)) + S_CORNER_TOP_RIGHT\n\t\t)}\\n${msg}\\n${color.gray(S_CONNECT_LEFT + S_BAR_H.repeat(len + 2) + S_CORNER_BOTTOM_RIGHT)}\\n`\n\t);\n};\n\nexport const cancel = (message = '') => {\n\tprocess.stdout.write(`${color.gray(S_BAR_END)} ${color.red(message)}\\n\\n`);\n};\n\nexport const intro = (title = '') => {\n\tprocess.stdout.write(`${color.gray(S_BAR_START)} ${title}\\n`);\n};\n\nexport const outro = (message = '') => {\n\tprocess.stdout.write(`${color.gray(S_BAR)}\\n${color.gray(S_BAR_END)} ${message}\\n\\n`);\n};\n\nexport type LogMessageOptions = {\n\tsymbol?: string;\n};\nexport const log = {\n\tmessage: (message = '', { symbol = color.gray(S_BAR) }: LogMessageOptions = {}) => {\n\t\tconst parts = [`${color.gray(S_BAR)}`];\n\t\tif (message) {\n\t\t\tconst [firstLine, ...lines] = message.split('\\n');\n\t\t\tparts.push(`${symbol} ${firstLine}`, ...lines.map((ln) => `${color.gray(S_BAR)} ${ln}`));\n\t\t}\n\t\tprocess.stdout.write(`${parts.join('\\n')}\\n`);\n\t},\n\tinfo: (message: string) => {\n\t\tlog.message(message, { symbol: color.blue(S_INFO) });\n\t},\n\tsuccess: (message: string) => {\n\t\tlog.message(message, { symbol: color.green(S_SUCCESS) });\n\t},\n\tstep: (message: string) => {\n\t\tlog.message(message, { symbol: color.green(S_STEP_SUBMIT) });\n\t},\n\twarn: (message: string) => {\n\t\tlog.message(message, { symbol: color.yellow(S_WARN) });\n\t},\n\t/** alias for `log.warn()`. */\n\twarning: (message: string) => {\n\t\tlog.warn(message);\n\t},\n\terror: (message: string) => {\n\t\tlog.message(message, { symbol: color.red(S_ERROR) });\n\t},\n};\n\nconst prefix = `${color.gray(S_BAR)} `;\nexport const stream = {\n\tmessage: async (\n\t\titerable: Iterable<string> | AsyncIterable<string>,\n\t\t{ symbol = color.gray(S_BAR) }: LogMessageOptions = {}\n\t) => {\n\t\tprocess.stdout.write(`${color.gray(S_BAR)}\\n${symbol} `);\n\t\tlet lineWidth = 3;\n\t\tfor await (let chunk of iterable) {\n\t\t\tchunk = chunk.replace(/\\n/g, `\\n${prefix}`);\n\t\t\tif (chunk.includes('\\n')) {\n\t\t\t\tlineWidth = 3 + strip(chunk.slice(chunk.lastIndexOf('\\n'))).length;\n\t\t\t}\n\t\t\tconst chunkLen = strip(chunk).length;\n\t\t\tif (lineWidth + chunkLen < process.stdout.columns) {\n\t\t\t\tlineWidth += chunkLen;\n\t\t\t\tprocess.stdout.write(chunk);\n\t\t\t} else {\n\t\t\t\tprocess.stdout.write(`\\n${prefix}${chunk.trimStart()}`);\n\t\t\t\tlineWidth = 3 + strip(chunk.trimStart()).length;\n\t\t\t}\n\t\t}\n\t\tprocess.stdout.write('\\n');\n\t},\n\tinfo: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.blue(S_INFO) });\n\t},\n\tsuccess: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.green(S_SUCCESS) });\n\t},\n\tstep: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.green(S_STEP_SUBMIT) });\n\t},\n\twarn: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.yellow(S_WARN) });\n\t},\n\t/** alias for `log.warn()`. */\n\twarning: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.warn(iterable);\n\t},\n\terror: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.red(S_ERROR) });\n\t},\n};\n\nexport interface SpinnerOptions {\n\tindicator?: 'dots' | 'timer';\n}\n\nexport const spinner = ({ indicator = 'dots' }: SpinnerOptions = {}) => {\n\tconst frames = unicode ? ['◒', '◐', '◓', '◑'] : ['•', 'o', 'O', '0'];\n\tconst delay = unicode ? 80 : 120;\n\tconst isCI = process.env.CI === 'true';\n\n\tlet unblock: () => void;\n\tlet loop: NodeJS.Timeout;\n\tlet isSpinnerActive = false;\n\tlet _message = '';\n\tlet _prevMessage: string | undefined = undefined;\n\tlet _origin: number = performance.now();\n\n\tconst handleExit = (code: number) => {\n\t\tconst msg = code > 1 ? 'Something went wrong' : 'Canceled';\n\t\tif (isSpinnerActive) stop(msg, code);\n\t};\n\n\tconst errorEventHandler = () => handleExit(2);\n\tconst signalEventHandler = () => handleExit(1);\n\n\tconst registerHooks = () => {\n\t\t// Reference: https://nodejs.org/api/process.html#event-uncaughtexception\n\t\tprocess.on('uncaughtExceptionMonitor', errorEventHandler);\n\t\t// Reference: https://nodejs.org/api/process.html#event-unhandledrejection\n\t\tprocess.on('unhandledRejection', errorEventHandler);\n\t\t// Reference Signal Events: https://nodejs.org/api/process.html#signal-events\n\t\tprocess.on('SIGINT', signalEventHandler);\n\t\tprocess.on('SIGTERM', signalEventHandler);\n\t\tprocess.on('exit', handleExit);\n\t};\n\n\tconst clearHooks = () => {\n\t\tprocess.removeListener('uncaughtExceptionMonitor', errorEventHandler);\n\t\tprocess.removeListener('unhandledRejection', errorEventHandler);\n\t\tprocess.removeListener('SIGINT', signalEventHandler);\n\t\tprocess.removeListener('SIGTERM', signalEventHandler);\n\t\tprocess.removeListener('exit', handleExit);\n\t};\n\n\tconst clearPrevMessage = () => {\n\t\tif (_prevMessage === undefined) return;\n\t\tif (isCI) process.stdout.write('\\n');\n\t\tconst prevLines = _prevMessage.split('\\n');\n\t\tprocess.stdout.write(cursor.move(-999, prevLines.length - 1));\n\t\tprocess.stdout.write(erase.down(prevLines.length));\n\t};\n\n\tconst parseMessage = (msg: string): string => {\n\t\treturn msg.replace(/\\.+$/, '');\n\t};\n\n\tconst formatTimer = (origin: number): string => {\n\t\tconst duration = (performance.now() - origin) / 1000;\n\t\tconst min = Math.floor(duration / 60);\n\t\tconst secs = Math.floor(duration % 60);\n\t\treturn min > 0 ? `[${min}m ${secs}s]` : `[${secs}s]`;\n\t};\n\n\tconst start = (msg = ''): void => {\n\t\tisSpinnerActive = true;\n\t\tunblock = block();\n\t\t_message = parseMessage(msg);\n\t\t_origin = performance.now();\n\t\tprocess.stdout.write(`${color.gray(S_BAR)}\\n`);\n\t\tlet frameIndex = 0;\n\t\tlet indicatorTimer = 0;\n\t\tregisterHooks();\n\t\tloop = setInterval(() => {\n\t\t\tif (isCI && _message === _prevMessage) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tclearPrevMessage();\n\t\t\t_prevMessage = _message;\n\t\t\tconst frame = color.magenta(frames[frameIndex]);\n\n\t\t\tif (isCI) {\n\t\t\t\tprocess.stdout.write(`${frame} ${_message}...`);\n\t\t\t} else if (indicator === 'timer') {\n\t\t\t\tprocess.stdout.write(`${frame} ${_message} ${formatTimer(_origin)}`);\n\t\t\t} else {\n\t\t\t\tconst loadingDots = '.'.repeat(Math.floor(indicatorTimer)).slice(0, 3);\n\t\t\t\tprocess.stdout.write(`${frame} ${_message}${loadingDots}`);\n\t\t\t}\n\n\t\t\tframeIndex = frameIndex + 1 < frames.length ? frameIndex + 1 : 0;\n\t\t\tindicatorTimer = indicatorTimer < frames.length ? indicatorTimer + 0.125 : 0;\n\t\t}, delay);\n\t};\n\n\tconst stop = (msg = '', code = 0): void => {\n\t\tisSpinnerActive = false;\n\t\tclearInterval(loop);\n\t\tclearPrevMessage();\n\t\tconst step =\n\t\t\tcode === 0\n\t\t\t\t? color.green(S_STEP_SUBMIT)\n\t\t\t\t: code === 1\n\t\t\t\t\t? color.red(S_STEP_CANCEL)\n\t\t\t\t\t: color.red(S_STEP_ERROR);\n\t\t_message = parseMessage(msg ?? _message);\n\t\tif (indicator === 'timer') {\n\t\t\tprocess.stdout.write(`${step} ${_message} ${formatTimer(_origin)}\\n`);\n\t\t} else {\n\t\t\tprocess.stdout.write(`${step} ${_message}\\n`);\n\t\t}\n\t\tclearHooks();\n\t\tunblock();\n\t};\n\n\tconst message = (msg = ''): void => {\n\t\t_message = parseMessage(msg ?? _message);\n\t};\n\n\treturn {\n\t\tstart,\n\t\tstop,\n\t\tmessage,\n\t};\n};\n\nexport type PromptGroupAwaitedReturn<T> = {\n\t[P in keyof T]: Exclude<Awaited<T[P]>, symbol>;\n};\n\nexport interface PromptGroupOptions<T> {\n\t/**\n\t * Control how the group can be canceled\n\t * if one of the prompts is canceled.\n\t */\n\tonCancel?: (opts: { results: Prettify<Partial<PromptGroupAwaitedReturn<T>>> }) => void;\n}\n\ntype Prettify<T> = {\n\t[P in keyof T]: T[P];\n} & {};\n\nexport type PromptGroup<T> = {\n\t[P in keyof T]: (opts: {\n\t\tresults: Prettify<Partial<PromptGroupAwaitedReturn<Omit<T, P>>>>;\n\t}) => undefined | Promise<T[P] | undefined>;\n};\n\n/**\n * Define a group of prompts to be displayed\n * and return a results of objects within the group\n */\nexport const group = async <T>(\n\tprompts: PromptGroup<T>,\n\topts?: PromptGroupOptions<T>\n): Promise<Prettify<PromptGroupAwaitedReturn<T>>> => {\n\tconst results = {} as any;\n\tconst promptNames = Object.keys(prompts);\n\n\tfor (const name of promptNames) {\n\t\tconst prompt = prompts[name as keyof T];\n\t\tconst result = await prompt({ results })?.catch((e) => {\n\t\t\tthrow e;\n\t\t});\n\n\t\t// Pass the results to the onCancel function\n\t\t// so the user can decide what to do with the results\n\t\t// TODO: Switch to callback within core to avoid isCancel Fn\n\t\tif (typeof opts?.onCancel === 'function' && isCancel(result)) {\n\t\t\tresults[name] = 'canceled';\n\t\t\topts.onCancel({ results });\n\t\t\tcontinue;\n\t\t}\n\n\t\tresults[name] = result;\n\t}\n\n\treturn results;\n};\n\nexport type Task = {\n\t/**\n\t * Task title\n\t */\n\ttitle: string;\n\t/**\n\t * Task function\n\t */\n\ttask: (message: (string: string) => void) => string | Promise<string> | void | Promise<void>;\n\n\t/**\n\t * If enabled === false the task will be skipped\n\t */\n\tenabled?: boolean;\n};\n\n/**\n * Define a group of tasks to be executed\n */\nexport const tasks = async (tasks: Task[]) => {\n\tfor (const task of tasks) {\n\t\tif (task.enabled === false) continue;\n\n\t\tconst s = spinner();\n\t\ts.start(task.title);\n\t\tconst result = await task.task(s.message);\n\t\ts.stop(result || task.title);\n\t}\n};\n","import {getCiRunKey}from'@stablyai/ci-run-id';import {intro,spinner,outro}from'@clack/prompts';import {readFileSync}from'fs';import se from'picocolors';import {filterSensitiveValues,scrubString,scrubTrace}from'@stablyai/playwright-trace-scrubber';import Ie from'ws';import Ft,{execSync}from'child_process';import {Buffer as Buffer$1}from'buffer';import Se from'path';import Ne from'process';import {fileURLToPath}from'url';import Mi,{constants}from'os';import'timers/promises';import {debuglog}from'util';import Ua,{AbortError}from'p-retry';var Wi=Object.create;var Kt=Object.defineProperty;var qi=Object.getOwnPropertyDescriptor;var vi=Object.getOwnPropertyNames;var Ki=Object.getPrototypeOf,Yi=Object.prototype.hasOwnProperty;var Z=(e=>typeof require<\"u\"?require:typeof Proxy<\"u\"?new Proxy(e,{get:(t,r)=>(typeof require<\"u\"?require:t)[r]}):e)(function(e){if(typeof require<\"u\")return require.apply(this,arguments);throw Error('Dynamic require of \"'+e+'\" is not supported')});var F=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var zi=(e,t,r,n)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let i of vi(t))!Yi.call(e,i)&&i!==r&&Kt(e,i,{get:()=>t[i],enumerable:!(n=qi(t,i))||n.enumerable});return e};var Xe=(e,t,r)=>(r=e!=null?Wi(Ki(e)):{},zi(Kt(r,\"default\",{value:e,enumerable:true}),e));var wr=F((mc,Cr)=>{Cr.exports=Ar;Ar.sync=yo;var br=Z(\"fs\");function Ro(e,t){var r=t.pathExt!==void 0?t.pathExt:process.env.PATHEXT;if(!r||(r=r.split(\";\"),r.indexOf(\"\")!==-1))return true;for(var n=0;n<r.length;n++){var i=r[n].toLowerCase();if(i&&e.substr(-i.length).toLowerCase()===i)return true}return false}function Tr(e,t,r){return !e.isSymbolicLink()&&!e.isFile()?false:Ro(t,r)}function Ar(e,t,r){br.stat(e,function(n,i){r(n,n?false:Tr(i,e,t));});}function yo(e,t){return Tr(br.statSync(e),e,t)}});var Or=F((Ec,Pr)=>{Pr.exports=Br;Br.sync=bo;var xr=Z(\"fs\");function Br(e,t,r){xr.stat(e,function(n,i){r(n,n?false:Ur(i,t));});}function bo(e,t){return Ur(xr.statSync(e),t)}function Ur(e,t){return e.isFile()&&To(e,t)}function To(e,t){var r=e.mode,n=e.uid,i=e.gid,a=t.uid!==void 0?t.uid:process.getuid&&process.getuid(),u=t.gid!==void 0?t.gid:process.getgid&&process.getgid(),_=parseInt(\"100\",8),R=parseInt(\"010\",8),y=parseInt(\"001\",8),b=_|R,C=r&y||r&R&&i===u||r&_&&n===a||r&b&&a===0;return C}});var Nr=F((_c,Lr)=>{Z(\"fs\");var Oe;process.platform===\"win32\"||global.TESTING_WINDOWS?Oe=wr():Oe=Or();Lr.exports=lt;lt.sync=Ao;function lt(e,t,r){if(typeof t==\"function\"&&(r=t,t={}),!r){if(typeof Promise!=\"function\")throw new TypeError(\"callback not provided\");return new Promise(function(n,i){lt(e,t||{},function(a,u){a?i(a):n(u);});})}Oe(e,t||{},function(n,i){n&&(n.code===\"EACCES\"||t&&t.ignoreErrors)&&(n=null,i=false),r(n,i);});}function Ao(e,t){try{return Oe.sync(e,t||{})}catch(r){if(t&&t.ignoreErrors||r.code===\"EACCES\")return false;throw r}}});var jr=F((Ic,$r)=>{var fe=process.platform===\"win32\"||process.env.OSTYPE===\"cygwin\"||process.env.OSTYPE===\"msys\",Dr=Z(\"path\"),Co=fe?\";\":\":\",Mr=Nr(),kr=e=>Object.assign(new Error(`not found: ${e}`),{code:\"ENOENT\"}),Gr=(e,t)=>{let r=t.colon||Co,n=e.match(/\\//)||fe&&e.match(/\\\\/)?[\"\"]:[...fe?[process.cwd()]:[],...(t.path||process.env.PATH||\"\").split(r)],i=fe?t.pathExt||process.env.PATHEXT||\".EXE;.CMD;.BAT;.COM\":\"\",a=fe?i.split(r):[\"\"];return fe&&e.indexOf(\".\")!==-1&&a[0]!==\"\"&&a.unshift(\"\"),{pathEnv:n,pathExt:a,pathExtExe:i}},Hr=(e,t,r)=>{typeof t==\"function\"&&(r=t,t={}),t||(t={});let{pathEnv:n,pathExt:i,pathExtExe:a}=Gr(e,t),u=[],_=y=>new Promise((b,C)=>{if(y===n.length)return t.all&&u.length?b(u):C(kr(e));let P=n[y],O=/^\".*\"$/.test(P)?P.slice(1,-1):P,L=Dr.join(O,e),q=!O&&/^\\.[\\\\\\/]/.test(e)?e.slice(0,2)+L:L;b(R(q,y,0));}),R=(y,b,C)=>new Promise((P,O)=>{if(C===i.length)return P(_(b+1));let L=i[C];Mr(y+L,{pathExt:a},(q,V)=>{if(!q&&V)if(t.all)u.push(y+L);else return P(y+L);return P(R(y,b,C+1))});});return r?_(0).then(y=>r(null,y),r):_(0)},wo=(e,t)=>{t=t||{};let{pathEnv:r,pathExt:n,pathExtExe:i}=Gr(e,t),a=[];for(let u=0;u<r.length;u++){let _=r[u],R=/^\".*\"$/.test(_)?_.slice(1,-1):_,y=Dr.join(R,e),b=!R&&/^\\.[\\\\\\/]/.test(e)?e.slice(0,2)+y:y;for(let C=0;C<n.length;C++){let P=b+n[C];try{if(Mr.sync(P,{pathExt:i}))if(t.all)a.push(P);else return P}catch{}}}if(t.all&&a.length)return a;if(t.nothrow)return null;throw kr(e)};$r.exports=Hr;Hr.sync=wo;});var Vr=F((Sc,ft)=>{var Fr=(e={})=>{let t=e.env||process.env;return (e.platform||process.platform)!==\"win32\"?\"PATH\":Object.keys(t).reverse().find(n=>n.toUpperCase()===\"PATH\")||\"Path\"};ft.exports=Fr;ft.exports.default=Fr;});var Kr=F((Rc,vr)=>{var Wr=Z(\"path\"),xo=jr(),Bo=Vr();function qr(e,t){let r=e.options.env||process.env,n=process.cwd(),i=e.options.cwd!=null,a=i&&process.chdir!==void 0&&!process.chdir.disabled;if(a)try{process.chdir(e.options.cwd);}catch{}let u;try{u=xo.sync(e.command,{path:r[Bo({env:r})],pathExt:t?Wr.delimiter:void 0});}catch{}finally{a&&process.chdir(n);}return u&&(u=Wr.resolve(i?e.options.cwd:\"\",u)),u}function Uo(e){return qr(e)||qr(e,true)}vr.exports=Uo;});var Yr=F((yc,pt)=>{var dt=/([()\\][%!^\"`<>&|;, *?])/g;function Po(e){return e=e.replace(dt,\"^$1\"),e}function Oo(e,t){return e=`${e}`,e=e.replace(/(?=(\\\\+?)?)\\1\"/g,'$1$1\\\\\"'),e=e.replace(/(?=(\\\\+?)?)\\1$/,\"$1$1\"),e=`\"${e}\"`,e=e.replace(dt,\"^$1\"),t&&(e=e.replace(dt,\"^$1\")),e}pt.exports.command=Po;pt.exports.argument=Oo;});var Jr=F((bc,zr)=>{zr.exports=/^#!(.*)/;});var Xr=F((Tc,Qr)=>{var Lo=Jr();Qr.exports=(e=\"\")=>{let t=e.match(Lo);if(!t)return null;let[r,n]=t[0].replace(/#! ?/,\"\").split(\" \"),i=r.split(\"/\").pop();return i===\"env\"?n:n?`${i} ${n}`:i};});var en=F((Ac,Zr)=>{var ht=Z(\"fs\"),No=Xr();function Do(e){let r=Buffer.alloc(150),n;try{n=ht.openSync(e,\"r\"),ht.readSync(n,r,0,150,0),ht.closeSync(n);}catch{}return No(r.toString())}Zr.exports=Do;});var on=F((Cc,nn)=>{var Mo=Z(\"path\"),tn=Kr(),rn=Yr(),ko=en(),Go=process.platform===\"win32\",Ho=/\\.(?:com|exe)$/i,$o=/node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;function jo(e){e.file=tn(e);let t=e.file&&ko(e.file);return t?(e.args.unshift(e.file),e.command=t,tn(e)):e.file}function Fo(e){if(!Go)return e;let t=jo(e),r=!Ho.test(t);if(e.options.forceShell||r){let n=$o.test(t);e.command=Mo.normalize(e.command),e.command=rn.command(e.command),e.args=e.args.map(a=>rn.argument(a,n));let i=[e.command].concat(e.args).join(\" \");e.args=[\"/d\",\"/s\",\"/c\",`\"${i}\"`],e.command=process.env.comspec||\"cmd.exe\",e.options.windowsVerbatimArguments=true;}return e}function Vo(e,t,r){t&&!Array.isArray(t)&&(r=t,t=null),t=t?t.slice(0):[],r=Object.assign({},r);let n={command:e,args:t,options:r,file:void 0,original:{command:e,args:t}};return r.shell?n:Fo(n)}nn.exports=Vo;});var cn=F((wc,an)=>{var mt=process.platform===\"win32\";function Et(e,t){return Object.assign(new Error(`${t} ${e.command} ENOENT`),{code:\"ENOENT\",errno:\"ENOENT\",syscall:`${t} ${e.command}`,path:e.command,spawnargs:e.args})}function Wo(e,t){if(!mt)return;let r=e.emit;e.emit=function(n,i){if(n===\"exit\"){let a=sn(i,t);if(a)return r.call(e,\"error\",a)}return r.apply(e,arguments)};}function sn(e,t){return mt&&e===1&&!t.file?Et(t.original,\"spawn\"):null}function qo(e,t){return mt&&e===1&&!t.file?Et(t.original,\"spawnSync\"):null}an.exports={hookChildProcess:Wo,verifyENOENT:sn,verifyENOENTSync:qo,notFoundError:Et};});var fn=F((xc,de)=>{var un=Z(\"child_process\"),gt=on(),_t=cn();function ln(e,t,r){let n=gt(e,t,r),i=un.spawn(n.command,n.args,n.options);return _t.hookChildProcess(i,n),i}function vo(e,t,r){let n=gt(e,t,r),i=un.spawnSync(n.command,n.args,n.options);return i.error=i.error||_t.verifyENOENTSync(i.status,n),i}de.exports=ln;de.exports.spawn=ln;de.exports.sync=vo;de.exports._parse=gt;de.exports._enoent=_t;});var Hn=F((Ou,Gn)=>{var{PassThrough:Ws}=Z(\"stream\");Gn.exports=function(){var e=[],t=new Ws({objectMode:true});return t.setMaxListeners(0),t.add=r,t.isEmpty=n,t.on(\"unpipe\",i),Array.prototype.slice.call(arguments).forEach(r),t;function r(a){return Array.isArray(a)?(a.forEach(r),this):(e.push(a),a.once(\"end\",i.bind(null,a)),a.once(\"error\",t.emit.bind(t,\"error\")),a.pipe(t,{end:false}),this)}function n(){return e.length==0}function i(a){e=e.filter(function(u){return u!==a}),!e.length&&t.readable&&t.end();}};});var Ti=F(he=>{Object.defineProperty(he,\"__esModule\",{value:true});he.of=he.PropertiesFile=void 0;var ga=_a(Z(\"fs\"));function _a(e){return e&&e.__esModule?e:{default:e}}var Ke=class{constructor(...t){this.objs={},t.length&&this.of.apply(this,t);}makeKeys(t){if(t&&t.indexOf(\"#\")!==0){let r=[\"=\",\":\"].map(u=>t.indexOf(u)).filter(u=>u>-1),n=Math.min(...r),i=t.substring(0,n).trim(),a=t.substring(n+1).trim();if(this.objs.hasOwnProperty(i))if(Array.isArray(this.objs[i]))this.objs[i].push(a);else {let u=this.objs[i];this.objs[i]=[u,a];}else {let u=a.replace(/\"/g,'\\\\\"').replace(/\\\\:/g,\":\").replace(/\\\\=/g,\"=\");this.objs[i]=unescape(JSON.parse('\"'+u+'\"'));}}}addFile(t){let n=ga.default.readFileSync(t,\"utf-8\").split(/\\r?\\n/),i=this;for(let a=0;a<n.length;a++){let u=n[a];for(;u.substring(u.length-1)===\"\\\\\";){u=u.slice(0,-1);let _=n[a+1];u=u+_.trim(),a++;}i.makeKeys(u);}}of(...t){for(let r=0;r<t.length;r++)this.addFile(t[r]);}get(t,r){if(this.objs.hasOwnProperty(t))if(Array.isArray(this.objs[t])){let n=[];for(let i=0;i<this.objs[t].length;i++)n[i]=this.interpolate(this.objs[t][i]);return n}else return typeof this.objs[t]>\"u\"?\"\":this.interpolate(this.objs[t]);return r}getLast(t,r){if(this.objs.hasOwnProperty(t))if(Array.isArray(this.objs[t])){var n=this.objs[t].length;return this.interpolate(this.objs[t][n-1])}else return typeof this.objs[t]>\"u\"?\"\":this.interpolate(this.objs[t]);return r}getFirst(t,r){return this.objs.hasOwnProperty(t)?Array.isArray(this.objs[t])?this.interpolate(this.objs[t][0]):typeof this.objs[t]>\"u\"?\"\":this.interpolate(this.objs[t]):r}getInt(t,r){let n=this.getLast(t);return n?parseInt(n,10):r}getFloat(t,r){let n=this.getLast(t);return n?parseFloat(n):r}getBoolean(t,r){function n(a){return !/^(false|0)$/i.test(a)&&!!a}let i=this.getLast(t);return i?n(i):r||false}set(t,r){this.objs[t]=r;}interpolate(t){let r=this;return t.replace(/\\\\\\\\/g,\"\\\\\").replace(/\\$\\{([A-Za-z0-9\\.\\-\\_]*)\\}/g,function(n){return r.getLast(n.substring(2,n.length-1))})}getKeys(){let t=[];for(let r in this.objs)t.push(r);return t}getMatchingKeys(t){let r=[];for(let n in this.objs)n.search(t)!==-1&&r.push(n);return r}reset(){this.objs={};}};he.PropertiesFile=Ke;var Ia=function(...t){let r=new Ke;return r.of.apply(r,t),r};he.of=Ia;});var Ce=BigInt(4294967295),Yt=BigInt(32);function Ji(e,t=false){return t?{h:Number(e&Ce),l:Number(e>>Yt&Ce)}:{h:Number(e>>Yt&Ce)|0,l:Number(e&Ce)|0}}function zt(e,t=false){let r=e.length,n=new Uint32Array(r),i=new Uint32Array(r);for(let a=0;a<r;a++){let{h:u,l:_}=Ji(e[a],t);[n[a],i[a]]=[u,_];}return [n,i]}var Jt=(e,t,r)=>e<<r|t>>>32-r,Qt=(e,t,r)=>t<<r|e>>>32-r,Xt=(e,t,r)=>t<<r-32|e>>>64-r,Zt=(e,t,r)=>e<<r-32|t>>>64-r;function Qi(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name===\"Uint8Array\"}function Ze(e,t=\"\"){if(!Number.isSafeInteger(e)||e<0){let r=t&&`\"${t}\" `;throw new Error(`${r}expected integer >= 0, got ${e}`)}}function we(e,t,r=\"\"){let n=Qi(e),i=e?.length,a=t!==void 0;if(!n||a){let u=r&&`\"${r}\" `,_=\"\",R=n?`length=${i}`:`type=${typeof e}`;throw new Error(u+\"expected Uint8Array\"+_+\", got \"+R)}return e}function et(e,t=true){if(e.destroyed)throw new Error(\"Hash instance has been destroyed\");if(t&&e.finished)throw new Error(\"Hash#digest() has already been called\")}function er(e,t){we(e,void 0,\"digestInto() output\");let r=t.outputLen;if(e.length<r)throw new Error('\"digestInto() output\" expected to be of length >='+r)}function tr(e){return new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4))}function tt(...e){for(let t=0;t<e.length;t++)e[t].fill(0);}var Xi=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Zi(e){return e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255}function eo(e){for(let t=0;t<e.length;t++)e[t]=Zi(e[t]);return e}var rt=Xi?e=>e:eo;function rr(e,t={}){let r=(i,a)=>e(a).update(i).digest(),n=e(void 0);return r.outputLen=n.outputLen,r.blockLen=n.blockLen,r.create=i=>e(i),Object.assign(r,t),Object.freeze(r)}var nr=e=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,e])});var to=BigInt(0),ge=BigInt(1),ro=BigInt(2),no=BigInt(7),io=BigInt(256),oo=BigInt(113),sr=[],ar=[],cr=[];for(let e=0,t=ge,r=1,n=0;e<24;e++){[r,n]=[n,(2*r+3*n)%5],sr.push(2*(5*n+r)),ar.push((e+1)*(e+2)/2%64);let i=to;for(let a=0;a<7;a++)t=(t<<ge^(t>>no)*oo)%io,t&ro&&(i^=ge<<(ge<<BigInt(a))-ge);cr.push(i);}var ur=zt(cr,true),so=ur[0],ao=ur[1],ir=(e,t,r)=>r>32?Xt(e,t,r):Jt(e,t,r),or=(e,t,r)=>r>32?Zt(e,t,r):Qt(e,t,r);function co(e,t=24){let r=new Uint32Array(10);for(let n=24-t;n<24;n++){for(let u=0;u<10;u++)r[u]=e[u]^e[u+10]^e[u+20]^e[u+30]^e[u+40];for(let u=0;u<10;u+=2){let _=(u+8)%10,R=(u+2)%10,y=r[R],b=r[R+1],C=ir(y,b,1)^r[_],P=or(y,b,1)^r[_+1];for(let O=0;O<50;O+=10)e[u+O]^=C,e[u+O+1]^=P;}let i=e[2],a=e[3];for(let u=0;u<24;u++){let _=ar[u],R=ir(i,a,_),y=or(i,a,_),b=sr[u];i=e[b],a=e[b+1],e[b]=R,e[b+1]=y;}for(let u=0;u<50;u+=10){for(let _=0;_<10;_++)r[_]=e[u+_];for(let _=0;_<10;_++)e[u+_]^=~r[(_+2)%10]&r[(_+4)%10];}e[0]^=so[n],e[1]^=ao[n];}tt(r);}var nt=class e{state;pos=0;posOut=0;finished=false;state32;destroyed=false;blockLen;suffix;outputLen;enableXOF=false;rounds;constructor(t,r,n,i=false,a=24){if(this.blockLen=t,this.suffix=r,this.outputLen=n,this.enableXOF=i,this.rounds=a,Ze(n,\"outputLen\"),!(0<t&&t<200))throw new Error(\"only keccak-f1600 function is supported\");this.state=new Uint8Array(200),this.state32=tr(this.state);}clone(){return this._cloneInto()}keccak(){rt(this.state32),co(this.state32,this.rounds),rt(this.state32),this.posOut=0,this.pos=0;}update(t){et(this),we(t);let{blockLen:r,state:n}=this,i=t.length;for(let a=0;a<i;){let u=Math.min(r-this.pos,i-a);for(let _=0;_<u;_++)n[this.pos++]^=t[a++];this.pos===r&&this.keccak();}return this}finish(){if(this.finished)return;this.finished=true;let{state:t,suffix:r,pos:n,blockLen:i}=this;t[n]^=r,(r&128)!==0&&n===i-1&&this.keccak(),t[i-1]^=128,this.keccak();}writeInto(t){et(this,false),we(t),this.finish();let r=this.state,{blockLen:n}=this;for(let i=0,a=t.length;i<a;){this.posOut>=n&&this.keccak();let u=Math.min(n-this.posOut,a-i);t.set(r.subarray(this.posOut,this.posOut+u),i),this.posOut+=u,i+=u;}return t}xofInto(t){if(!this.enableXOF)throw new Error(\"XOF is not possible for this instance\");return this.writeInto(t)}xof(t){return Ze(t),this.xofInto(new Uint8Array(t))}digestInto(t){if(er(t,this),this.finished)throw new Error(\"digest() was already called\");return this.writeInto(t),this.destroy(),t}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=true,tt(this.state);}_cloneInto(t){let{blockLen:r,suffix:n,outputLen:i,rounds:a,enableXOF:u}=this;return t||=new e(r,n,i,u,a),t.state32.set(this.state32),t.pos=this.pos,t.posOut=this.posOut,t.finished=this.finished,t.rounds=a,t.suffix=n,t.outputLen=i,t.enableXOF=u,t.destroyed=this.destroyed,t}},uo=(e,t,r,n={})=>rr(()=>new nt(t,e,r),n);var lr=uo(6,72,64,nr(10));var lo=/^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,it=Math.ceil,z=Math.floor,W=\"[BigNumber Error] \",fr=W+\"Number primitive has more than 15 significant digits: \",Q=1e14,w=14,ot=9007199254740991,st=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],ne=1e7,G=1e9;function dr(e){var t,r,n,i=S.prototype={constructor:S,toString:null,valueOf:null},a=new S(1),u=20,_=4,R=-7,y=21,b=-1e7,C=1e7,P=false,O=1,L=0,q={prefix:\"\",groupSize:3,secondaryGroupSize:0,groupSeparator:\",\",decimalSeparator:\".\",fractionGroupSize:0,fractionGroupSeparator:\"\\xA0\",suffix:\"\"},V=\"0123456789abcdefghijklmnopqrstuvwxyz\",te=true;function S(o,s){var c,m,f,p,g,l,d,E,h=this;if(!(h instanceof S))return new S(o,s);if(s==null){if(o&&o._isBigNumber===true){h.s=o.s,!o.c||o.e>C?h.c=h.e=null:o.e<b?h.c=[h.e=0]:(h.e=o.e,h.c=o.c.slice());return}if((l=typeof o==\"number\")&&o*0==0){if(h.s=1/o<0?(o=-o,-1):1,o===~~o){for(p=0,g=o;g>=10;g/=10,p++);p>C?h.c=h.e=null:(h.e=p,h.c=[o]);return}E=String(o);}else {if(!lo.test(E=String(o)))return n(h,E,l);h.s=E.charCodeAt(0)==45?(E=E.slice(1),-1):1;}(p=E.indexOf(\".\"))>-1&&(E=E.replace(\".\",\"\")),(g=E.search(/e/i))>0?(p<0&&(p=g),p+=+E.slice(g+1),E=E.substring(0,g)):p<0&&(p=E.length);}else {if(N(s,2,V.length,\"Base\"),s==10&&te)return h=new S(o),$(h,u+h.e+1,_);if(E=String(o),l=typeof o==\"number\"){if(o*0!=0)return n(h,E,l,s);if(h.s=1/o<0?(E=E.slice(1),-1):1,S.DEBUG&&E.replace(/^0\\.0*|\\./,\"\").length>15)throw Error(fr+o)}else h.s=E.charCodeAt(0)===45?(E=E.slice(1),-1):1;for(c=V.slice(0,s),p=g=0,d=E.length;g<d;g++)if(c.indexOf(m=E.charAt(g))<0){if(m==\".\"){if(g>p){p=d;continue}}else if(!f&&(E==E.toUpperCase()&&(E=E.toLowerCase())||E==E.toLowerCase()&&(E=E.toUpperCase()))){f=true,g=-1,p=0;continue}return n(h,String(o),l,s)}l=false,E=r(E,s,10,h.s),(p=E.indexOf(\".\"))>-1?E=E.replace(\".\",\"\"):p=E.length;}for(g=0;E.charCodeAt(g)===48;g++);for(d=E.length;E.charCodeAt(--d)===48;);if(E=E.slice(g,++d)){if(d-=g,l&&S.DEBUG&&d>15&&(o>ot||o!==z(o)))throw Error(fr+h.s*o);if((p=p-g-1)>C)h.c=h.e=null;else if(p<b)h.c=[h.e=0];else {if(h.e=p,h.c=[],g=(p+1)%w,p<0&&(g+=w),g<d){for(g&&h.c.push(+E.slice(0,g)),d-=w;g<d;)h.c.push(+E.slice(g,g+=w));g=w-(E=E.slice(g)).length;}else g-=d;for(;g--;E+=\"0\");h.c.push(+E);}}else h.c=[h.e=0];}S.clone=dr,S.ROUND_UP=0,S.ROUND_DOWN=1,S.ROUND_CEIL=2,S.ROUND_FLOOR=3,S.ROUND_HALF_UP=4,S.ROUND_HALF_DOWN=5,S.ROUND_HALF_EVEN=6,S.ROUND_HALF_CEIL=7,S.ROUND_HALF_FLOOR=8,S.EUCLID=9,S.config=S.set=function(o){var s,c;if(o!=null)if(typeof o==\"object\"){if(o.hasOwnProperty(s=\"DECIMAL_PLACES\")&&(c=o[s],N(c,0,G,s),u=c),o.hasOwnProperty(s=\"ROUNDING_MODE\")&&(c=o[s],N(c,0,8,s),_=c),o.hasOwnProperty(s=\"EXPONENTIAL_AT\")&&(c=o[s],c&&c.pop?(N(c[0],-G,0,s),N(c[1],0,G,s),R=c[0],y=c[1]):(N(c,-G,G,s),R=-(y=c<0?-c:c))),o.hasOwnProperty(s=\"RANGE\"))if(c=o[s],c&&c.pop)N(c[0],-G,-1,s),N(c[1],1,G,s),b=c[0],C=c[1];else if(N(c,-G,G,s),c)b=-(C=c<0?-c:c);else throw Error(W+s+\" cannot be zero: \"+c);if(o.hasOwnProperty(s=\"CRYPTO\"))if(c=o[s],c===!!c)if(c)if(typeof crypto<\"u\"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))P=c;else throw P=!c,Error(W+\"crypto unavailable\");else P=c;else throw Error(W+s+\" not true or false: \"+c);if(o.hasOwnProperty(s=\"MODULO_MODE\")&&(c=o[s],N(c,0,9,s),O=c),o.hasOwnProperty(s=\"POW_PRECISION\")&&(c=o[s],N(c,0,G,s),L=c),o.hasOwnProperty(s=\"FORMAT\"))if(c=o[s],typeof c==\"object\")q=c;else throw Error(W+s+\" not an object: \"+c);if(o.hasOwnProperty(s=\"ALPHABET\"))if(c=o[s],typeof c==\"string\"&&!/^.?$|[+\\-.\\s]|(.).*\\1/.test(c))te=c.slice(0,10)==\"0123456789\",V=c;else throw Error(W+s+\" invalid: \"+c)}else throw Error(W+\"Object expected: \"+o);return {DECIMAL_PLACES:u,ROUNDING_MODE:_,EXPONENTIAL_AT:[R,y],RANGE:[b,C],CRYPTO:P,MODULO_MODE:O,POW_PRECISION:L,FORMAT:q,ALPHABET:V}},S.isBigNumber=function(o){if(!o||o._isBigNumber!==true)return false;if(!S.DEBUG)return true;var s,c,m=o.c,f=o.e,p=o.s;e:if({}.toString.call(m)==\"[object Array]\"){if((p===1||p===-1)&&f>=-G&&f<=G&&f===z(f)){if(m[0]===0){if(f===0&&m.length===1)return true;break e}if(s=(f+1)%w,s<1&&(s+=w),String(m[0]).length==s){for(s=0;s<m.length;s++)if(c=m[s],c<0||c>=Q||c!==z(c))break e;if(c!==0)return true}}}else if(m===null&&f===null&&(p===null||p===1||p===-1))return true;throw Error(W+\"Invalid BigNumber: \"+o)},S.maximum=S.max=function(){return me(arguments,-1)},S.minimum=S.min=function(){return me(arguments,1)},S.random=function(){var o=9007199254740992,s=Math.random()*o&2097151?function(){return z(Math.random()*o)}:function(){return (Math.random()*1073741824|0)*8388608+(Math.random()*8388608|0)};return function(c){var m,f,p,g,l,d=0,E=[],h=new S(a);if(c==null?c=u:N(c,0,G),g=it(c/w),P)if(crypto.getRandomValues){for(m=crypto.getRandomValues(new Uint32Array(g*=2));d<g;)l=m[d]*131072+(m[d+1]>>>11),l>=9e15?(f=crypto.getRandomValues(new Uint32Array(2)),m[d]=f[0],m[d+1]=f[1]):(E.push(l%1e14),d+=2);d=g/2;}else if(crypto.randomBytes){for(m=crypto.randomBytes(g*=7);d<g;)l=(m[d]&31)*281474976710656+m[d+1]*1099511627776+m[d+2]*4294967296+m[d+3]*16777216+(m[d+4]<<16)+(m[d+5]<<8)+m[d+6],l>=9e15?crypto.randomBytes(7).copy(m,d):(E.push(l%1e14),d+=7);d=g/7;}else throw P=false,Error(W+\"crypto unavailable\");if(!P)for(;d<g;)l=s(),l<9e15&&(E[d++]=l%1e14);for(g=E[--d],c%=w,g&&c&&(l=st[w-c],E[d]=z(g/l)*l);E[d]===0;E.pop(),d--);if(d<0)E=[p=0];else {for(p=-1;E[0]===0;E.splice(0,1),p-=w);for(d=1,l=E[0];l>=10;l/=10,d++);d<w&&(p-=w-d);}return h.e=p,h.c=E,h}}(),S.sum=function(){for(var o=1,s=arguments,c=new S(s[0]);o<s.length;)c=c.plus(s[o++]);return c},r=function(){var o=\"0123456789\";function s(c,m,f,p){for(var g,l=[0],d,E=0,h=c.length;E<h;){for(d=l.length;d--;l[d]*=m);for(l[0]+=p.indexOf(c.charAt(E++)),g=0;g<l.length;g++)l[g]>f-1&&(l[g+1]==null&&(l[g+1]=0),l[g+1]+=l[g]/f|0,l[g]%=f);}return l.reverse()}return function(c,m,f,p,g){var l,d,E,h,I,T,A,B,D=c.indexOf(\".\"),k=u,x=_;for(D>=0&&(h=L,L=0,c=c.replace(\".\",\"\"),B=new S(m),T=B.pow(c.length-D),L=h,B.c=s(ee(Y(T.c),T.e,\"0\"),10,f,o),B.e=B.c.length),A=s(c,m,f,g?(l=V,o):(l=o,V)),E=h=A.length;A[--h]==0;A.pop());if(!A[0])return l.charAt(0);if(D<0?--E:(T.c=A,T.e=E,T.s=p,T=t(T,B,k,x,f),A=T.c,I=T.r,E=T.e),d=E+k+1,D=A[d],h=f/2,I=I||d<0||A[d+1]!=null,I=x<4?(D!=null||I)&&(x==0||x==(T.s<0?3:2)):D>h||D==h&&(x==4||I||x==6&&A[d-1]&1||x==(T.s<0?8:7)),d<1||!A[0])c=I?ee(l.charAt(1),-k,l.charAt(0)):l.charAt(0);else {if(A.length=d,I)for(--f;++A[--d]>f;)A[d]=0,d||(++E,A=[1].concat(A));for(h=A.length;!A[--h];);for(D=0,c=\"\";D<=h;c+=l.charAt(A[D++]));c=ee(c,E,l.charAt(0));}return c}}(),t=function(){function o(m,f,p){var g,l,d,E,h=0,I=m.length,T=f%ne,A=f/ne|0;for(m=m.slice();I--;)d=m[I]%ne,E=m[I]/ne|0,g=A*d+E*T,l=T*d+g%ne*ne+h,h=(l/p|0)+(g/ne|0)+A*E,m[I]=l%p;return h&&(m=[h].concat(m)),m}function s(m,f,p,g){var l,d;if(p!=g)d=p>g?1:-1;else for(l=d=0;l<p;l++)if(m[l]!=f[l]){d=m[l]>f[l]?1:-1;break}return d}function c(m,f,p,g){for(var l=0;p--;)m[p]-=l,l=m[p]<f[p]?1:0,m[p]=l*g+m[p]-f[p];for(;!m[0]&&m.length>1;m.splice(0,1));}return function(m,f,p,g,l){var d,E,h,I,T,A,B,D,k,x,U,H,Ae,Je,Qe,X,Ee,K=m.s==f.s?1:-1,j=m.c,M=f.c;if(!j||!j[0]||!M||!M[0])return new S(!m.s||!f.s||(j?M&&j[0]==M[0]:!M)?NaN:j&&j[0]==0||!M?K*0:K/0);for(D=new S(K),k=D.c=[],E=m.e-f.e,K=p+E+1,l||(l=Q,E=J(m.e/w)-J(f.e/w),K=K/w|0),h=0;M[h]==(j[h]||0);h++);if(M[h]>(j[h]||0)&&E--,K<0)k.push(1),I=true;else {for(Je=j.length,X=M.length,h=0,K+=2,T=z(l/(M[0]+1)),T>1&&(M=o(M,T,l),j=o(j,T,l),X=M.length,Je=j.length),Ae=X,x=j.slice(0,X),U=x.length;U<X;x[U++]=0);Ee=M.slice(),Ee=[0].concat(Ee),Qe=M[0],M[1]>=l/2&&Qe++;do{if(T=0,d=s(M,x,X,U),d<0){if(H=x[0],X!=U&&(H=H*l+(x[1]||0)),T=z(H/Qe),T>1)for(T>=l&&(T=l-1),A=o(M,T,l),B=A.length,U=x.length;s(A,x,B,U)==1;)T--,c(A,X<B?Ee:M,B,l),B=A.length,d=1;else T==0&&(d=T=1),A=M.slice(),B=A.length;if(B<U&&(A=[0].concat(A)),c(x,A,U,l),U=x.length,d==-1)for(;s(M,x,X,U)<1;)T++,c(x,X<U?Ee:M,U,l),U=x.length;}else d===0&&(T++,x=[0]);k[h++]=T,x[0]?x[U++]=j[Ae]||0:(x=[j[Ae]],U=1);}while((Ae++<Je||x[0]!=null)&&K--);I=x[0]!=null,k[0]||k.splice(0,1);}if(l==Q){for(h=1,K=k[0];K>=10;K/=10,h++);$(D,p+(D.e=h+E*w-1)+1,g,I);}else D.e=E,D.r=+I;return D}}();function re(o,s,c,m){var f,p,g,l,d;if(c==null?c=_:N(c,0,8),!o.c)return o.toString();if(f=o.c[0],g=o.e,s==null)d=Y(o.c),d=m==1||m==2&&(g<=R||g>=y)?Be(d,g):ee(d,g,\"0\");else if(o=$(new S(o),s,c),p=o.e,d=Y(o.c),l=d.length,m==1||m==2&&(s<=p||p<=R)){for(;l<s;d+=\"0\",l++);d=Be(d,p);}else if(s-=g+(m===2&&p>g),d=ee(d,p,\"0\"),p+1>l){if(--s>0)for(d+=\".\";s--;d+=\"0\");}else if(s+=p-l,s>0)for(p+1==l&&(d+=\".\");s--;d+=\"0\");return o.s<0&&f?\"-\"+d:d}function me(o,s){for(var c,m,f=1,p=new S(o[0]);f<o.length;f++)m=new S(o[f]),(!m.s||(c=ae(p,m))===s||c===0&&p.s===s)&&(p=m);return p}function ue(o,s,c){for(var m=1,f=s.length;!s[--f];s.pop());for(f=s[0];f>=10;f/=10,m++);return (c=m+c*w-1)>C?o.c=o.e=null:c<b?o.c=[o.e=0]:(o.e=c,o.c=s),o}n=function(){var o=/^(-?)0([xbo])(?=\\w[\\w.]*$)/i,s=/^([^.]+)\\.$/,c=/^\\.([^.]+)$/,m=/^-?(Infinity|NaN)$/,f=/^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;return function(p,g,l,d){var E,h=l?g:g.replace(f,\"\");if(m.test(h))p.s=isNaN(h)?null:h<0?-1:1;else {if(!l&&(h=h.replace(o,function(I,T,A){return E=(A=A.toLowerCase())==\"x\"?16:A==\"b\"?2:8,!d||d==E?T:I}),d&&(E=d,h=h.replace(s,\"$1\").replace(c,\"0.$1\")),g!=h))return new S(h,E);if(S.DEBUG)throw Error(W+\"Not a\"+(d?\" base \"+d:\"\")+\" number: \"+g);p.s=null;}p.c=p.e=null;}}();function $(o,s,c,m){var f,p,g,l,d,E,h,I=o.c,T=st;if(I){e:{for(f=1,l=I[0];l>=10;l/=10,f++);if(p=s-f,p<0)p+=w,g=s,d=I[E=0],h=z(d/T[f-g-1]%10);else if(E=it((p+1)/w),E>=I.length)if(m){for(;I.length<=E;I.push(0));d=h=0,f=1,p%=w,g=p-w+1;}else break e;else {for(d=l=I[E],f=1;l>=10;l/=10,f++);p%=w,g=p-w+f,h=g<0?0:z(d/T[f-g-1]%10);}if(m=m||s<0||I[E+1]!=null||(g<0?d:d%T[f-g-1]),m=c<4?(h||m)&&(c==0||c==(o.s<0?3:2)):h>5||h==5&&(c==4||m||c==6&&(p>0?g>0?d/T[f-g]:0:I[E-1])%10&1||c==(o.s<0?8:7)),s<1||!I[0])return I.length=0,m?(s-=o.e+1,I[0]=T[(w-s%w)%w],o.e=-s||0):I[0]=o.e=0,o;if(p==0?(I.length=E,l=1,E--):(I.length=E+1,l=T[w-p],I[E]=g>0?z(d/T[f-g]%T[g])*l:0),m)for(;;)if(E==0){for(p=1,g=I[0];g>=10;g/=10,p++);for(g=I[0]+=l,l=1;g>=10;g/=10,l++);p!=l&&(o.e++,I[0]==Q&&(I[0]=1));break}else {if(I[E]+=l,I[E]!=Q)break;I[E--]=0,l=1;}for(p=I.length;I[--p]===0;I.pop());}o.e>C?o.c=o.e=null:o.e<b&&(o.c=[o.e=0]);}return o}function v(o){var s,c=o.e;return c===null?o.toString():(s=Y(o.c),s=c<=R||c>=y?Be(s,c):ee(s,c,\"0\"),o.s<0?\"-\"+s:s)}return i.absoluteValue=i.abs=function(){var o=new S(this);return o.s<0&&(o.s=1),o},i.comparedTo=function(o,s){return ae(this,new S(o,s))},i.decimalPlaces=i.dp=function(o,s){var c,m,f,p=this;if(o!=null)return N(o,0,G),s==null?s=_:N(s,0,8),$(new S(p),o+p.e+1,s);if(!(c=p.c))return null;if(m=((f=c.length-1)-J(this.e/w))*w,f=c[f])for(;f%10==0;f/=10,m--);return m<0&&(m=0),m},i.dividedBy=i.div=function(o,s){return t(this,new S(o,s),u,_)},i.dividedToIntegerBy=i.idiv=function(o,s){return t(this,new S(o,s),0,1)},i.exponentiatedBy=i.pow=function(o,s){var c,m,f,p,g,l,d,E,h,I=this;if(o=new S(o),o.c&&!o.isInteger())throw Error(W+\"Exponent not an integer: \"+v(o));if(s!=null&&(s=new S(s)),l=o.e>14,!I.c||!I.c[0]||I.c[0]==1&&!I.e&&I.c.length==1||!o.c||!o.c[0])return h=new S(Math.pow(+v(I),l?o.s*(2-xe(o)):+v(o))),s?h.mod(s):h;if(d=o.s<0,s){if(s.c?!s.c[0]:!s.s)return new S(NaN);m=!d&&I.isInteger()&&s.isInteger(),m&&(I=I.mod(s));}else {if(o.e>9&&(I.e>0||I.e<-1||(I.e==0?I.c[0]>1||l&&I.c[1]>=24e7:I.c[0]<8e13||l&&I.c[0]<=9999975e7)))return p=I.s<0&&xe(o)?-0:0,I.e>-1&&(p=1/p),new S(d?1/p:p);L&&(p=it(L/w+2));}for(l?(c=new S(.5),d&&(o.s=1),E=xe(o)):(f=Math.abs(+v(o)),E=f%2),h=new S(a);;){if(E){if(h=h.times(I),!h.c)break;p?h.c.length>p&&(h.c.length=p):m&&(h=h.mod(s));}if(f){if(f=z(f/2),f===0)break;E=f%2;}else if(o=o.times(c),$(o,o.e+1,1),o.e>14)E=xe(o);else {if(f=+v(o),f===0)break;E=f%2;}I=I.times(I),p?I.c&&I.c.length>p&&(I.c.length=p):m&&(I=I.mod(s));}return m?h:(d&&(h=a.div(h)),s?h.mod(s):p?$(h,L,_,g):h)},i.integerValue=function(o){var s=new S(this);return o==null?o=_:N(o,0,8),$(s,s.e+1,o)},i.isEqualTo=i.eq=function(o,s){return ae(this,new S(o,s))===0},i.isFinite=function(){return !!this.c},i.isGreaterThan=i.gt=function(o,s){return ae(this,new S(o,s))>0},i.isGreaterThanOrEqualTo=i.gte=function(o,s){return (s=ae(this,new S(o,s)))===1||s===0},i.isInteger=function(){return !!this.c&&J(this.e/w)>this.c.length-2},i.isLessThan=i.lt=function(o,s){return ae(this,new S(o,s))<0},i.isLessThanOrEqualTo=i.lte=function(o,s){return (s=ae(this,new S(o,s)))===-1||s===0},i.isNaN=function(){return !this.s},i.isNegative=function(){return this.s<0},i.isPositive=function(){return this.s>0},i.isZero=function(){return !!this.c&&this.c[0]==0},i.minus=function(o,s){var c,m,f,p,g=this,l=g.s;if(o=new S(o,s),s=o.s,!l||!s)return new S(NaN);if(l!=s)return o.s=-s,g.plus(o);var d=g.e/w,E=o.e/w,h=g.c,I=o.c;if(!d||!E){if(!h||!I)return h?(o.s=-s,o):new S(I?g:NaN);if(!h[0]||!I[0])return I[0]?(o.s=-s,o):new S(h[0]?g:_==3?-0:0)}if(d=J(d),E=J(E),h=h.slice(),l=d-E){for((p=l<0)?(l=-l,f=h):(E=d,f=I),f.reverse(),s=l;s--;f.push(0));f.reverse();}else for(m=(p=(l=h.length)<(s=I.length))?l:s,l=s=0;s<m;s++)if(h[s]!=I[s]){p=h[s]<I[s];break}if(p&&(f=h,h=I,I=f,o.s=-o.s),s=(m=I.length)-(c=h.length),s>0)for(;s--;h[c++]=0);for(s=Q-1;m>l;){if(h[--m]<I[m]){for(c=m;c&&!h[--c];h[c]=s);--h[c],h[m]+=Q;}h[m]-=I[m];}for(;h[0]==0;h.splice(0,1),--E);return h[0]?ue(o,h,E):(o.s=_==3?-1:1,o.c=[o.e=0],o)},i.modulo=i.mod=function(o,s){var c,m,f=this;return o=new S(o,s),!f.c||!o.s||o.c&&!o.c[0]?new S(NaN):!o.c||f.c&&!f.c[0]?new S(f):(O==9?(m=o.s,o.s=1,c=t(f,o,0,3),o.s=m,c.s*=m):c=t(f,o,0,O),o=f.minus(c.times(o)),!o.c[0]&&O==1&&(o.s=f.s),o)},i.multipliedBy=i.times=function(o,s){var c,m,f,p,g,l,d,E,h,I,T,A,B,D,k,x=this,U=x.c,H=(o=new S(o,s)).c;if(!U||!H||!U[0]||!H[0])return !x.s||!o.s||U&&!U[0]&&!H||H&&!H[0]&&!U?o.c=o.e=o.s=null:(o.s*=x.s,!U||!H?o.c=o.e=null:(o.c=[0],o.e=0)),o;for(m=J(x.e/w)+J(o.e/w),o.s*=x.s,d=U.length,I=H.length,d<I&&(B=U,U=H,H=B,f=d,d=I,I=f),f=d+I,B=[];f--;B.push(0));for(D=Q,k=ne,f=I;--f>=0;){for(c=0,T=H[f]%k,A=H[f]/k|0,g=d,p=f+g;p>f;)E=U[--g]%k,h=U[g]/k|0,l=A*E+h*T,E=T*E+l%k*k+B[p]+c,c=(E/D|0)+(l/k|0)+A*h,B[p--]=E%D;B[p]=c;}return c?++m:B.splice(0,1),ue(o,B,m)},i.negated=function(){var o=new S(this);return o.s=-o.s||null,o},i.plus=function(o,s){var c,m=this,f=m.s;if(o=new S(o,s),s=o.s,!f||!s)return new S(NaN);if(f!=s)return o.s=-s,m.minus(o);var p=m.e/w,g=o.e/w,l=m.c,d=o.c;if(!p||!g){if(!l||!d)return new S(f/0);if(!l[0]||!d[0])return d[0]?o:new S(l[0]?m:f*0)}if(p=J(p),g=J(g),l=l.slice(),f=p-g){for(f>0?(g=p,c=d):(f=-f,c=l),c.reverse();f--;c.push(0));c.reverse();}for(f=l.length,s=d.length,f-s<0&&(c=d,d=l,l=c,s=f),f=0;s;)f=(l[--s]=l[s]+d[s]+f)/Q|0,l[s]=Q===l[s]?0:l[s]%Q;return f&&(l=[f].concat(l),++g),ue(o,l,g)},i.precision=i.sd=function(o,s){var c,m,f,p=this;if(o!=null&&o!==!!o)return N(o,1,G),s==null?s=_:N(s,0,8),$(new S(p),o,s);if(!(c=p.c))return null;if(f=c.length-1,m=f*w+1,f=c[f]){for(;f%10==0;f/=10,m--);for(f=c[0];f>=10;f/=10,m++);}return o&&p.e+1>m&&(m=p.e+1),m},i.shiftedBy=function(o){return N(o,-ot,ot),this.times(\"1e\"+o)},i.squareRoot=i.sqrt=function(){var o,s,c,m,f,p=this,g=p.c,l=p.s,d=p.e,E=u+4,h=new S(\"0.5\");if(l!==1||!g||!g[0])return new S(!l||l<0&&(!g||g[0])?NaN:g?p:1/0);if(l=Math.sqrt(+v(p)),l==0||l==1/0?(s=Y(g),(s.length+d)%2==0&&(s+=\"0\"),l=Math.sqrt(+s),d=J((d+1)/2)-(d<0||d%2),l==1/0?s=\"5e\"+d:(s=l.toExponential(),s=s.slice(0,s.indexOf(\"e\")+1)+d),c=new S(s)):c=new S(l+\"\"),c.c[0]){for(d=c.e,l=d+E,l<3&&(l=0);;)if(f=c,c=h.times(f.plus(t(p,f,E,1))),Y(f.c).slice(0,l)===(s=Y(c.c)).slice(0,l))if(c.e<d&&--l,s=s.slice(l-3,l+1),s==\"9999\"||!m&&s==\"4999\"){if(!m&&($(f,f.e+u+2,0),f.times(f).eq(p))){c=f;break}E+=4,l+=4,m=1;}else {(!+s||!+s.slice(1)&&s.charAt(0)==\"5\")&&($(c,c.e+u+2,1),o=!c.times(c).eq(p));break}}return $(c,c.e+u+1,_,o)},i.toExponential=function(o,s){return o!=null&&(N(o,0,G),o++),re(this,o,s,1)},i.toFixed=function(o,s){return o!=null&&(N(o,0,G),o=o+this.e+1),re(this,o,s)},i.toFormat=function(o,s,c){var m,f=this;if(c==null)o!=null&&s&&typeof s==\"object\"?(c=s,s=null):o&&typeof o==\"object\"?(c=o,o=s=null):c=q;else if(typeof c!=\"object\")throw Error(W+\"Argument not an object: \"+c);if(m=f.toFixed(o,s),f.c){var p,g=m.split(\".\"),l=+c.groupSize,d=+c.secondaryGroupSize,E=c.groupSeparator||\"\",h=g[0],I=g[1],T=f.s<0,A=T?h.slice(1):h,B=A.length;if(d&&(p=l,l=d,d=p,B-=p),l>0&&B>0){for(p=B%l||l,h=A.substr(0,p);p<B;p+=l)h+=E+A.substr(p,l);d>0&&(h+=E+A.slice(p)),T&&(h=\"-\"+h);}m=I?h+(c.decimalSeparator||\"\")+((d=+c.fractionGroupSize)?I.replace(new RegExp(\"\\\\d{\"+d+\"}\\\\B\",\"g\"),\"$&\"+(c.fractionGroupSeparator||\"\")):I):h;}return (c.prefix||\"\")+m+(c.suffix||\"\")},i.toFraction=function(o){var s,c,m,f,p,g,l,d,E,h,I,T,A=this,B=A.c;if(o!=null&&(l=new S(o),!l.isInteger()&&(l.c||l.s!==1)||l.lt(a)))throw Error(W+\"Argument \"+(l.isInteger()?\"out of range: \":\"not an integer: \")+v(l));if(!B)return new S(A);for(s=new S(a),E=c=new S(a),m=d=new S(a),T=Y(B),p=s.e=T.length-A.e-1,s.c[0]=st[(g=p%w)<0?w+g:g],o=!o||l.comparedTo(s)>0?p>0?s:E:l,g=C,C=1/0,l=new S(T),d.c[0]=0;h=t(l,s,0,1),f=c.plus(h.times(m)),f.comparedTo(o)!=1;)c=m,m=f,E=d.plus(h.times(f=E)),d=f,s=l.minus(h.times(f=s)),l=f;return f=t(o.minus(c),m,0,1),d=d.plus(f.times(E)),c=c.plus(f.times(m)),d.s=E.s=A.s,p=p*2,I=t(E,m,p,_).minus(A).abs().comparedTo(t(d,c,p,_).minus(A).abs())<1?[E,m]:[d,c],C=g,I},i.toNumber=function(){return +v(this)},i.toPrecision=function(o,s){return o!=null&&N(o,1,G),re(this,o,s,2)},i.toString=function(o){var s,c=this,m=c.s,f=c.e;return f===null?m?(s=\"Infinity\",m<0&&(s=\"-\"+s)):s=\"NaN\":(o==null?s=f<=R||f>=y?Be(Y(c.c),f):ee(Y(c.c),f,\"0\"):o===10&&te?(c=$(new S(c),u+f+1,_),s=ee(Y(c.c),c.e,\"0\")):(N(o,2,V.length,\"Base\"),s=r(ee(Y(c.c),f,\"0\"),10,o,m,true)),m<0&&c.c[0]&&(s=\"-\"+s)),s},i.valueOf=i.toJSON=function(){return v(this)},i._isBigNumber=true,i[Symbol.toStringTag]=\"BigNumber\",i[Symbol.for(\"nodejs.util.inspect.custom\")]=i.valueOf,e!=null&&S.set(e),S}function J(e){var t=e|0;return e>0||e===t?t:t-1}function Y(e){for(var t,r,n=1,i=e.length,a=e[0]+\"\";n<i;){for(t=e[n++]+\"\",r=w-t.length;r--;t=\"0\"+t);a+=t;}for(i=a.length;a.charCodeAt(--i)===48;);return a.slice(0,i+1||1)}function ae(e,t){var r,n,i=e.c,a=t.c,u=e.s,_=t.s,R=e.e,y=t.e;if(!u||!_)return null;if(r=i&&!i[0],n=a&&!a[0],r||n)return r?n?0:-_:u;if(u!=_)return u;if(r=u<0,n=R==y,!i||!a)return n?0:!i^r?1:-1;if(!n)return R>y^r?1:-1;for(_=(R=i.length)<(y=a.length)?R:y,u=0;u<_;u++)if(i[u]!=a[u])return i[u]>a[u]^r?1:-1;return R==y?0:R>y^r?1:-1}function N(e,t,r,n){if(e<t||e>r||e!==z(e))throw Error(W+(n||\"Argument\")+(typeof e==\"number\"?e<t||e>r?\" out of range: \":\" not an integer: \":\" not a primitive number: \")+String(e))}function xe(e){var t=e.c.length-1;return J(e.e/w)==t&&e.c[t]%2!=0}function Be(e,t){return (e.length>1?e.charAt(0)+\".\"+e.slice(1):e)+(t<0?\"e\":\"e+\")+t}function ee(e,t,r){var n,i;if(t<0){for(i=r+\".\";++t;i+=r);e=i+e;}else if(n=e.length,++t>n){for(i=r,t-=n;--t;i+=r);e+=i;}else t<n&&(e=e.slice(0,t)+\".\"+e.slice(t));return e}var fo=dr(),pr=fo;var po=24,_e=32,ho=()=>typeof globalThis<\"u\"&&globalThis.crypto&&typeof globalThis.crypto.getRandomValues==\"function\"?()=>{let e=new Uint32Array(1);return globalThis.crypto.getRandomValues(e),e[0]/4294967296}:Math.random,ct=ho(),at=(e=4,t=ct)=>{let r=\"\";for(;r.length<e;)r=r+Math.floor(t()*36).toString(36);return r};function mo(e){let t=new pr(0);for(let r of e.values())t=t.multipliedBy(256).plus(r);return t}var mr=(e=\"\")=>{let t=new TextEncoder;return mo(lr(t.encode(e))).toString(36).slice(1)},hr=Array.from({length:26},(e,t)=>String.fromCharCode(t+97)),Eo=e=>hr[Math.floor(e()*hr.length)],go=({globalObj:e=typeof global<\"u\"?global:typeof window<\"u\"?window:{},random:t=ct}={})=>{let r=Object.keys(e).toString(),n=r.length?r+at(_e,t):at(_e,t);return mr(n).substring(0,_e)},_o=e=>()=>e++,Io=476782367,Er=({random:e=ct,counter:t=_o(Math.floor(e()*Io)),length:r=po,fingerprint:n=go({random:e})}={})=>{if(r>_e)throw new Error(`Length must be between 2 and ${_e}. Received: ${r}`);return function(){let a=Eo(e),u=Date.now().toString(36),_=t().toString(36),R=at(r,e),y=`${u+R+_+n}`;return `${a+mr(y).substring(1,r)}`}},le=So(Er);function So(e){let t;return ()=>(t||(t=e()),t())}var ut={AUTHENTICATION_FAILED:1008},Ue=class{socket;url;apiKey;projectId;maxBufferSize;reconnectDelay;maxReconnectAttempts;onMessage;onError;buffer=[];reconnectAttempts=0;reconnectTimer;isManualClose=false;isAuthenticated=false;authenticationFailed=false;constructor({apiKey:t,maxBufferSize:r=1e3,maxReconnectAttempts:n=3,onError:i,onMessage:a,projectId:u,reconnectDelay:_=2e3,url:R}){this.url=R,this.apiKey=t,this.projectId=u,this.maxBufferSize=r,this.reconnectDelay=_,this.maxReconnectAttempts=n,this.onMessage=a,this.onError=i,this.connect();}connect(){try{let t={Authorization:this.apiKey??\"\",\"x-project-id\":this.projectId??\"\"};this.socket=new Ie(this.url,{headers:t}),this.socket.on(\"open\",()=>{this.reconnectAttempts=0;}),this.socket.on(\"message\",r=>{try{let n=typeof r==\"string\"?r:r.toString(),i=JSON.parse(n);i.type===\"connected\"?(this.isAuthenticated=!0,this.authenticationFailed=!1,this.flushBuffer()):this.onMessage&&this.onMessage(i);}catch{}}),this.socket.on(\"close\",(r,n)=>{this.isAuthenticated=!1,r===ut.AUTHENTICATION_FAILED&&(this.authenticationFailed=!0,this.onError&&this.onError({code:r,message:n.toString()||\"Authentication failed\",reason:n.toString()})),!this.isManualClose&&!this.authenticationFailed&&this.reconnectAttempts<this.maxReconnectAttempts&&this.scheduleReconnect();}),this.socket.on(\"error\",()=>{});}catch{this.scheduleReconnect();}}scheduleReconnect(){this.reconnectTimer&&clearTimeout(this.reconnectTimer),this.reconnectAttempts++,this.reconnectTimer=setTimeout(()=>{this.connect();},this.reconnectDelay);}flushBuffer(){if(this.buffer.length===0||!this.socket||this.socket.readyState!==Ie.OPEN)return;let t=[...this.buffer];this.buffer=[];for(let r of t)try{let n=JSON.stringify(r);this.socket.send(n,i=>{i&&this.bufferEvent(r);});}catch{this.bufferEvent(r);}}bufferEvent(t){this.buffer.length>=this.maxBufferSize&&this.buffer.shift(),this.buffer.push(t);}async sendEvent(t){if(!this.socket||this.socket.readyState!==Ie.OPEN||!this.isAuthenticated){this.bufferEvent(t),this.socket?.readyState===Ie.CLOSED&&this.reconnectAttempts<this.maxReconnectAttempts&&this.scheduleReconnect();return}try{let r=JSON.stringify(t);this.socket.send(r,n=>{n&&this.bufferEvent(t);});}catch(r){throw this.bufferEvent(t),r}}close(){this.isManualClose=true,this.reconnectTimer&&clearTimeout(this.reconnectTimer),this.socket&&(this.socket.close(),this.socket=void 0);}get isConnected(){return this.socket?.readyState===Ie.OPEN&&this.isAuthenticated}get bufferedEventCount(){return this.buffer.length}getBufferedEvents(){return [...this.buffer]}};var gr={detect({env:e}){return !!e.APPVEYOR},configuration({env:e}){let t=e.APPVEYOR_PULL_REQUEST_NUMBER,r=!!t;return {name:\"Appveyor\",service:\"appveyor\",commit:e.APPVEYOR_REPO_COMMIT,tag:e.APPVEYOR_REPO_TAG_NAME,build:e.APPVEYOR_BUILD_NUMBER,buildUrl:`https://ci.appveyor.com/project/${e.APPVEYOR_PROJECT_SLUG}/build/${e.APPVEYOR_BUILD_VERSION}`,branch:e.APPVEYOR_REPO_BRANCH,job:e.APPVEYOR_JOB_NUMBER,jobUrl:`https://ci.appveyor.com/project/${e.APPVEYOR_PROJECT_SLUG}/build/job/${e.APPVEYOR_JOB_ID}`,pr:t,isPr:r,prBranch:e.APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH,slug:e.APPVEYOR_REPO_NAME,root:e.APPVEYOR_BUILD_FOLDER}}};function Pe(e){return (/\\d+(?!.*\\d+)/.exec(e)||[])[0]}function ie(e){return e?/^(?:refs\\/heads\\/)?(?<branch>.+)$/i.exec(e)[1]:void 0}var _r={detect({env:e}){return !!e.BUILD_BUILDURI},configuration({env:e}){let t=e.SYSTEM_PULLREQUEST_PULLREQUESTID,r=!!t;return {name:\"Azure Pipelines\",service:\"azurePipelines\",commit:e.BUILD_SOURCEVERSION,build:e.BUILD_BUILDNUMBER,branch:ie(r?e.SYSTEM_PULLREQUEST_TARGETBRANCH:e.BUILD_SOURCEBRANCH),pr:t,isPr:r,prBranch:ie(r?e.SYSTEM_PULLREQUEST_SOURCEBRANCH:void 0),root:e.BUILD_REPOSITORY_LOCALPATH}}};var Ir={detect({env:e}){return !!e.bamboo_agentId},configuration({env:e}){return {name:\"Bamboo\",service:\"bamboo\",commit:e.bamboo_planRepository_1_revision,build:e.bamboo_buildNumber,buildUrl:e.bamboo_buildResultsUrl,branch:e.bamboo_planRepository_1_branchName,job:e.bamboo_buildKey,root:e.bamboo_build_working_directory}}};var Sr={detect({env:e}){return !!e.BITBUCKET_BUILD_NUMBER},configuration({env:e}){return {name:\"Bitbucket Pipelines\",service:\"bitbucket\",commit:e.BITBUCKET_COMMIT,tag:e.BITBUCKET_TAG,build:e.BITBUCKET_BUILD_NUMBER,buildUrl:`https://bitbucket.org/${e.BITBUCKET_REPO_FULL_NAME}/addon/pipelines/home#!/results/${e.BITBUCKET_BUILD_NUMBER}`,branch:e.BITBUCKET_BRANCH,slug:e.BITBUCKET_REPO_FULL_NAME,root:e.BITBUCKET_CLONE_DIR}}};var Rr={detect({env:e}){return !!e.BITRISE_IO},configuration({env:e}){let t=e.BITRISE_PULL_REQUEST===\"false\"?void 0:e.BITRISE_PULL_REQUEST,r=!!t;return {name:\"Bitrise\",service:\"bitrise\",commit:e.BITRISE_GIT_COMMIT,tag:e.BITRISE_GIT_TAG,build:e.BITRISE_BUILD_NUMBER,buildUrl:e.BITRISE_BUILD_URL,branch:r?e.BITRISEIO_GIT_BRANCH_DEST:e.BITRISE_GIT_BRANCH,pr:t,isPr:r,prBranch:r?e.BITRISE_GIT_BRANCH:void 0,slug:e.BITRISE_APP_SLUG}}};var yr={detect({env:e}){return !!e.BUDDY_WORKSPACE_ID},configuration({env:e}){let t=Pe(e.BUDDY_EXECUTION_PULL_REQUEST_ID),r=!!t;return {name:\"Buddy\",service:\"buddy\",commit:e.BUDDY_EXECUTION_REVISION,tag:e.BUDDY_EXECUTION_TAG,build:e.BUDDY_EXECUTION_ID,buildUrl:e.BUDDY_EXECUTION_URL,branch:r?e.BUDDY_EXECUTION_PULL_REQUEST_HEAD_BRANCH:e.BUDDY_EXECUTION_BRANCH,pr:t,isPr:r,slug:e.BUDDY_REPO_SLUG}}};var Xn=Xe(fn());function It(e){let t=typeof e==\"string\"?`\n`:10,r=typeof e==\"string\"?\"\\r\":13;return e[e.length-1]===t&&(e=e.slice(0,-1)),e[e.length-1]===r&&(e=e.slice(0,-1)),e}function Le(e={}){let{env:t=process.env,platform:r=process.platform}=e;return r!==\"win32\"?\"PATH\":Object.keys(t).reverse().find(n=>n.toUpperCase()===\"PATH\")||\"Path\"}var Ko=({cwd:e=Ne.cwd(),path:t=Ne.env[Le()],preferLocal:r=true,execPath:n=Ne.execPath,addExecPath:i=true}={})=>{let a=e instanceof URL?fileURLToPath(e):e,u=Se.resolve(a),_=[];return r&&Yo(_,u),i&&zo(_,n,u),[..._,t].join(Se.delimiter)},Yo=(e,t)=>{let r;for(;r!==t;)e.push(Se.join(t,\"node_modules/.bin\")),r=t,t=Se.resolve(t,\"..\");},zo=(e,t,r)=>{let n=t instanceof URL?fileURLToPath(t):t;e.push(Se.resolve(r,n,\"..\"));},pn=({env:e=Ne.env,...t}={})=>{e={...e};let r=Le({env:e});return t.path=e[r],e[r]=Ko(t),e};var En=()=>{let e=_n-gn+1;return Array.from({length:e},ns)},ns=(e,t)=>({name:`SIGRT${t+1}`,number:gn+t,action:\"terminate\",description:\"Application-specific signal (realtime)\",standard:\"posix\"}),gn=34,_n=64;var In=[{name:\"SIGHUP\",number:1,action:\"terminate\",description:\"Terminal closed\",standard:\"posix\"},{name:\"SIGINT\",number:2,action:\"terminate\",description:\"User interruption with CTRL-C\",standard:\"ansi\"},{name:\"SIGQUIT\",number:3,action:\"core\",description:\"User interruption with CTRL-\\\\\",standard:\"posix\"},{name:\"SIGILL\",number:4,action:\"core\",description:\"Invalid machine instruction\",standard:\"ansi\"},{name:\"SIGTRAP\",number:5,action:\"core\",description:\"Debugger breakpoint\",standard:\"posix\"},{name:\"SIGABRT\",number:6,action:\"core\",description:\"Aborted\",standard:\"ansi\"},{name:\"SIGIOT\",number:6,action:\"core\",description:\"Aborted\",standard:\"bsd\"},{name:\"SIGBUS\",number:7,action:\"core\",description:\"Bus error due to misaligned, non-existing address or paging error\",standard:\"bsd\"},{name:\"SIGEMT\",number:7,action:\"terminate\",description:\"Command should be emulated but is not implemented\",standard:\"other\"},{name:\"SIGFPE\",number:8,action:\"core\",description:\"Floating point arithmetic error\",standard:\"ansi\"},{name:\"SIGKILL\",number:9,action:\"terminate\",description:\"Forced termination\",standard:\"posix\",forced:true},{name:\"SIGUSR1\",number:10,action:\"terminate\",description:\"Application-specific signal\",standard:\"posix\"},{name:\"SIGSEGV\",number:11,action:\"core\",description:\"Segmentation fault\",standard:\"ansi\"},{name:\"SIGUSR2\",number:12,action:\"terminate\",description:\"Application-specific signal\",standard:\"posix\"},{name:\"SIGPIPE\",number:13,action:\"terminate\",description:\"Broken pipe or socket\",standard:\"posix\"},{name:\"SIGALRM\",number:14,action:\"terminate\",description:\"Timeout or timer\",standard:\"posix\"},{name:\"SIGTERM\",number:15,action:\"terminate\",description:\"Termination\",standard:\"ansi\"},{name:\"SIGSTKFLT\",number:16,action:\"terminate\",description:\"Stack is empty or overflowed\",standard:\"other\"},{name:\"SIGCHLD\",number:17,action:\"ignore\",description:\"Child process terminated, paused or unpaused\",standard:\"posix\"},{name:\"SIGCLD\",number:17,action:\"ignore\",description:\"Child process terminated, paused or unpaused\",standard:\"other\"},{name:\"SIGCONT\",number:18,action:\"unpause\",description:\"Unpaused\",standard:\"posix\",forced:true},{name:\"SIGSTOP\",number:19,action:\"pause\",description:\"Paused\",standard:\"posix\",forced:true},{name:\"SIGTSTP\",number:20,action:\"pause\",description:'Paused using CTRL-Z or \"suspend\"',standard:\"posix\"},{name:\"SIGTTIN\",number:21,action:\"pause\",description:\"Background process cannot read terminal input\",standard:\"posix\"},{name:\"SIGBREAK\",number:21,action:\"terminate\",description:\"User interruption with CTRL-BREAK\",standard:\"other\"},{name:\"SIGTTOU\",number:22,action:\"pause\",description:\"Background process cannot write to terminal output\",standard:\"posix\"},{name:\"SIGURG\",number:23,action:\"ignore\",description:\"Socket received out-of-band data\",standard:\"bsd\"},{name:\"SIGXCPU\",number:24,action:\"core\",description:\"Process timed out\",standard:\"bsd\"},{name:\"SIGXFSZ\",number:25,action:\"core\",description:\"File too big\",standard:\"bsd\"},{name:\"SIGVTALRM\",number:26,action:\"terminate\",description:\"Timeout or timer\",standard:\"bsd\"},{name:\"SIGPROF\",number:27,action:\"terminate\",description:\"Timeout or timer\",standard:\"bsd\"},{name:\"SIGWINCH\",number:28,action:\"ignore\",description:\"Terminal window size changed\",standard:\"bsd\"},{name:\"SIGIO\",number:29,action:\"terminate\",description:\"I/O is available\",standard:\"other\"},{name:\"SIGPOLL\",number:29,action:\"terminate\",description:\"Watched event\",standard:\"other\"},{name:\"SIGINFO\",number:29,action:\"ignore\",description:\"Request for process information\",standard:\"other\"},{name:\"SIGPWR\",number:30,action:\"terminate\",description:\"Device running out of power\",standard:\"systemv\"},{name:\"SIGSYS\",number:31,action:\"core\",description:\"Invalid system call\",standard:\"other\"},{name:\"SIGUNUSED\",number:31,action:\"terminate\",description:\"Invalid system call\",standard:\"other\"}];var Rt=()=>{let e=En();return [...In,...e].map(os)},os=({name:e,number:t,description:r,action:n,forced:i=false,standard:a})=>{let{signals:{[e]:u}}=constants,_=u!==void 0;return {name:e,number:_?u:t,description:r,supported:_,action:n,forced:i,standard:a}};var as=()=>{let e=Rt();return Object.fromEntries(e.map(cs))},cs=({name:e,number:t,description:r,supported:n,action:i,forced:a,standard:u})=>[e,{name:e,number:t,description:r,supported:n,action:i,forced:a,standard:u}],Sn=as(),us=()=>{let e=Rt(),t=65,r=Array.from({length:t},(n,i)=>ls(i,e));return Object.assign({},...r)},ls=(e,t)=>{let r=fs(e,t);if(r===void 0)return {};let{name:n,description:i,supported:a,action:u,forced:_,standard:R}=r;return {[e]:{name:n,number:e,description:i,supported:a,action:u,forced:_,standard:R}}},fs=(e,t)=>{let r=t.find(({name:n})=>constants.signals[n]===e);return r!==void 0?r:t.find(n=>n.number===e)};us();var ps=({timedOut:e,timeout:t,errorCode:r,signal:n,signalDescription:i,exitCode:a,isCanceled:u})=>e?`timed out after ${t} milliseconds`:u?\"was canceled\":r!==void 0?`failed with ${r}`:n!==void 0?`was killed with ${n} (${i})`:a!==void 0?`failed with exit code ${a}`:\"failed\",Re=({stdout:e,stderr:t,all:r,error:n,signal:i,exitCode:a,command:u,escapedCommand:_,timedOut:R,isCanceled:y,killed:b,parsed:{options:{timeout:C,cwd:P=Ne.cwd()}}})=>{a=a===null?void 0:a,i=i===null?void 0:i;let O=i===void 0?void 0:Sn[i].description,L=n&&n.code,V=`Command ${ps({timedOut:R,timeout:C,errorCode:L,signal:i,signalDescription:O,exitCode:a,isCanceled:y})}: ${u}`,te=Object.prototype.toString.call(n)===\"[object Error]\",S=te?`${V}\n${n.message}`:V,re=[S,t,e].filter(Boolean).join(`\n`);return te?(n.originalMessage=n.message,n.message=re):n=new Error(re),n.shortMessage=S,n.command=u,n.escapedCommand=_,n.exitCode=a,n.signal=i,n.signalDescription=O,n.stdout=e,n.stderr=t,n.cwd=P,r!==void 0&&(n.all=r),\"bufferedData\"in n&&delete n.bufferedData,n.failed=true,n.timedOut=!!R,n.isCanceled=y,n.killed=b&&!R,n};var Me=[\"stdin\",\"stdout\",\"stderr\"],hs=e=>Me.some(t=>e[t]!==void 0),Rn=e=>{if(!e)return;let{stdio:t}=e;if(t===void 0)return Me.map(n=>e[n]);if(hs(e))throw new Error(`It's not possible to provide \\`stdio\\` in combination with one of ${Me.map(n=>`\\`${n}\\``).join(\", \")}`);if(typeof t==\"string\")return t;if(!Array.isArray(t))throw new TypeError(`Expected \\`stdio\\` to be of type \\`string\\` or \\`Array\\`, got \\`${typeof t}\\``);let r=Math.max(t.length,Me.length);return Array.from({length:r},(n,i)=>t[i])};var ce=[];ce.push(\"SIGHUP\",\"SIGINT\",\"SIGTERM\");process.platform!==\"win32\"&&ce.push(\"SIGALRM\",\"SIGABRT\",\"SIGVTALRM\",\"SIGXCPU\",\"SIGXFSZ\",\"SIGUSR2\",\"SIGTRAP\",\"SIGSYS\",\"SIGQUIT\",\"SIGIOT\");process.platform===\"linux\"&&ce.push(\"SIGIO\",\"SIGPOLL\",\"SIGPWR\",\"SIGSTKFLT\");var ke=e=>!!e&&typeof e==\"object\"&&typeof e.removeListener==\"function\"&&typeof e.emit==\"function\"&&typeof e.reallyExit==\"function\"&&typeof e.listeners==\"function\"&&typeof e.kill==\"function\"&&typeof e.pid==\"number\"&&typeof e.on==\"function\",yt=Symbol.for(\"signal-exit emitter\"),bt=globalThis,ms=Object.defineProperty.bind(Object),Tt=class{emitted={afterExit:false,exit:false};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(bt[yt])return bt[yt];ms(bt,yt,{value:this,writable:false,enumerable:false,configurable:false});}on(t,r){this.listeners[t].push(r);}removeListener(t,r){let n=this.listeners[t],i=n.indexOf(r);i!==-1&&(i===0&&n.length===1?n.length=0:n.splice(i,1));}emit(t,r,n){if(this.emitted[t])return false;this.emitted[t]=true;let i=false;for(let a of this.listeners[t])i=a(r,n)===true||i;return t===\"exit\"&&(i=this.emit(\"afterExit\",r,n)||i),i}},Ge=class{},Es=e=>({onExit(t,r){return e.onExit(t,r)},load(){return e.load()},unload(){return e.unload()}}),At=class extends Ge{onExit(){return ()=>{}}load(){}unload(){}},Ct=class extends Ge{#s=wt.platform===\"win32\"?\"SIGINT\":\"SIGHUP\";#t=new Tt;#e;#i;#o;#n={};#r=false;constructor(t){super(),this.#e=t,this.#n={};for(let r of ce)this.#n[r]=()=>{let n=this.#e.listeners(r),{count:i}=this.#t,a=t;if(typeof a.__signal_exit_emitter__==\"object\"&&typeof a.__signal_exit_emitter__.count==\"number\"&&(i+=a.__signal_exit_emitter__.count),n.length===i){this.unload();let u=this.#t.emit(\"exit\",null,r),_=r===\"SIGHUP\"?this.#s:r;u||t.kill(t.pid,_);}};this.#o=t.reallyExit,this.#i=t.emit;}onExit(t,r){if(!ke(this.#e))return ()=>{};this.#r===false&&this.load();let n=r?.alwaysLast?\"afterExit\":\"exit\";return this.#t.on(n,t),()=>{this.#t.removeListener(n,t),this.#t.listeners.exit.length===0&&this.#t.listeners.afterExit.length===0&&this.unload();}}load(){if(!this.#r){this.#r=true,this.#t.count+=1;for(let t of ce)try{let r=this.#n[t];r&&this.#e.on(t,r);}catch{}this.#e.emit=(t,...r)=>this.#c(t,...r),this.#e.reallyExit=t=>this.#a(t);}}unload(){this.#r&&(this.#r=false,ce.forEach(t=>{let r=this.#n[t];if(!r)throw new Error(\"Listener not defined for signal: \"+t);try{this.#e.removeListener(t,r);}catch{}}),this.#e.emit=this.#i,this.#e.reallyExit=this.#o,this.#t.count-=1);}#a(t){return ke(this.#e)?(this.#e.exitCode=t||0,this.#t.emit(\"exit\",this.#e.exitCode,null),this.#o.call(this.#e,this.#e.exitCode)):0}#c(t,...r){let n=this.#i;if(t===\"exit\"&&ke(this.#e)){typeof r[0]==\"number\"&&(this.#e.exitCode=r[0]);let i=n.call(this.#e,t,...r);return this.#t.emit(\"exit\",this.#e.exitCode,null),i}else return n.call(this.#e,t,...r)}},wt=globalThis.process;Es(ke(wt)?new Ct(wt):new At);function He(e){return e!==null&&typeof e==\"object\"&&typeof e.pipe==\"function\"}new TextEncoder;Xe(Hn());var jn=e=>{if(e!==void 0)throw new TypeError(\"The `input` and `inputFile` options cannot be both set.\")},Ys=({input:e,inputFile:t})=>typeof t!=\"string\"?e:(jn(e),readFileSync(t)),Fn=e=>{let t=Ys(e);if(He(t))throw new TypeError(\"The `input` option cannot be a stream in sync mode\");return t};var Qs=(async()=>{})().constructor.prototype;[\"then\",\"catch\",\"finally\"].map(e=>[e,Reflect.getOwnPropertyDescriptor(Qs,e)]);var zn=(e,t=[])=>Array.isArray(t)?[e,...t]:[e],ta=/^[\\w.-]+$/,ra=e=>typeof e!=\"string\"||ta.test(e)?e:`\"${e.replaceAll('\"','\\\\\"')}\"`,Gt=(e,t)=>zn(e,t).join(\" \"),Ht=(e,t)=>zn(e,t).map(r=>ra(r)).join(\" \");var Jn=debuglog(\"execa\").enabled,qe=(e,t)=>String(e).padStart(t,\"0\"),aa=()=>{let e=new Date;return `${qe(e.getHours(),2)}:${qe(e.getMinutes(),2)}:${qe(e.getSeconds(),2)}.${qe(e.getMilliseconds(),3)}`},jt=(e,{verbose:t})=>{t&&Ne.stderr.write(`[${aa()}] ${e}\n`);};var la=1e3*1e3*100,fa=({env:e,extendEnv:t,preferLocal:r,localDir:n,execPath:i})=>{let a=t?{...Ne.env,...e}:e;return r?pn({env:a,cwd:n,execPath:i}):a},Zn=(e,t,r={})=>{let n=Xn.default._parse(e,t,r);return e=n.command,t=n.args,r=n.options,r={maxBuffer:la,buffer:true,stripFinalNewline:true,extendEnv:true,preferLocal:false,localDir:r.cwd||Ne.cwd(),execPath:Ne.execPath,encoding:\"utf8\",reject:true,cleanup:true,all:false,windowsHide:true,verbose:Jn,...r},r.env=fa(r),r.stdio=Rn(r),Ne.platform===\"win32\"&&Se.basename(e,\".exe\")===\"cmd\"&&t.unshift(\"/q\"),{file:e,args:t,options:r,parsed:n}},be=(e,t,r)=>typeof t!=\"string\"&&!Buffer$1.isBuffer(t)?r===void 0?void 0:\"\":e.stripFinalNewline?It(t):t;function Te(e,t,r){let n=Zn(e,t,r),i=Gt(e,t),a=Ht(e,t);jt(a,n.options);let u=Fn(n.options),_;try{_=Ft.spawnSync(n.file,n.args,{...n.options,input:u});}catch(b){throw Re({error:b,stdout:\"\",stderr:\"\",all:\"\",command:i,escapedCommand:a,parsed:n,timedOut:false,isCanceled:false,killed:false})}let R=be(n.options,_.stdout,_.error),y=be(n.options,_.stderr,_.error);if(_.error||_.status!==0||_.signal!==null){let b=Re({stdout:R,stderr:y,error:_.error,signal:_.signal,exitCode:_.status,command:i,escapedCommand:a,parsed:n,timedOut:_.error&&_.error.code===\"ETIMEDOUT\",isCanceled:false,killed:_.signal!==null});if(!n.options.reject)return b;throw b}return {command:i,escapedCommand:a,exitCode:0,stdout:R,stderr:y,failed:false,timedOut:false,isCanceled:false,killed:false}}function oe(e){try{return Te(\"git\",[\"rev-parse\",\"HEAD\"],e).stdout}catch{return}}function pe(e){try{let t=Te(\"git\",[\"rev-parse\",\"--abbrev-ref\",\"HEAD\"],e).stdout;if(t===\"HEAD\"){let r=Te(\"git\",[\"show\",\"-s\",\"--pretty=%d\",\"HEAD\"],e).stdout.replace(/^\\(|\\)$/g,\"\").split(\", \").find(n=>n.startsWith(\"origin/\"));return r?r.match(/^origin\\/(?<branch>.+)/)[1]:void 0}return t}catch{return}}var ti=/^(?:.*)@(?:.*):(?:\\d+\\/)?(.*)\\.git$/,ha=/^\\/(.*)\\.git$/;function ri(e){if(e){if(e.match(ti))return e.replace(ti,\"$1\");try{return new URL(e).pathname.replace(ha,\"$1\")}catch{return}}}var ni={detect({env:e}){return !!e.BUILDKITE},configuration({env:e}){let t=e.BUILDKITE_PULL_REQUEST===\"false\"?void 0:e.BUILDKITE_PULL_REQUEST,r=!!t;return {name:\"Buildkite\",service:\"buildkite\",build:e.BUILDKITE_BUILD_NUMBER,buildUrl:e.BUILDKITE_BUILD_URL,commit:e.BUILDKITE_COMMIT,tag:e.BUILDKITE_TAG,branch:r?e.BUILDKITE_PULL_REQUEST_BASE_BRANCH:e.BUILDKITE_BRANCH,slug:ri(e.BUILDKITE_REPO),pr:t,isPr:r,prBranch:r?e.BUILDKITE_BRANCH:void 0,root:e.BUILDKITE_BUILD_CHECKOUT_PATH}}};var ii={detect({env:e}){return !!e.CIRCLECI},configuration({env:e}){let t=e.CIRCLE_PR_NUMBER||Pe(e.CIRCLE_PULL_REQUEST||e.CI_PULL_REQUEST),r=!!t;return {name:\"CircleCI\",service:\"circleci\",build:e.CIRCLE_BUILD_NUM,buildUrl:e.CIRCLE_BUILD_URL,job:`${e.CIRCLE_BUILD_NUM}.${e.CIRCLE_NODE_INDEX}`,commit:e.CIRCLE_SHA1,tag:e.CIRCLE_TAG,branch:r?void 0:e.CIRCLE_BRANCH,pr:t,isPr:r,prBranch:r?e.CIRCLE_BRANCH:void 0,slug:`${e.CIRCLE_PROJECT_USERNAME}/${e.CIRCLE_PROJECT_REPONAME}`}}};var oi=\"https://cirrus-ci.com\",si={detect({env:e}){return !!e.CIRRUS_CI},configuration({env:e}){let t=e.CIRRUS_PR,r=!!t;return {name:\"Cirrus CI\",service:\"cirrus\",commit:e.CIRRUS_CHANGE_IN_REPO,tag:e.CIRRUS_TAG,build:e.CIRRUS_BUILD_ID,buildUrl:`${oi}/build/${e.CIRRUS_BUILD_ID}`,job:e.CIRRUS_TASK_ID,jobUrl:`${oi}/task/${e.CIRRUS_TASK_ID}`,branch:r?e.CIRRUS_BASE_BRANCH:e.CIRRUS_BRANCH,pr:t,isPr:r,prBranch:r?e.CIRRUS_BRANCH:void 0,slug:e.CIRRUS_REPO_FULL_NAME,root:e.CIRRUS_WORKING_DIR}}};var ai={detect({env:e}){return e.CF_PAGES===\"1\"},configuration({env:e}){return {name:\"Cloudflare Pages\",service:\"cloudflarePages\",commit:e.CF_PAGES_COMMIT_SHA,branch:e.CF_PAGES_BRANCH,root:e.PWD}}};var ci={detect({env:e}){return !!e.CODEBUILD_BUILD_ID},configuration({env:e,cwd:t}){return {name:\"AWS CodeBuild\",service:\"codebuild\",commit:oe({env:e,cwd:t}),build:e.CODEBUILD_BUILD_ID,branch:pe({env:e,cwd:t}),buildUrl:`https://console.aws.amazon.com/codebuild/home?region=${e.AWS_REGION}#/builds/${e.CODEBUILD_BUILD_ID}/view/new`,root:e.PWD}}};var ui={detect({env:e}){return !!e.CF_BUILD_ID},configuration({env:e}){let t=e.CF_PULL_REQUEST_NUMBER,r=!!t;return {name:\"Codefresh\",service:\"codefresh\",commit:e.CF_REVISION,build:e.CF_BUILD_ID,buildUrl:e.CF_BUILD_URL,branch:r?e.CF_PULL_REQUEST_TARGET:e.CF_BRANCH,pr:t,isPr:r,prBranch:r?e.CF_BRANCH:void 0,slug:`${e.CF_REPO_OWNER}/${e.CF_REPO_NAME}`,root:e.CF_VOLUME_PATH}}};var li={detect({env:e}){return e.CI_NAME&&e.CI_NAME===\"codeship\"},configuration({env:e}){return {name:\"Codeship\",service:\"codeship\",build:e.CI_BUILD_NUMBER,buildUrl:e.CI_BUILD_URL,commit:e.CI_COMMIT_ID,branch:e.CI_BRANCH,slug:e.CI_REPO_NAME}}};var fi={detect({env:e}){return !!e.DRONE},configuration({env:e}){let t=e.DRONE_BUILD_EVENT===\"pull_request\";return {name:\"Drone\",service:\"drone\",commit:e.DRONE_COMMIT_SHA,tag:e.DRONE_TAG,build:e.DRONE_BUILD_NUMBER,buildUrl:e.DRONE_BUILD_LINK,branch:t?e.DRONE_TARGET_BRANCH:e.DRONE_BRANCH,job:e.DRONE_JOB_NUMBER,jobUrl:e.DRONE_BUILD_LINK,pr:e.DRONE_PULL_REQUEST,isPr:t,prBranch:t?e.DRONE_SOURCE_BRANCH:void 0,slug:`${e.DRONE_REPO_OWNER}/${e.DRONE_REPO_NAME}`,root:e.DRONE_WORKSPACE}}};var di={configuration(e){return {commit:oe(e),branch:pe(e)}}};var ma=({env:e})=>{try{let t=e.GITHUB_EVENT_PATH?JSON.parse(readFileSync(e.GITHUB_EVENT_PATH,\"utf-8\")):void 0;if(t&&t.pull_request)return {branch:t.pull_request.base?ie(t.pull_request.base.ref):void 0,pr:t.pull_request.number}}catch{}return {pr:void 0,branch:void 0}},Ea=e=>{let t=e.GITHUB_EVENT_PATH?JSON.parse(readFileSync(e.GITHUB_EVENT_PATH,\"utf-8\")):void 0;return t&&t.pull_request?t.pull_request.number:void 0},hi={detect({env:e}){return !!e.GITHUB_ACTIONS},configuration({env:e,cwd:t}){let r=e.GITHUB_EVENT_NAME===\"pull_request\"||e.GITHUB_EVENT_NAME===\"pull_request_target\",n=ie(e.GITHUB_EVENT_NAME===\"pull_request_target\"?`refs/pull/${Ea(e)}/merge`:e.GITHUB_REF);return {name:\"GitHub Actions\",service:\"github\",commit:e.GITHUB_SHA,build:e.GITHUB_RUN_ID,buildUrl:`${e.GITHUB_SERVER_URL}/${e.GITHUB_REPOSITORY}/actions/runs/${e.GITHUB_RUN_ID}`,isPr:r,branch:n,prBranch:r?n:void 0,slug:e.GITHUB_REPOSITORY,root:e.GITHUB_WORKSPACE,...r?ma({env:e}):void 0}}};var mi={detect({env:e}){return !!e.GITLAB_CI},configuration({env:e}){let t=e.CI_MERGE_REQUEST_ID,r=!!t;return {name:\"GitLab CI/CD\",service:\"gitlab\",commit:e.CI_COMMIT_SHA,tag:e.CI_COMMIT_TAG,build:e.CI_PIPELINE_ID,buildUrl:`${e.CI_PROJECT_URL}/pipelines/${e.CI_PIPELINE_ID}`,job:e.CI_JOB_ID,jobUrl:`${e.CI_PROJECT_URL}/-/jobs/${e.CI_JOB_ID}`,branch:r?e.CI_MERGE_REQUEST_TARGET_BRANCH_NAME:e.CI_COMMIT_REF_NAME,pr:t,isPr:r,prBranch:e.CI_MERGE_REQUEST_SOURCE_BRANCH_NAME,slug:e.CI_PROJECT_PATH,root:e.CI_PROJECT_DIR}}};var Ei={detect({env:e}){return !!e.JENKINS_URL},configuration({env:e,cwd:t}){let r=e.ghprbPullId||e.gitlabMergeRequestId||e.CHANGE_ID,n=!!r,i=e.GIT_LOCAL_BRANCH||e.GIT_BRANCH||e.gitlabBranch||e.BRANCH_NAME;return {name:\"Jenkins\",service:\"jenkins\",commit:e.ghprbActualCommit||e.GIT_COMMIT||oe({env:e,cwd:t}),branch:n?e.ghprbTargetBranch||e.gitlabTargetBranch:i,build:e.BUILD_NUMBER,buildUrl:e.BUILD_URL,root:e.WORKSPACE,pr:r,isPr:n,prBranch:n?e.ghprbSourceBranch||e.gitlabSourceBranch||i:void 0}}};var gi={detect({env:e}){return e.NETLIFY===\"true\"},configuration({env:e}){let t=e.PULL_REQUEST===\"true\";return {name:\"Netlify\",service:\"netlify\",commit:e.COMMIT_REF,build:e.DEPLOY_ID,buildUrl:`https://app.netlify.com/sites/${e.SITE_NAME}/deploys/${e.DEPLOY_ID}`,branch:t?void 0:e.HEAD,pr:e.REVIEW_ID,isPr:t,prBranch:t?e.HEAD:void 0,slug:e.REPOSITORY_URL.match(/[^/:]+\\/[^/]+?$/)[0],root:e.PWD}}};var _i={detect({env:e}){return !!e.DISTELLI_APPNAME},configuration({env:e}){return {name:\"Puppet\",service:\"puppet\",build:e.DISTELLI_BUILDNUM,buildUrl:e.DISTELLI_RELEASE,commit:e.DISTELLI_RELREVISION,branch:e.DISTELLI_RELBRANCH,root:e.DISTELLI_INSTALLHOME}}};var Ii={detect({env:e}){return !!e.SAILCI},configuration({env:e}){let t=e.SAIL_PULL_REQUEST_NUMBER,r=!!t;return {name:\"Sail CI\",service:\"sail\",commit:e.SAIL_COMMIT_SHA,branch:r?void 0:e.SAIL_COMMIT_BRANCH,pr:t,isPr:r,slug:`${e.SAIL_REPO_OWNER}/${e.SAIL_REPO_NAME}`,root:e.SAIL_CLONE_DIR}}};var Si={detect({env:e}){return !!e.SCREWDRIVER},configuration({env:e}){let t=e.SD_PULL_REQUEST,r=!!t;return {name:\"Screwdriver.cd\",service:\"screwdriver\",branch:r?e.PR_BASE_BRANCH_NAME:e.GIT_BRANCH,prBranch:r?e.PR_BRANCH_NAME:void 0,commit:e.SD_BUILD_SHA,build:e.SD_BUILD_ID,buildUrl:e.SD_UI_BUILD_URL,job:e.SD_JOB_ID,pr:t,isPr:r,slug:e.SD_PIPELINE_NAME,root:e.SD_ROOT_DIR}}};var Ri={detect({env:e}){return !!e.SCRUTINIZER},configuration({env:e}){let t=e.SCRUTINIZER_PR_NUMBER,r=!!t;return {name:\"Scrutinizer\",service:\"scrutinizer\",commit:e.SCRUTINIZER_SHA1,build:e.SCRUTINIZER_INSPECTION_UUID,branch:e.SCRUTINIZER_BRANCH,pr:t,isPr:r,prBranch:e.SCRUTINIZER_PR_SOURCE_BRANCH}}};var yi={detect({env:e}){return !!e.SEMAPHORE},configuration({env:e,cwd:t}){let r=e.SEMAPHORE_GIT_PR_NUMBER||e.PULL_REQUEST_NUMBER,n=!!r;return {name:\"Semaphore\",service:\"semaphore\",commit:e.SEMAPHORE_GIT_SHA||oe({env:e,cwd:t}),tag:e.SEMAPHORE_GIT_TAG_NAME,build:e.SEMAPHORE_JOB_ID||e.SEMAPHORE_BUILD_NUMBER,branch:e.SEMAPHORE_GIT_BRANCH||(n?void 0:e.BRANCH_NAME),pr:r,isPr:n,prBranch:e.SEMAPHORE_GIT_PR_BRANCH||(n?e.BRANCH_NAME:void 0),slug:e.SEMAPHORE_GIT_REPO_SLUG||e.SEMAPHORE_REPO_SLUG,root:e.SEMAPHORE_GIT_DIR||e.SEMAPHORE_PROJECT_DIR}}};var bi={detect({env:e}){return !!e.SHIPPABLE},configuration({env:e}){let t=e.IS_PULL_REQUEST===\"true\"?e.PULL_REQUEST:void 0,r=!!t;return {name:\"Shippable\",service:\"shippable\",commit:e.COMMIT,tag:e.GIT_TAG_NAME,build:e.BUILD_NUMBER,buildUrl:e.BUILD_URL,branch:r?e.BASE_BRANCH:e.BRANCH,job:e.JOB_NUMBER,pr:t,isPr:r,prBranch:r?e.HEAD_BRANCH:void 0,slug:e.SHIPPABLE_REPO_SLUG,root:e.SHIPPABLE_BUILD_DIR}}};var Ci=Xe(Ti());var Vt={root:\"teamcity.build.workingDir\",branch:\"teamcity.build.branch\"},Ai=e=>{try{return Ci.default.of(e)}catch{return}},Sa=({env:e,cwd:t})=>{let r=e.TEAMCITY_BUILD_PROPERTIES_FILE?Ai(e.TEAMCITY_BUILD_PROPERTIES_FILE):void 0,n=r?r.get(\"teamcity.configuration.properties.file\"):void 0,i=n&&Ai(n);return Object.fromEntries(Object.keys(Vt).map(a=>[a,(r?r.get(Vt[a]):void 0)||(i?i.get(Vt[a]):void 0)||(a===\"branch\"?pe({env:e,cwd:t}):void 0)]))},wi={detect({env:e}){return !!e.TEAMCITY_VERSION},configuration({env:e,cwd:t}){return {name:\"TeamCity\",service:\"teamcity\",commit:e.BUILD_VCS_NUMBER,build:e.BUILD_NUMBER,slug:e.TEAMCITY_BUILDCONF_NAME,...Sa({env:e,cwd:t})}}};var xi={detect({env:e}){return !!e.TRAVIS},configuration({env:e}){let t=e.TRAVIS_PULL_REQUEST===\"false\"?void 0:e.TRAVIS_PULL_REQUEST,r=!!t;return {name:\"Travis CI\",service:\"travis\",commit:e.TRAVIS_COMMIT,tag:e.TRAVIS_TAG,build:e.TRAVIS_BUILD_NUMBER,buildUrl:e.TRAVIS_BUILD_WEB_URL,branch:e.TRAVIS_BRANCH,job:e.TRAVIS_JOB_NUMBER,jobUrl:e.TRAVIS_JOB_WEB_URL,pr:t,isPr:r,prBranch:e.TRAVIS_PULL_REQUEST_BRANCH,slug:e.TRAVIS_REPO_SLUG,root:e.TRAVIS_BUILD_DIR}}};var Bi={detect({env:e}){return !!e.VELA},configuration({env:e}){let t=e.VELA_BUILD_EVENT===\"pull_request\";return {name:\"Vela\",service:\"vela\",branch:t?e.VELA_PULL_REQUEST_TARGET:e.VELA_BUILD_BRANCH,commit:e.VELA_BUILD_COMMIT,tag:e.VELA_BUILD_TAG,build:e.VELA_BUILD_NUMBER,buildUrl:e.VELA_BUILD_LINK,job:void 0,jobUrl:void 0,isPr:t,pr:e.VELA_BUILD_PULL_REQUEST,prBranch:e.VELA_PULL_REQUEST_SOURCE,slug:e.VELA_REPO_FULL_NAME,root:e.VELA_BUILD_WORKSPACE}}};var Ui={detect({env:e}){return !!e.VERCEL||!!e.NOW_GITHUB_DEPLOYMENT},configuration({env:e}){let t=\"Vercel\",r=\"vercel\";return e.VERCEL?{name:t,service:r,commit:e.VERCEL_GIT_COMMIT_SHA,branch:e.VERCEL_GIT_COMMIT_REF,slug:`${e.VERCEL_GIT_REPO_OWNER}/${e.VERCEL_GIT_REPO_SLUG}`}:{name:t,service:r,commit:e.NOW_GITHUB_COMMIT_SHA,branch:e.NOW_GITHUB_COMMIT_REF,slug:`${e.NOW_GITHUB_ORG}/${e.NOW_GITHUB_REPO}`}}};var Pi={detect({env:e}){return !!e.WERCKER_MAIN_PIPELINE_STARTED},configuration({env:e}){return {name:\"Wercker\",service:\"wercker\",commit:e.WERCKER_GIT_COMMIT,build:e.WERCKER_MAIN_PIPELINE_STARTED,buildUrl:e.WERCKER_RUN_URL,branch:e.WERCKER_GIT_BRANCH,slug:`${e.WERCKER_GIT_OWNER}/${e.WERCKER_GIT_REPOSITORY}`,root:e.WERCKER_ROOT}}};var Oi={detect({env:e}){return e.CI&&e.CI===\"woodpecker\"},configuration({env:e}){let t=e.CI_PIPELINE_EVENT===\"pull_request\";return {name:\"Woodpecker CI\",service:\"woodpecker\",commit:e.CI_COMMIT_SHA,tag:e.CI_COMMIT_TAG,build:e.CI_PIPELINE_NUMBER,buildUrl:e.CI_PIPELINE_URL,branch:t?e.CI_COMMIT_TARGET_BRANCH:e.CI_COMMIT_BRANCH,job:e.CI_STEP_NUMBER,jobUrl:e.CI_STEP_URL,pr:e.CI_COMMIT_PULL_REQUEST,isPr:t,prBranch:t?e.CI_COMMIT_SOURCE_BRANCH:void 0,slug:`${e.CI_REPO_OWNER}/${e.CI_REPO_NAME}`,root:e.CI_WORKSPACE}}};var Li={detect({env:e}){return !!e.JB_SPACE_EXECUTION_NUMBER},configuration({env:e}){let t=e.JB_SPACE_PROJECT_KEY,r=e.JB_SPACE_GIT_REPOSITORY_NAME;return {name:\"JetBrains Space\",service:\"jetbrainsSpace\",commit:e.JB_SPACE_GIT_REVISION,build:e.JB_SPACE_EXECUTION_NUMBER,branch:ie(e.JB_SPACE_GIT_BRANCH),slug:t&&r?`${t.toLowerCase()}/${r}`:void 0}}};var Wt={appveyor:gr,azurePipelines:_r,bamboo:Ir,bitbucket:Sr,bitrise:Rr,buddy:yr,buildkite:ni,circleci:ii,cirrus:si,cloudflarePages:ai,codebuild:ci,codefresh:ui,codeship:li,drone:fi,github:hi,gitlab:mi,jenkins:Ei,netlify:gi,puppet:_i,sail:Ii,screwdriver:Si,scrutinizer:Ri,semaphore:yi,shippable:bi,teamcity:wi,travis:xi,vela:Bi,vercel:Ui,wercker:Pi,woodpecker:Oi,jetbrainsSpace:Li},Ni=({env:e=process.env,cwd:t=process.cwd()}={})=>{for(let r of Object.keys(Wt))if(Wt[r].detect({env:e,cwd:t}))return {isCi:true,...Wt[r].configuration({env:e,cwd:t})};return {isCi:!!e.CI,...di.configuration({env:e,cwd:t})}};function Di(){let e=Ni();return {branch:e.branch,commit:{message:Ta(),sha:e.commit},isCI:e.isCi,pr:ba()}}function ba(){try{let e=process.env.GITHUB_EVENT_PATH;if(e){let t=JSON.parse(readFileSync(e,\"utf-8\"));if(t.pull_request)return {author:t.pull_request.user.login,number:t.pull_request.number,title:t.pull_request.title}}return}catch{return}}function Ta(){try{return execSync(\"git log -1 --pretty=%B\",{encoding:\"utf-8\",stdio:[\"pipe\",\"pipe\",\"ignore\"]}).trim()}catch{return}}function ki(){return {hostname:Mi.hostname(),platform:Mi.platform()}}var Aa=new Error(\"request for lock canceled\"),Ca=function(e,t,r,n){function i(a){return a instanceof r?a:new r(function(u){u(a);})}return new(r||(r=Promise))(function(a,u){function _(b){try{y(n.next(b));}catch(C){u(C);}}function R(b){try{y(n.throw(b));}catch(C){u(C);}}function y(b){b.done?a(b.value):i(b.value).then(_,R);}y((n=n.apply(e,t||[])).next());})},qt=class{constructor(t,r=Aa){this._value=t,this._cancelError=r,this._queue=[],this._weightedWaiters=[];}acquire(t=1,r=0){if(t<=0)throw new Error(`invalid weight ${t}: must be positive`);return new Promise((n,i)=>{let a={resolve:n,reject:i,weight:t,priority:r},u=Gi(this._queue,_=>r<=_.priority);u===-1&&t<=this._value?this._dispatchItem(a):this._queue.splice(u+1,0,a);})}runExclusive(t){return Ca(this,arguments,void 0,function*(r,n=1,i=0){let[a,u]=yield this.acquire(n,i);try{return yield r(a)}finally{u();}})}waitForUnlock(t=1,r=0){if(t<=0)throw new Error(`invalid weight ${t}: must be positive`);return this._couldLockImmediately(t,r)?Promise.resolve():new Promise(n=>{this._weightedWaiters[t-1]||(this._weightedWaiters[t-1]=[]),wa(this._weightedWaiters[t-1],{resolve:n,priority:r});})}isLocked(){return this._value<=0}getValue(){return this._value}setValue(t){this._value=t,this._dispatchQueue();}release(t=1){if(t<=0)throw new Error(`invalid weight ${t}: must be positive`);this._value+=t,this._dispatchQueue();}cancel(){this._queue.forEach(t=>t.reject(this._cancelError)),this._queue=[];}_dispatchQueue(){for(this._drainUnlockWaiters();this._queue.length>0&&this._queue[0].weight<=this._value;)this._dispatchItem(this._queue.shift()),this._drainUnlockWaiters();}_dispatchItem(t){let r=this._value;this._value-=t.weight,t.resolve([r,this._newReleaser(t.weight)]);}_newReleaser(t){let r=false;return ()=>{r||(r=true,this.release(t));}}_drainUnlockWaiters(){if(this._queue.length===0)for(let t=this._value;t>0;t--){let r=this._weightedWaiters[t-1];r&&(r.forEach(n=>n.resolve()),this._weightedWaiters[t-1]=[]);}else {let t=this._queue[0].priority;for(let r=this._value;r>0;r--){let n=this._weightedWaiters[r-1];if(!n)continue;let i=n.findIndex(a=>a.priority<=t);(i===-1?n:n.splice(0,i)).forEach(a=>a.resolve());}}}_couldLockImmediately(t,r){return (this._queue.length===0||this._queue[0].priority<r)&&t<=this._value}};function wa(e,t){let r=Gi(e,n=>t.priority<=n.priority);e.splice(r+1,0,t);}function Gi(e,t){for(let r=e.length-1;r>=0;r--)if(t(e[r]))return r;return -1}var xa=function(e,t,r,n){function i(a){return a instanceof r?a:new r(function(u){u(a);})}return new(r||(r=Promise))(function(a,u){function _(b){try{y(n.next(b));}catch(C){u(C);}}function R(b){try{y(n.throw(b));}catch(C){u(C);}}function y(b){b.done?a(b.value):i(b.value).then(_,R);}y((n=n.apply(e,t||[])).next());})},Ye=class{constructor(t){this._semaphore=new qt(1,t);}acquire(){return xa(this,arguments,void 0,function*(t=0){let[,r]=yield this._semaphore.acquire(1,t);return r})}runExclusive(t,r=0){return this._semaphore.runExclusive(()=>t(),1,r)}isLocked(){return this._semaphore.isLocked()}waitForUnlock(t=0){return this._semaphore.waitForUnlock(1,t)}release(){this._semaphore.isLocked()&&this._semaphore.release();}cancel(){return this._semaphore.cancel()}};function vt(e,t){let r=e.length,n=0,i=0,a=new Ye;return t({completed:n,errors:i,total:r}),e.map(u=>u.then(async _=>(await a.runExclusive(()=>{n++,t({completed:n,errors:i,total:r});}),_)).catch(async _=>{throw await a.runExclusive(()=>{n++,i++,t({completed:n,errors:i,total:r});}),_}))}function Hi({result:e,sensitiveValues:t}){return e.steps.map(r=>$i({sensitiveValues:t,step:r}))}function $i({sensitiveValues:e,step:t}){let r=n=>n&&e?.length?scrubString({sensitiveValues:e,str:n}):n;return {category:t.category,duration:t.duration,error:t.error?{message:r(t.error.message)||\"Unknown error\",stack:r(t.error.stack)}:void 0,location:t.location?{column:t.location.column,file:t.location.file,line:t.location.line}:void 0,startedAt:new Date(t.startTime),steps:t.steps&&t.steps.length>0?t.steps.map(n=>$i({sensitiveValues:e,step:n})):void 0,title:r(t.title)??t.title}}async function ji({fileData:e,maxRetries:t=3,uploadUrl:r}){await Ua(async()=>{let n=await fetch(r,{body:e,method:\"PUT\"});if(!n.ok)throw n.status>=400&&n.status<500?new AbortError(`Upload failed with status ${n.status}: ${n.statusText}`):new Error(`Upload failed with status ${n.status}: ${n.statusText}`)},{minTimeout:2e3,randomize:true,retries:t});}var Ha=process.env.STABLY_WS_URL||\"wss://api.stably.ai/reporter\",Vi=2*60*1e3,$a=({notificationConfigs:e,suite:t})=>{if(!e||e.length===0)return;let r=new Set(t.allTests().map(i=>i.parent.project()?.name).filter(Boolean)),n=e.filter(i=>r.has(i.projectName));return n.length>0?n:void 0},ja=e=>e?{configFile:e.configFile,forbidOnly:e.forbidOnly,fullyParallel:e.fullyParallel,globalSetup:e.globalSetup,globalTeardown:e.globalTeardown,globalTimeout:e.globalTimeout,grep:e.grep?.toString(),grepInvert:e.grepInvert?.toString(),maxFailures:e.maxFailures,metadata:e.metadata,preserveOutput:e.preserveOutput,quiet:e.quiet,reporter:e.reporter,reportSlowTests:e.reportSlowTests,rootDir:e.rootDir,shard:e.shard,updateSnapshots:e.updateSnapshots,version:e.version,webServer:e.webServer,workers:e.workers}:void 0,Fa=({absolutePath:e,rootDir:t})=>{if(t&&e.startsWith(t)){let r=e.slice(t.length);return r.startsWith(\"/\")?r.slice(1):r}return e},ze=class{wsClient;pendingOperations=[];pendingUploads=[];testSuiteRunId=\"\";createdSuiteRun;suiteData;testCases=[];testStepsMap=new Map;rootDir=\"\";isListMode=false;config;notificationConfigs;sensitiveValues;filteredNotificationConfigs;attachmentFiles=new Map;pendingUploadUrlRequests=new Map;constructor(t){let r=t?.apiKey??process.env.STABLY_API_KEY,n=t?.projectId??process.env.STABLY_PROJECT_ID;if(!r)throw new Error(\"STABLY_API_KEY is required. Provide it via options or environment variable.\");if(!n)throw new Error(\"STABLY_PROJECT_ID is required. Provide it via options or environment variable.\");if(this.notificationConfigs=t?.notificationConfigs,t?.sensitiveValues?.length){let i=filterSensitiveValues(t.sensitiveValues);this.sensitiveValues=[...i].sort((a,u)=>u.length-a.length);}this.wsClient=new Ue({apiKey:r,maxBufferSize:1e3,maxReconnectAttempts:3,onError:i=>this.handleWebSocketError(i),onMessage:i=>this.handleWebSocketMessage(i),projectId:n,reconnectDelay:2e3,url:Ha});}onBegin(t,r){if(this.isListMode=process.argv.includes(\"--list\"),this.isListMode)return;r.allTests().length===0&&process.exit(1),this.config=t,this.testSuiteRunId=this.getSuiteRunId(t),this.rootDir=t.rootDir,this.suiteData=this.extractSuiteInfo(t,r);let i=$a({notificationConfigs:this.notificationConfigs,suite:r});this.filteredNotificationConfigs=i,this.pendingOperations.push(this.wsClient.sendEvent({payload:{...this.suiteData,notificationRequest:i?{notificationConfigs:i,totalShards:this.config?.shard?.total}:void 0,status:\"running\"},type:\"suite_start\"}));}getSuiteRunId(t){return getCiRunKey()??t.metadata?.testSuiteRunId??le()}onTestBegin(t,r){if(this.isListMode)return;let n=this.extractTestCaseInfo(t,r);this.pendingOperations.push(this.wsClient.sendEvent({payload:{...n,status:n.expectedStatus===\"skipped\"?\"skipped\":\"running\"},type:\"test_start\"}));}onTestEnd(t,r){if(this.isListMode)return;let n=this.extractTestCaseInfo(t,r);this.testCases.push(n),this.testStepsMap.set(n.id,r);let i=Hi({result:r,sensitiveValues:this.sensitiveValues}),a=[...r.attachments,{contentType:\"text/plain\",name:\"source-code\",path:t.location.file}],u=(async()=>{let _=await this.extractAttachmentMetadata({attachments:a,attemptNumber:n.attemptNumber,testId:n.id}),R,y;_.length>0&&(R=`${n.id}-${n.attemptNumber}`,y=new Promise(b=>{this.pendingUploadUrlRequests.set(R,b);}),this.pendingOperations.push(y));try{await this.wsClient.sendEvent({payload:{...n,attachments:_,steps:i},type:\"test_end\"});}catch(b){if(R&&y){let C=this.pendingUploadUrlRequests.get(R);C&&(C(),this.pendingUploadUrlRequests.delete(R));}throw b}})();this.pendingOperations.push(u);}async onEnd(t){if(this.isListMode)return;this.pendingOperations.push(this.wsClient.sendEvent({payload:{duration:t.duration,notificationRequest:this.filteredNotificationConfigs?{notificationConfigs:this.filteredNotificationConfigs,totalShards:this.config?.shard?.total}:void 0,status:t.status===\"timedout\"?\"timedOut\":t.status,suiteId:this.testSuiteRunId},type:\"suite_end\"})),intro(\"[Stably reporter] Waiting for pending tasks to finish...\");let r=spinner();r.start(\"Waiting for tasks to finish...\");let n=Promise.allSettled(vt(this.pendingOperations,({completed:R,errors:y,total:b})=>{r.message(`${R}/${b} tasks finished${y>0?`, ${y} errors`:\"\"}`);})),i=new Promise((R,y)=>{setTimeout(()=>{y(new Error(`Tasks timeout: Some operations did not complete within ${Vi/1e3}s`));},Vi);});try{await Promise.race([n,i]);}catch(R){let y=R instanceof Error?R.message:String(R);console.warn(`[StablyAI reporter] Tasks timeout reached. Some operations may still be pending: ${y}`);}this.wsClient.flushBuffer(),r.stop(\"All tasks finished\");let a=spinner();a.start(\"Waiting for file uploads to finish...\"),await Promise.allSettled(vt(this.pendingUploads,({completed:R,errors:y,total:b})=>{a.message(`${R}/${b} uploads finished${y>0?`, ${y} errors`:\"\"}`);})),a.stop(\"All file uploads finished\"),this.wsClient.close();let u=this.createdSuiteRun?.name||this.suiteData?.title||\"Test Suite\",_=t.status===\"failed\"||t.status===\"timedout\";outro(se.cyan(`\\u2728 Suite \"${se.bold(u)}\" run complete!${this.createdSuiteRun?`\n \\u{1F4CA} View results: ${se.bold(se.underline(this.createdSuiteRun.url))}`:\"\"}${_?`\n\n \\u{1F527} To auto-heal failed tests, run:\n ${se.bold(se.underline(`stably fix ${this.testSuiteRunId}`))}`:\"\"}`));}scrubSensitiveString(t){return !t||!this.sensitiveValues?.length?t:scrubString({sensitiveValues:this.sensitiveValues,str:t})}extractSuiteInfo(t,r){let n=Di(),i=ki(),a=new Date;return {id:le(),projectSettings:ja(t),startedAt:a,suiteId:this.testSuiteRunId,title:r.title||\"Playwright Test Suite\",createdAt:a,git:{branch:n.branch,commit:{message:n.commit.message,sha:n.commit.sha},pr:n.pr},isCI:n.isCI,shards:t.shard?.total??1,workers:t.workers,machineInfo:i,updatedAt:a}}extractTestCaseInfo(t,r){let n=Fa({absolutePath:t.location.file,rootDir:this.rootDir}),i=t.parent.project(),a=i?.name,u=i?.use?.defaultBrowserType;return {fullTitle:this.scrubSensitiveString(t.titlePath().join(\" \\u203A \"))??\"\",id:le(),location:`${n}:${t.location.line}:${t.location.column}`,suiteId:this.testSuiteRunId,testIdentifier:t.id,title:this.scrubSensitiveString(t.title)??t.title,browserName:u,duration:r.duration,expectedStatus:t.expectedStatus,finishedAt:r.startTime&&r.duration?new Date(r.startTime.getTime()+r.duration):void 0,outcome:t.outcome(),projectName:a,startedAt:new Date(r.startTime),status:r.status,attemptNumber:r.retry+1,maxRetries:t.retries,retryCount:r.retry,errorMessage:this.scrubSensitiveString(r.error?.message),errorStack:this.scrubSensitiveString(r.error?.stack),errorType:r.error?.value,annotations:t.annotations.length>0?t.annotations:void 0,tags:t.tags.length>0?t.tags:void 0}}async extractAttachmentMetadata({attachments:t,attemptNumber:r,testId:n}){let i=[];for(let a of t)try{let u;if(a.body)u=Buffer.from(a.body);else if(a.path)u=readFileSync(a.path);else continue;a.name===\"trace\"&&this.sensitiveValues&&this.sensitiveValues.length>0&&(u=Buffer.from(await scrubTrace({sensitiveValues:this.sensitiveValues,traceBuffer:u})));let R=le(),y=`${n}-${r}-${R}`;this.attachmentFiles.set(y,u),i.push({artifactId:R,attemptNumber:r,contentType:a.contentType,name:a.name,sizeBytes:u.length,testId:n});}catch(u){let _=u instanceof Error?u.message:String(u);console.error(`[StablyAI reporter] Failed to read attachment ${a.name}: ${_}`);}return i}handleWebSocketError(t){t.code===ut.AUTHENTICATION_FAILED&&(console.error(se.bold(se.red(\"[StablyAI reporter] Could not authenticate with the server. Either the API Key or Project ID is invalid\"))),process.exit(1)),console.error(\"[StablyAI reporter] Could not connect to the server. Please check your internet connection and try again.\"),process.exit(1);}handleWebSocketMessage(t){if(t.type===\"suite_created\")this.createdSuiteRun={id:t.id,name:t.name,url:t.url};else if(t.type===\"upload_urls\"){let r=`${t.testId}-${t.attemptNumber}`,n=this.pendingUploadUrlRequests.get(r);if(!n)return;n(),this.pendingUploadUrlRequests.delete(r);let i=this.uploadAttachments(t.testId,t.attemptNumber,t.uploadUrls);this.pendingUploads.push(i);}}async uploadAttachments(t,r,n){let i=n.map(async({artifactId:a,name:u,uploadUrl:_})=>{let R=`${t}-${r}-${a}`,y=this.attachmentFiles.get(R);if(y)try{await ji({fileData:y,maxRetries:3,uploadUrl:_}),this.attachmentFiles.delete(R);}catch(b){let C=b instanceof Error?b.message:String(b);console.error(`[StablyAI reporter] Failed to upload ${u} after retries: ${C}`);}});await Promise.allSettled(i);}};function Va(e){return [\"@stablyai/playwright-test/reporter\",e]}/*! Bundled license information:\n\n@noble/hashes/utils.js:\n (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)\n*/export{ze as StablyReporter,ze as default,Va as stablyReporter};","import { isBinaryFile } from \"isbinaryfile\";\nimport type { Unzipped } from \"fflate\";\nimport { unzip, zip } from \"fflate\";\n\nimport { filterSensitiveValues } from \"./filter-sensitive-values\";\nimport { scrubJsonLinesFile, scrubTextFile } from \"./scrubbers/files\";\nimport { promisify } from \"node:util\";\n\nexport const unzipAsync = promisify(unzip);\nexport const zipAsync = promisify(zip);\n\n/**\n * Scrubs sensitive values from a Playwright trace zip file.\n *\n * @param traceBuffer - The raw trace.zip file (ArrayBuffer, Uint8Array, or Node.js Buffer)\n * @param sensitiveValues - Array of literal strings to redact\n * @returns The scrubbed trace.zip as a Uint8Array\n */\nexport async function scrubTrace({\n sensitiveValues,\n traceBuffer,\n}: {\n traceBuffer: ArrayBuffer | Uint8Array;\n sensitiveValues: readonly string[];\n}): Promise<Uint8Array> {\n // Step 1: Pre-filter and sort sensitive values (longest first to prevent partial replacements)\n const filteredValues = filterSensitiveValues(sensitiveValues);\n if (filteredValues.length === 0) {\n return new Uint8Array(traceBuffer);\n }\n const sortedValues = filteredValues.sort((a, b) => b.length - a.length);\n\n // Step 2: Unzip and process each file in parallel\n const files = await unzipAsync(new Uint8Array(traceBuffer));\n const entries = Object.entries(files);\n\n const scrubbedEntries = await Promise.all(\n entries.map(async ([filename, content]) => [\n filename,\n await scrubFile({\n content,\n filename,\n sensitiveValues: sortedValues,\n }),\n ]),\n );\n\n const scrubbedFiles: Unzipped = Object.fromEntries(scrubbedEntries);\n return zipAsync(scrubbedFiles);\n}\n\n/**\n * Routes a file to the appropriate scrubbing strategy based on its extension.\n */\nasync function scrubFile({\n content,\n filename,\n sensitiveValues,\n}: {\n filename: string;\n content: Uint8Array;\n sensitiveValues: readonly string[];\n}): Promise<Uint8Array> {\n const lower = filename.toLowerCase();\n\n // Route to appropriate scrubbing strategy based on file type\n return lower.endsWith(\".trace\") || lower.endsWith(\".network\")\n ? scrubJsonLinesFile({ content, sensitiveValues }) // JSON Lines files\n : lower.endsWith(\".html\") ||\n lower.endsWith(\".dat\") ||\n lower.endsWith(\".json\")\n ? scrubTextFile({ content, sensitiveValues }) // DOM snapshots and JSON resources\n : lower.startsWith(\"resources/\")\n ? scrubResourceFile({ content, sensitiveValues }) // Resource payloads - scrub if text\n : content; // Everything else (.stacks, binary artifacts) - pass through\n}\n\n// Scrubs sensitive values from a resource file.\n// Binary files are returned unchanged to avoid corrupting non-text formats.\nasync function scrubResourceFile({\n content,\n sensitiveValues,\n}: {\n content: Uint8Array;\n sensitiveValues: readonly string[];\n}): Promise<Uint8Array> {\n return (await isBinaryFile(Buffer.from(content)))\n ? content\n : scrubTextFile({ content, sensitiveValues });\n}\n","import { createRequire } from 'module';\nvar require = createRequire('/');\n// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\n// Mediocre shim\nvar Worker;\nvar workerAdd = \";var __w=require('worker_threads');__w.parentPort.on('message',function(m){onmessage({data:m})}),postMessage=function(m,t){__w.parentPort.postMessage(m,t)},close=process.exit;self=global\";\ntry {\n Worker = require('worker_threads').Worker;\n}\ncatch (e) {\n}\nvar wk = Worker ? function (c, _, msg, transfer, cb) {\n var done = false;\n var w = new Worker(c + workerAdd, { eval: true })\n .on('error', function (e) { return cb(e, null); })\n .on('message', function (m) { return cb(null, m); })\n .on('exit', function (c) {\n if (c && !done)\n cb(new Error('exited with code ' + c), null);\n });\n w.postMessage(msg, transfer);\n w.terminate = function () {\n done = true;\n return Worker.prototype.terminate.call(w);\n };\n return w;\n} : function (_, __, ___, ____, cb) {\n setImmediate(function () { return cb(new Error('async operations unsupported - update to Node 12+ (or Node 10-11 with the --experimental-worker CLI flag)'), null); });\n var NOP = function () { };\n return {\n terminate: NOP,\n postMessage: NOP\n };\n};\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new i32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 1; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n ,\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n // source length dict length\n var sl = dat.length, dl = dict ? dict.length : 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n // have to estimate size\n var resize = noBuf || st.i != 2;\n // no state\n var noSt = st.i;\n // Assumes roughly 33% compression ratio average\n if (noBuf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (resize)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n // don't reallocate for streams or user buffers\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return { t: et, l: 0 };\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return { t: v, l: 1 };\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n ++lcfreq[lclt[i] & 31];\n for (var i = 0; i < lcdt.length; ++i)\n ++lcfreq[lcdt[i] & 31];\n var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n var sym = syms[i];\n if (sym > 255) {\n var len = (sym >> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n var dst = sym & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[sym]), p += ll[sym];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n var s = st.z || dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var lst = st.l;\n var pos = (st.r || 0) & 7;\n if (lvl) {\n if (pos)\n w[0] = st.r >> 3;\n var opt = deo[lvl - 1];\n var n = opt >> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new i32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx blkpos\n var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n for (; i + 2 < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j & 32767;\n var pti = prev[ti];\n var cd = ti - pti & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one int32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n for (i = Math.max(i, wi); i < s; ++i) {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n if (!lst) {\n st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n // shft(pos) now 1 less if pos & 7 != 0\n pos -= 7;\n st.h = head, st.p = prev, st.i = i, st.w = wi;\n }\n }\n else {\n for (var i = st.w || 0; i < s + lst; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[(pos / 8) | 0] = lst;\n e = s;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n st.i = s;\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Adler32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n if (!st) {\n st = { l: 1 };\n if (opt.dictionary) {\n var dict = opt.dictionary.subarray(-32768);\n var newDat = new u8(dict.length + dat.length);\n newDat.set(dict);\n newDat.set(dat, dict.length);\n dat = newDat;\n st.w = dict.length;\n }\n }\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n fnStr = wcln(fns[i], fnStr, td_1);\n ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n }\n var td = mrg({}, ch[id].e);\n return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n out: o.size && new u8(o.size),\n dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) {\n if (ev.data.length) {\n strm.push(ev.data[0], ev.data[1]);\n postMessage([ev.data[0].length]);\n }\n else\n strm.flush();\n };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else if (!Array.isArray(dat))\n ext(dat);\n else if (dat.length == 1) {\n strm.queuedSize -= dat[0];\n if (strm.ondrain)\n strm.ondrain(dat[0]);\n }\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.queuedSize = 0;\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n strm.queuedSize += d.length;\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n if (flush) {\n strm.flush = function () { w.postMessage([]); };\n }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n if (o.dictionary) {\n var h = adler();\n h.p(o.dictionary);\n wbytes(c, 2, h.d());\n }\n};\n// zlib start\nvar zls = function (d, dict) {\n if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if ((d[1] >> 5 & 1) == +!dict)\n err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n // 98304 = 32768 (lookback) + 65536 (common chunk size)\n this.b = new u8(98304);\n if (this.o.dictionary) {\n var dict = this.o.dictionary.subarray(-32768);\n this.b.set(dict, 32768 - dict.length);\n this.s.i = 32768 - dict.length;\n }\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n var endLen = chunk.length + this.s.z;\n if (endLen > this.b.length) {\n if (endLen > 2 * this.b.length - 32768) {\n var newBuf = new u8(endLen & -32768);\n newBuf.set(this.b.subarray(0, this.s.z));\n this.b = newBuf;\n }\n var split = this.b.length - this.s.z;\n this.b.set(chunk.subarray(0, split), this.s.z);\n this.s.z = this.b.length;\n this.p(this.b, false);\n this.b.set(this.b.subarray(-32768));\n this.b.set(chunk.subarray(split), 32768);\n this.s.z = chunk.length - split + 32768;\n this.s.i = 32766, this.s.w = 32768;\n }\n else {\n this.b.set(chunk, this.s.z);\n this.s.z += chunk.length;\n }\n this.s.l = final & 1;\n if (this.s.z > this.s.w + 8191 || final) {\n this.p(this.b, final || false);\n this.s.w = this.s.i, this.s.i -= 2;\n }\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * deflated output for small inputs.\n */\n Deflate.prototype.flush = function () {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n this.p(this.b, false);\n this.s.w = this.s.i, this.s.i -= 2;\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6, 1);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n function Inflate(opts, cb) {\n // no StrmOpt here to avoid adding to workerizer\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate.prototype.c = function (final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n function AsyncInflate(opts, cb) {\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Inflate(ev.data);\n onmessage = astrm(strm);\n }, 7, 0);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, opts) {\n return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n this.l += chunk.length;\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * GZIPped output for small inputs.\n */\n Gzip.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8, 1);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n function Gunzip(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n }\n else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n // process concatenated GZIP\n if (this.s.f && !this.s.l && !final) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n this.push(new u8(0), final);\n }\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n function AsyncGunzip(opts, cb) {\n var _this = this;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gunzip(ev.data);\n strm.onmember = function (offset) { return postMessage(offset); };\n onmessage = astrm(strm);\n }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, opts) {\n var st = gzs(data);\n if (st + 8 > data.length)\n err(6, 'invalid gzip data');\n return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * zlibbed output for small inputs.\n */\n Zlib.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10, 1);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n function Unzlib(opts, cb) {\n Inflate.call(this, opts, cb);\n this.v = opts && opts.dictionary ? 2 : 1;\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 6 && !final)\n return;\n this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n function AsyncUnzlib(opts, cb) {\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Unzlib(ev.data);\n onmessage = astrm(strm);\n }, 11, 0);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, opts) {\n return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n function Decompress(opts, cb) {\n this.o = StrmOpt.call(this, opts, cb) || {};\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n }\n // init substream\n // overriden by AsyncDecompress\n Decompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (dat, final) {\n _this.ondata(dat, final);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(this.o)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(this.o)\n : new this.Z(this.o);\n this.i();\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n function AsyncDecompress(opts, cb) {\n Decompress.call(this, opts, cb);\n this.queuedSize = 0;\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n }\n AsyncDecompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (err, dat, final) {\n _this.ondata(err, dat, final);\n };\n this.s.ondrain = function (size) {\n _this.queuedSize -= size;\n if (_this.ondrain)\n _this.ondrain(size);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n this.queuedSize += chunk.length;\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, opts)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, opts)\n : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (val instanceof u8)\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return { s: r, r: slc(d, i - 1) };\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (final) {\n if (r.length)\n err(8);\n this.p = null;\n }\n else\n this.p = r;\n this.ondata(s, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td) {\n return td.decode(dat);\n }\n else {\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (r.length)\n err(8);\n return s;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n if (c != -1) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u, -1);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this.ondata(err, dat, final);\n _this.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this.d & 1))\n return;\n _this.u.splice(-1, 1);\n _this.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (data, final) {\n this.ondata(null, data, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this = this;\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (data, final) {\n try {\n this.i.push(data, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (data, final) {\n if (this.i.terminate)\n data = slc(data, 0);\n this.i.push(data, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var _a;\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n if (sc_1 == 4294967295) {\n _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n }\n else if (dd)\n sc_1 = -1;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this.k[0] == chks_3 && _this.c)\n _this.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n // Synchronously decompress under 512KB, or barely-compressed data\n if (su < 524288 || sc > 0.8 * su) {\n try {\n cbl(null, inflateSync(infl, { out: new u8(su) }));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n","/*\n * This filter should match checkly's ignore list: https://www.checklyhq.com/docs/platform/variables/\n * \"The characters / and * and the full or partial match of /artifact/, https://, http://, *********, and 123.\n * Values of the keys sha1, _sha1, pageref, downloadsPath, tracesDir, pageId and any string that ends with sha1\n * will not be scrubbed from the Playwright trace... Numbers are not scrubbed from the Playwright trace\"\n */\n\nconst SKIP_PATTERNS = [\n /^\\/$/, // Just a slash\n /^\\*+$/, // Just asterisks (single or multiple)\n /^[0-9]+$/, // Numbers (Checkly skips numbers in Playwright traces)\n // Note: ^[0-9]+$ already handles \"123\" as a numeric value, no need for explicit pattern\n] as const;\n\nconst SKIP_SUBSTRINGS = [\n \"/artifact/\", // Internal Playwright paths\n \"https://\", // Protocol markers should not be scrubbed\n \"http://\",\n \"*********\", // Placeholder value\n] as const;\n\nconst MIN_LENGTH = 3; // Skip very short values\n\nexport function filterSensitiveValues(values: readonly string[]): string[] {\n return values.filter(\n (value) =>\n !(\n value.length < MIN_LENGTH ||\n SKIP_PATTERNS.some((pattern) => pattern.test(value)) ||\n SKIP_SUBSTRINGS.some((sub) => value.includes(sub))\n ),\n );\n}\n","import { TextDecoder, TextEncoder } from \"node:util\";\n\nimport type { TraceEvent } from \"../trace-types\";\n\nimport { scrubTraceEvent } from \"./events\";\nimport { scrubString } from \"./primitives\";\n\n/**\n * Scrubs a JSON Lines file (like .trace or .network files).\n * Parses each line as JSON, scrubs it, and returns the result.\n */\nexport function scrubJsonLinesFile({\n content,\n sensitiveValues,\n}: {\n content: Uint8Array;\n sensitiveValues: readonly string[];\n}): Uint8Array {\n const decoder = new TextDecoder();\n const encoder = new TextEncoder();\n const text = decoder.decode(content);\n const lines = text.split(\"\\n\");\n\n const scrubbedLines = lines.map((line) => {\n if (!line.trim()) {\n return line;\n }\n\n try {\n const event: TraceEvent = JSON.parse(line);\n const scrubbed = scrubTraceEvent({ event, sensitiveValues });\n return JSON.stringify(scrubbed);\n } catch {\n // We've verified coverage of all 13 Playwright trace event types (see trace-types.ts).\n // The ts-pattern .exhaustive() provides compile-time guarantees, so this catch is\n // most likely malformed JSON rather than a missing event type.\n //\n // Fall back to text-based scrubbing rather than throwing or passing through:\n // - Throwing would fail the entire trace for one bad line\n // - Passing through unchanged could leak sensitive data\n // - Text-based scrubbing (replaceAll) ensures sensitive values are replaced\n //\n // The risk is false positives (e.g., scrubbing sha1 hashes that happen to match\n // a sensitive value), but that's safer than false negatives (leaking data).\n // If it truly is a malformed JSON, then the user probably wouldn't be able to see it via the trace anyway,\n // so the risk that scrubbing a false positive sensitive value would break the trace is acceptable.\n return scrubString({ sensitiveValues, str: line });\n }\n });\n\n return encoder.encode(scrubbedLines.join(\"\\n\"));\n}\n\n/**\n * Scrubs a text file by replacing all sensitive values.\n */\nexport function scrubTextFile({\n content,\n sensitiveValues,\n}: {\n content: Uint8Array;\n sensitiveValues: readonly string[];\n}): Uint8Array {\n const decoder = new TextDecoder();\n const encoder = new TextEncoder();\n const text = scrubString({ sensitiveValues, str: decoder.decode(content) });\n return encoder.encode(text);\n}\n","/**\n * Symbols used internally within ts-pattern to construct and discriminate\n * Guard, Not, and Select, and AnonymousSelect patterns\n *\n * Symbols have the advantage of not appearing in auto-complete suggestions in\n * user defined patterns, and eliminate the risk of property\n * overlap between ts-pattern internals and user defined patterns.\n *\n * These symbols have to be visible to tsc for type inference to work, but\n * users should not import them\n * @module\n * @private\n * @internal\n */\n\nexport const matcher = Symbol.for('@ts-pattern/matcher');\nexport type matcher = typeof matcher;\n\nexport const unset = Symbol.for('@ts-pattern/unset');\nexport type unset = typeof unset;\n\nexport const isVariadic = Symbol.for('@ts-pattern/isVariadic');\nexport type isVariadic = typeof isVariadic;\n\n// can't be a symbol because this key has to be enumerable.\nexport const anonymousSelectKey = '@ts-pattern/anonymous-select-key';\nexport type anonymousSelectKey = typeof anonymousSelectKey;\n\nexport const override = Symbol.for('@ts-pattern/override');\nexport type override = typeof override;\n","/**\n * @module\n * @private\n * @internal\n */\n\nimport * as symbols from './symbols';\nimport { SelectionType } from '../types/FindSelected';\nimport { Pattern, Matcher, MatcherType, AnyMatcher } from '../types/Pattern';\n\n// @internal\nexport const isObject = (value: unknown): value is Object =>\n Boolean(value && typeof value === 'object');\n\n// @internal\nexport const isMatcher = (\n x: unknown\n): x is Matcher<unknown, unknown, MatcherType, SelectionType> => {\n const pattern = x as Matcher<unknown, unknown, MatcherType, SelectionType>;\n return pattern && !!pattern[symbols.matcher];\n};\n\n// @internal\nconst isOptionalPattern = (\n x: unknown\n): x is Matcher<unknown, unknown, 'optional', SelectionType> => {\n return isMatcher(x) && x[symbols.matcher]().matcherType === 'optional';\n};\n\n// tells us if the value matches a given pattern.\n// @internal\nexport const matchPattern = (\n pattern: any,\n value: any,\n select: (key: string, value: unknown) => void\n): boolean => {\n if (isMatcher(pattern)) {\n const matcher = pattern[symbols.matcher]();\n const { matched, selections } = matcher.match(value);\n if (matched && selections) {\n Object.keys(selections).forEach((key) => select(key, selections[key]));\n }\n return matched;\n }\n\n if (isObject(pattern)) {\n if (!isObject(value)) return false;\n\n // Tuple pattern\n if (Array.isArray(pattern)) {\n if (!Array.isArray(value)) return false;\n let startPatterns = [];\n let endPatterns = [];\n let variadicPatterns: AnyMatcher[] = [];\n\n for (const i of pattern.keys()) {\n const subpattern = pattern[i];\n if (isMatcher(subpattern) && subpattern[symbols.isVariadic]) {\n variadicPatterns.push(subpattern);\n } else if (variadicPatterns.length) {\n endPatterns.push(subpattern);\n } else {\n startPatterns.push(subpattern);\n }\n }\n\n if (variadicPatterns.length) {\n if (variadicPatterns.length > 1) {\n throw new Error(\n `Pattern error: Using \\`...P.array(...)\\` several times in a single pattern is not allowed.`\n );\n }\n\n if (value.length < startPatterns.length + endPatterns.length) {\n return false;\n }\n\n const startValues = value.slice(0, startPatterns.length);\n const endValues =\n endPatterns.length === 0 ? [] : value.slice(-endPatterns.length);\n const middleValues = value.slice(\n startPatterns.length,\n endPatterns.length === 0 ? Infinity : -endPatterns.length\n );\n\n return (\n startPatterns.every((subPattern, i) =>\n matchPattern(subPattern, startValues[i], select)\n ) &&\n endPatterns.every((subPattern, i) =>\n matchPattern(subPattern, endValues[i], select)\n ) &&\n (variadicPatterns.length === 0\n ? true\n : matchPattern(variadicPatterns[0], middleValues, select))\n );\n }\n\n return pattern.length === value.length\n ? pattern.every((subPattern, i) =>\n matchPattern(subPattern, value[i], select)\n )\n : false;\n }\n\n return Reflect.ownKeys(pattern).every((k): boolean => {\n const subPattern = pattern[k];\n\n return (\n (k in value || isOptionalPattern(subPattern)) &&\n matchPattern(subPattern, value[k], select)\n );\n });\n }\n\n return Object.is(value, pattern);\n};\n\n// @internal\nexport const getSelectionKeys = (pattern: any): string[] => {\n if (isObject(pattern)) {\n if (isMatcher(pattern)) {\n return pattern[symbols.matcher]().getSelectionKeys?.() ?? [];\n }\n if (Array.isArray(pattern)) return flatMap(pattern, getSelectionKeys);\n return flatMap(Object.values(pattern), getSelectionKeys);\n }\n return [];\n};\n\n// @internal\nexport const flatMap = <a, b>(\n xs: readonly a[],\n f: (v: a) => readonly b[]\n): b[] => xs.reduce<b[]>((acc, x) => acc.concat(f(x)), []);\n","import { MatchedValue, Pattern, UnknownProperties } from './types/Pattern';\nimport * as P from './patterns';\nimport { matchPattern } from './internals/helpers';\nimport { WithDefault } from './types/helpers';\n\n/**\n * This constraint allows using additional properties\n * in object patterns. See \"should allow targetting unknown properties\"\n * unit test in `is-matching.test.ts`.\n */\ntype PatternConstraint<T> = T extends readonly any[]\n ? P.Pattern<T>\n : T extends object\n ? P.Pattern<T> & UnknownProperties\n : P.Pattern<T>;\n\n/**\n * `isMatching` takes pattern and returns a **type guard** function, cheching if a value matches this pattern.\n *\n * [Read documentation for `isMatching` on GitHub](https://github.com/gvergnaud/ts-pattern#ismatching)\n *\n * @example\n * const hasName = isMatching({ name: P.string })\n *\n * declare let input: unknown\n *\n * if (hasName(input)) {\n * // `input` inferred as { name: string }\n * return input.name\n * }\n */\nexport function isMatching<const p extends Pattern<unknown>>(\n pattern: p\n): (value: unknown) => value is P.infer<p>;\n/**\n * `isMatching` takes pattern and a value and checks if the value matches this pattern.\n *\n * [Read documentation for `isMatching` on GitHub](https://github.com/gvergnaud/ts-pattern#ismatching)\n *\n * @example\n * declare let input: unknown\n *\n * if (isMatching({ name: P.string }, input)) {\n * // `input` inferred as { name: string }\n * return input.name\n * }\n */\nexport function isMatching<const T, const P extends PatternConstraint<T>>(\n pattern: P,\n value: T\n): value is T & WithDefault<P.narrow<T, P>, P.infer<P>>;\n\nexport function isMatching<const p extends Pattern<any>>(\n ...args: [pattern: p, value?: any]\n): boolean | ((vale: any) => boolean) {\n if (args.length === 1) {\n const [pattern] = args;\n return (value: any): value is MatchedValue<any, P.infer<p>> =>\n matchPattern(pattern, value, () => {});\n }\n if (args.length === 2) {\n const [pattern, value] = args;\n return matchPattern(pattern, value, () => {});\n }\n\n throw new Error(\n `isMatching wasn't given the right number of arguments: expected 1 or 2, received ${args.length}.`\n );\n}\n","/**\n * The `P` module contains patterns for primitive types, wildcards and\n * other pattern-matching utilities.\n *\n * @module\n */\n\nimport { matchPattern, getSelectionKeys, flatMap } from './internals/helpers';\nimport * as symbols from './internals/symbols';\nimport { matcher } from './internals/symbols';\nimport { isMatching } from './is-matching';\nimport { ExtractPreciseValue } from './types/ExtractPreciseValue';\nimport { Fn } from './types/helpers';\nimport { InvertPattern } from './types/InvertPattern';\nimport {\n Pattern,\n UnknownValuePattern,\n OptionalP,\n ArrayP,\n MapP,\n SetP,\n AndP,\n OrP,\n NotP,\n GuardP,\n SelectP,\n AnonymousSelectP,\n GuardExcludeP,\n CustomP,\n Matcher,\n StringPattern,\n UnknownPattern,\n NumberPattern,\n BooleanPattern,\n BigIntPattern,\n NullishPattern,\n SymbolPattern,\n Chainable,\n BigIntChainable,\n NumberChainable,\n StringChainable,\n ArrayChainable,\n Variadic,\n NonNullablePattern,\n RecordP,\n} from './types/Pattern';\n\nexport type {\n /**\n * `Pattern<T>` is the type of all patterns\n * that can match a value of type `T`.\n */\n Pattern,\n\n /**\n * `unstable_Fn` can be used to created a\n * a Matchable instance – a custom type that\n * can be used as a pattern.\n *\n * @experimental This feature is unstable.\n */\n Fn as unstable_Fn,\n};\n\nexport { matcher };\n\n/**\n * A `Matchable` is an object implementing\n * the Matcher Protocol. It must have a `[P.matcher]: P.Matcher<NarrowFn>`\n * key, which defines how this object should be matched by TS-Pattern.\n *\n * @experimental This feature is unstable.\n *\n * @example\n * ```ts\n * class Some<T> implements P.unstable_Matchable {\n * [P.matcher](): P.unstable_Matcher<Some<T>>\n * }\n * ```\n */\nexport type unstable_Matchable<\n narrowedOrFn,\n input = unknown,\n pattern = never\n> = CustomP<input, pattern, narrowedOrFn>;\n\n/**\n * A `Matcher` is an object with `match` function, which\n * defines how this object should be matched by TS-Pattern.\n *\n * @experimental This feature is unstable.\n *\n * @example\n * ```ts\n * class Some<T> implements P.unstable_Matchable {\n * [P.matcher](): P.unstable_Matcher<Some<T>>\n * }\n * ```\n */\nexport type unstable_Matcher<\n narrowedOrFn,\n input = unknown,\n pattern = never\n> = ReturnType<CustomP<input, pattern, narrowedOrFn>[matcher]>;\n\n/**\n * `P.infer<typeof somePattern>` will return the type of the value\n * matched by this pattern.\n *\n * [Read the documentation for `P.infer` on GitHub](https://github.com/gvergnaud/ts-pattern#pinfer)\n *\n * @example\n * const userPattern = { name: P.string }\n * type User = P.infer<typeof userPattern>\n */\nexport type infer<pattern> = InvertPattern<NoInfer<pattern>, unknown>;\n\n/**\n * `P.narrow<Input, Pattern>` will narrow the input type to only keep\n * the set of values that are compatible with the provided pattern type.\n *\n * [Read the documentation for `P.narrow` on GitHub](https://github.com/gvergnaud/ts-pattern#pnarrow)\n *\n * @example\n * type Input = ['a' | 'b' | 'c', 'a' | 'b' | 'c']\n * const Pattern = ['a', P.union('a', 'b')] as const\n *\n * type Narrowed = P.narrow<Input, typeof Pattern>\n * // ^? ['a', 'a' | 'b']\n */\nexport type narrow<input, pattern> = ExtractPreciseValue<\n input,\n InvertPattern<pattern, input>\n>;\n\nfunction chainable<pattern extends Matcher<any, any, any, any, any>>(\n pattern: pattern\n): Chainable<pattern> {\n return Object.assign(pattern, {\n optional: () => optional(pattern),\n and: (p2: any) => intersection(pattern, p2),\n or: (p2: any) => union(pattern, p2),\n select: (key: any) =>\n key === undefined ? select(pattern) : select(key, pattern),\n }) as Chainable<pattern>;\n}\n\nconst variadic = <pattern extends {}>(pattern: pattern): Variadic<pattern> =>\n Object.assign(pattern, {\n [Symbol.iterator](): Iterator<pattern, void, undefined> {\n let i = 0;\n const variadicPattern = Object.assign(pattern, {\n [symbols.isVariadic]: true,\n });\n const values: IteratorResult<pattern, void>[] = [\n { value: variadicPattern, done: false },\n { done: true, value: undefined },\n ];\n return {\n next: () => values[i++] ?? values.at(-1)!,\n };\n },\n });\n\nfunction arrayChainable<pattern extends Matcher<any, any, any, any, any>>(\n pattern: pattern\n): ArrayChainable<pattern> {\n return Object.assign(variadic(pattern), {\n optional: () => arrayChainable(optional(pattern)),\n select: (key: any) =>\n arrayChainable(\n key === undefined ? select(pattern) : select(key, pattern)\n ),\n }) as any;\n}\n\n/**\n * `P.optional(subpattern)` takes a sub pattern and returns a pattern which matches if the\n * key is undefined or if it is defined and the sub pattern matches its value.\n *\n * [Read the documentation for `P.optional` on GitHub](https://github.com/gvergnaud/ts-pattern#poptional-patterns)\n *\n * @example\n * match(value)\n * .with({ greeting: P.optional('Hello') }, () => 'will match { greeting?: \"Hello\" }')\n */\nexport function optional<\n input,\n const pattern extends unknown extends input\n ? UnknownValuePattern\n : Pattern<input>\n>(pattern: pattern): Chainable<OptionalP<input, pattern>, 'optional'> {\n return chainable({\n [matcher]() {\n return {\n match: <UnknownInput>(value: UnknownInput | input) => {\n let selections: Record<string, unknown[]> = {};\n const selector = (key: string, value: any) => {\n selections[key] = value;\n };\n if (value === undefined) {\n getSelectionKeys(pattern).forEach((key) =>\n selector(key, undefined)\n );\n return { matched: true, selections };\n }\n const matched = matchPattern(pattern, value, selector);\n return { matched, selections };\n },\n getSelectionKeys: () => getSelectionKeys(pattern),\n matcherType: 'optional',\n };\n },\n });\n}\n\ntype UnwrapArray<xs> = xs extends readonly (infer x)[] ? x : never;\n\ntype UnwrapSet<xs> = xs extends Set<infer x> ? x : never;\n\ntype UnwrapMapKey<xs> = xs extends Map<infer k, any> ? k : never;\n\ntype UnwrapMapValue<xs> = xs extends Map<any, infer v> ? v : never;\n\ntype UnwrapRecordKey<xs> = xs extends Record<infer k, any> ? k : never;\n\ntype UnwrapRecordValue<xs> = xs extends Record<any, infer v> ? v : never;\n\ntype WithDefault<a, b> = [a] extends [never] ? b : a;\n\n/**\n * `P.array(subpattern)` takes a sub pattern and returns a pattern, which matches\n * arrays if all their elements match the sub pattern.\n *\n * [Read the documentation for `P.array` on GitHub](https://github.com/gvergnaud/ts-pattern#parray-patterns)\n *\n * @example\n * match(value)\n * .with({ users: P.array({ name: P.string }) }, () => 'will match { name: string }[]')\n */\nexport function array<input>(): ArrayChainable<ArrayP<input, unknown>>;\nexport function array<\n input,\n const pattern extends Pattern<WithDefault<UnwrapArray<input>, unknown>>\n>(pattern: pattern): ArrayChainable<ArrayP<input, pattern>>;\nexport function array(\n ...args: [pattern?: any]\n): ArrayChainable<ArrayP<any, any>> {\n return arrayChainable({\n [matcher]() {\n return {\n match: (value: any) => {\n if (!Array.isArray(value)) return { matched: false };\n\n if (args.length === 0) return { matched: true };\n\n const pattern = args[0];\n let selections: Record<string, unknown[]> = {};\n\n if (value.length === 0) {\n getSelectionKeys(pattern).forEach((key) => {\n selections[key] = [];\n });\n return { matched: true, selections };\n }\n\n const selector = (key: string, value: unknown) => {\n selections[key] = (selections[key] || []).concat([value]);\n };\n\n const matched = value.every((v) =>\n matchPattern(pattern, v, selector)\n );\n\n return { matched, selections };\n },\n getSelectionKeys: () =>\n args.length === 0 ? [] : getSelectionKeys(args[0]),\n };\n },\n });\n}\n\n/**\n * `P.set(subpattern)` takes a sub pattern and returns a pattern that matches\n * sets if all their elements match the sub pattern.\n *\n * [Read `P.set` documentation on GitHub](https://github.com/gvergnaud/ts-pattern#pset-patterns)\n *\n * @example\n * match(value)\n * .with({ users: P.set(P.string) }, () => 'will match Set<string>')\n */\nexport function set<input>(): Chainable<SetP<input, unknown>>;\nexport function set<\n input,\n const pattern extends Pattern<WithDefault<UnwrapSet<input>, unknown>>\n>(pattern: pattern): Chainable<SetP<input, pattern>>;\nexport function set<\n input,\n const pattern extends Pattern<WithDefault<UnwrapSet<input>, unknown>>\n>(...args: [pattern?: pattern]): Chainable<SetP<input, pattern>> {\n return chainable({\n [matcher]() {\n return {\n match: <UnknownInput>(value: UnknownInput | input) => {\n if (!(value instanceof Set)) return { matched: false };\n\n let selections: Record<string, unknown[]> = {};\n\n if (value.size === 0) {\n return { matched: true, selections };\n }\n\n if (args.length === 0) return { matched: true };\n\n const selector = (key: string, value: unknown) => {\n selections[key] = (selections[key] || []).concat([value]);\n };\n\n const pattern = args[0];\n\n const matched = setEvery(value, (v) =>\n matchPattern(pattern, v, selector)\n );\n\n return { matched, selections };\n },\n getSelectionKeys: () =>\n args.length === 0 ? [] : getSelectionKeys(args[0]),\n };\n },\n });\n}\n\nconst setEvery = <T>(set: Set<T>, predicate: (value: T) => boolean) => {\n for (const value of set) {\n if (predicate(value)) continue;\n return false;\n }\n return true;\n};\n\n/**\n * `P.map(keyPattern, valuePattern)` takes a subpattern to match against the\n * key, a subpattern to match against the value and returns a pattern that\n * matches on maps where all elements inside the map match those two\n * subpatterns.\n *\n * [Read `P.map` documentation on GitHub](https://github.com/gvergnaud/ts-pattern#pmap-patterns)\n *\n * @example\n * match(value)\n * .with({ users: P.map(P.map(P.string, P.number)) }, (map) => `map's type is Map<string, number>`)\n */\nexport function map<input>(): Chainable<MapP<input, unknown, unknown>>;\nexport function map<\n input,\n const pkey extends Pattern<WithDefault<UnwrapMapKey<input>, unknown>>,\n const pvalue extends Pattern<WithDefault<UnwrapMapValue<input>, unknown>>\n>(patternKey: pkey, patternValue: pvalue): Chainable<MapP<input, pkey, pvalue>>;\nexport function map<\n input,\n const pkey extends Pattern<WithDefault<UnwrapMapKey<input>, unknown>>,\n const pvalue extends Pattern<WithDefault<UnwrapMapValue<input>, unknown>>\n>(\n ...args: [patternKey?: pkey, patternValue?: pvalue]\n): Chainable<MapP<input, pkey, pvalue>> {\n return chainable({\n [matcher]() {\n return {\n match: <UnknownInput>(value: UnknownInput | input) => {\n if (!(value instanceof Map)) return { matched: false };\n\n let selections: Record<string, unknown[]> = {};\n\n if (value.size === 0) {\n return { matched: true, selections };\n }\n\n const selector = (key: string, value: unknown) => {\n selections[key] = (selections[key] || []).concat([value]);\n };\n\n if (args.length === 0) return { matched: true };\n if (args.length === 1) {\n throw new Error(\n `\\`P.map\\` wasn\\'t given enough arguments. Expected (key, value), received ${args[0]?.toString()}`\n );\n }\n const [patternKey, patternValue] = args;\n\n const matched = mapEvery(value, (v, k) => {\n const keyMatch = matchPattern(patternKey, k, selector);\n const valueMatch = matchPattern(patternValue, v, selector);\n return keyMatch && valueMatch;\n });\n\n return { matched, selections };\n },\n getSelectionKeys: () =>\n args.length === 0\n ? []\n : [...getSelectionKeys(args[0]), ...getSelectionKeys(args[1])],\n };\n },\n });\n}\n\nconst mapEvery = <K, T>(\n map: Map<K, T>,\n predicate: (value: T, key: K) => boolean\n) => {\n for (const [key, value] of map.entries()) {\n if (predicate(value, key)) continue;\n return false;\n }\n return true;\n};\n\n/**\n * `P.record(keyPattern, valuePattern)` takes a subpattern to match against the\n * key, a subpattern to match against the value and returns a pattern that\n * matches on objects where all entries match those two\n * subpatterns.\n *\n * [Read `P.record` documentation on GitHub](https://github.com/gvergnaud/ts-pattern#precord-patterns)\n *\n * @example\n * match(value)\n * .with({ users: P.record(P.string, P.number) }, (obj) => `object's type is Record<string, number>`)\n */\nexport function record<\n input,\n const pvalue extends Pattern<UnwrapRecordValue<input>>\n>(patternValue: pvalue): Chainable<RecordP<input, StringPattern, pvalue>>;\nexport function record<\n input,\n const pkey extends Pattern<WithDefault<UnwrapRecordKey<input>, PropertyKey>>,\n const pvalue extends Pattern<WithDefault<UnwrapRecordValue<input>, unknown>>\n>(\n patternKey: pkey,\n patternValue?: pvalue\n): Chainable<RecordP<input, pkey, pvalue>>;\nexport function record(\n ...args: [patternKey?: unknown, patternValue?: unknown]\n): Chainable<RecordP<unknown, unknown, unknown>> {\n return chainable({\n [matcher]() {\n return {\n match: (value: unknown) => {\n if (\n value === null ||\n typeof value !== 'object' ||\n Array.isArray(value)\n ) {\n return { matched: false };\n }\n\n if (args.length === 0) {\n throw new Error(\n `\\`P.record\\` wasn\\'t given enough arguments. Expected (value) or (key, value), received ${args[0]?.toString()}`\n );\n }\n\n let selections: Record<string, unknown[]> = {};\n\n const selector = (key: string, value: unknown) => {\n selections[key] = (selections[key] || []).concat([value]);\n };\n\n const [patternKey, patternValue] =\n args.length === 1 ? [string, args[0]] : args;\n\n const matched = recordEvery(value, (k, v) => {\n // since number keys are coerced to strings, we need to coerce them back to numbers if the pattern is `number`\n const coercedKey =\n typeof k === 'string' && !Number.isNaN(Number(k))\n ? Number(k)\n : null;\n\n const coercedKeyMatch =\n coercedKey !== null\n ? matchPattern(patternKey, coercedKey, selector)\n : false;\n\n const keyMatch = matchPattern(patternKey, k, selector);\n\n const valueMatch = matchPattern(patternValue, v, selector);\n\n return (keyMatch || coercedKeyMatch) && valueMatch;\n });\n\n return { matched, selections };\n },\n getSelectionKeys: () =>\n args.length === 0\n ? []\n : [...getSelectionKeys(args[0]), ...getSelectionKeys(args[1])],\n };\n },\n });\n}\n\nconst recordEvery = <K extends PropertyKey, T>(\n record: Record<K, T>,\n predicate: (key: K, value: T) => boolean\n) => {\n const keys = Reflect.ownKeys(record);\n for (const key of keys) {\n if (predicate(key as K, record[key as K] as T)) continue;\n return false;\n }\n return true;\n};\n\n/**\n * `P.intersection(...patterns)` returns a pattern which matches\n * only if **every** patterns provided in parameter match the input.\n *\n * [Read the documentation for `P.intersection` on GitHub](https://github.com/gvergnaud/ts-pattern#pintersection-patterns)\n *\n * @example\n * match(value)\n * .with(\n * {\n * user: P.intersection(\n * { firstname: P.string },\n * { lastname: P.string },\n * { age: P.when(age => age > 21) }\n * )\n * },\n * ({ user }) => 'will match { firstname: string, lastname: string, age: number } if age > 21'\n * )\n */\nexport function intersection<\n input,\n const patterns extends readonly [Pattern<input>, ...Pattern<input>[]]\n>(...patterns: patterns): Chainable<AndP<input, patterns>> {\n return chainable({\n [matcher]: () => ({\n match: (value) => {\n let selections: Record<string, unknown[]> = {};\n const selector = (key: string, value: any) => {\n selections[key] = value;\n };\n const matched = (patterns as readonly UnknownValuePattern[]).every(\n (p) => matchPattern(p, value, selector)\n );\n return { matched, selections };\n },\n getSelectionKeys: () =>\n flatMap(patterns as readonly UnknownValuePattern[], getSelectionKeys),\n matcherType: 'and',\n }),\n });\n}\n\n/**\n * `P.union(...patterns)` returns a pattern which matches\n * if **at least one** of the patterns provided in parameter match the input.\n *\n * [Read the documentation for `P.union` on GitHub](https://github.com/gvergnaud/ts-pattern#punion-patterns)\n *\n * @example\n * match(value)\n * .with(\n * { type: P.union('a', 'b', 'c') },\n * ({ type }) => 'will match { type: \"a\" | \"b\" | \"c\" }'\n * )\n */\nexport function union<\n input,\n const patterns extends readonly [Pattern<input>, ...Pattern<input>[]]\n>(...patterns: patterns): Chainable<OrP<input, patterns>> {\n return chainable({\n [matcher]: () => ({\n match: <UnknownInput>(value: UnknownInput | input) => {\n let selections: Record<string, unknown[]> = {};\n const selector = (key: string, value: any) => {\n selections[key] = value;\n };\n flatMap(\n patterns as readonly UnknownValuePattern[],\n getSelectionKeys\n ).forEach((key) => selector(key, undefined));\n const matched = (patterns as readonly UnknownValuePattern[]).some((p) =>\n matchPattern(p, value, selector)\n );\n return { matched, selections };\n },\n getSelectionKeys: () =>\n flatMap(patterns as readonly UnknownValuePattern[], getSelectionKeys),\n matcherType: 'or',\n }),\n });\n}\n\n/**\n * `P.not(pattern)` returns a pattern which matches if the sub pattern\n * doesn't match.\n *\n * [Read the documentation for `P.not` on GitHub](https://github.com/gvergnaud/ts-pattern#pnot-patterns)\n *\n * @example\n * match<{ a: string | number }>(value)\n * .with({ a: P.not(P.string) }, (x) => 'will match { a: number }'\n * )\n */\n\nexport function not<\n input,\n const pattern extends Pattern<input> | UnknownValuePattern\n>(pattern: pattern): Chainable<NotP<input, pattern>> {\n return chainable({\n [matcher]: () => ({\n match: <UnknownInput>(value: UnknownInput | input) => ({\n matched: !matchPattern(pattern, value, () => {}),\n }),\n getSelectionKeys: () => [],\n matcherType: 'not',\n }),\n });\n}\n\n/**\n * `P.when((value) => boolean)` returns a pattern which matches\n * if the predicate returns true for the current input.\n *\n * [Read the documentation for `P.when` on GitHub](https://github.com/gvergnaud/ts-pattern#pwhen-patterns)\n *\n * @example\n * match<{ age: number }>(value)\n * .with({ age: P.when(age => age > 21) }, (x) => 'will match if value.age > 21'\n * )\n */\nexport function when<input, predicate extends (value: input) => unknown>(\n predicate: predicate\n): GuardP<\n input,\n predicate extends (value: any) => value is infer narrowed ? narrowed : never\n>;\nexport function when<input, narrowed extends input, excluded>(\n predicate: (input: input) => input is narrowed\n): GuardExcludeP<input, narrowed, excluded>;\nexport function when<input, predicate extends (value: input) => unknown>(\n predicate: predicate\n): GuardP<\n input,\n predicate extends (value: any) => value is infer narrowed ? narrowed : never\n> {\n return {\n [matcher]: () => ({\n match: <UnknownInput>(value: UnknownInput | input) => ({\n matched: Boolean(predicate(value as input)),\n }),\n }),\n };\n}\n\n/**\n * `P.select()` is a pattern which will always match,\n * and will inject the selected piece of input in the handler function.\n *\n * [Read the documentation for `P.select` on GitHub](https://github.com/gvergnaud/ts-pattern#pselect-patterns)\n *\n * @example\n * match<{ age: number }>(value)\n * .with({ age: P.select() }, (age) => 'age: number'\n * )\n */\nexport function select(): Chainable<AnonymousSelectP, 'select' | 'or' | 'and'>;\nexport function select<\n input,\n const patternOrKey extends\n | string\n | (unknown extends input ? UnknownValuePattern : Pattern<input>)\n>(\n patternOrKey: patternOrKey\n): patternOrKey extends string\n ? Chainable<SelectP<patternOrKey, 'select' | 'or' | 'and'>>\n : Chainable<\n SelectP<symbols.anonymousSelectKey, input, patternOrKey>,\n 'select' | 'or' | 'and'\n >;\nexport function select<\n input,\n const pattern extends unknown extends input\n ? UnknownValuePattern\n : Pattern<input>,\n const k extends string\n>(\n key: k,\n pattern: pattern\n): Chainable<SelectP<k, input, pattern>, 'select' | 'or' | 'and'>;\nexport function select(\n ...args: [keyOrPattern?: unknown | string, pattern?: unknown]\n): Chainable<SelectP<string>, 'select' | 'or' | 'and'> {\n const key: string | undefined =\n typeof args[0] === 'string' ? args[0] : undefined;\n const pattern: unknown =\n args.length === 2\n ? args[1]\n : typeof args[0] === 'string'\n ? undefined\n : args[0];\n return chainable({\n [matcher]() {\n return {\n match: (value) => {\n let selections: Record<string, unknown> = {\n [key ?? symbols.anonymousSelectKey]: value,\n };\n const selector = (key: string, value: any) => {\n selections[key] = value;\n };\n return {\n matched:\n pattern === undefined\n ? true\n : matchPattern(pattern, value, selector),\n selections: selections,\n };\n },\n getSelectionKeys: () =>\n [key ?? symbols.anonymousSelectKey].concat(\n pattern === undefined ? [] : getSelectionKeys(pattern)\n ),\n };\n },\n });\n}\n\nfunction isUnknown(x: unknown): x is unknown {\n return true;\n}\n\nfunction isNumber<T>(x: T | number): x is number {\n return typeof x === 'number';\n}\n\nfunction isString<T>(x: T | string): x is string {\n return typeof x === 'string';\n}\n\nfunction isBoolean<T>(x: T | boolean): x is boolean {\n return typeof x === 'boolean';\n}\n\nfunction isBigInt<T>(x: T | bigint): x is bigint {\n return typeof x === 'bigint';\n}\n\nfunction isSymbol<T>(x: T | symbol): x is symbol {\n return typeof x === 'symbol';\n}\n\nfunction isNullish<T>(x: T | null | undefined): x is null | undefined {\n return x === null || x === undefined;\n}\n\nfunction isNonNullable(x: unknown): x is {} {\n return x !== null && x !== undefined;\n}\n\ntype AnyConstructor = abstract new (...args: any[]) => any;\n\nfunction isInstanceOf<T extends AnyConstructor>(classConstructor: T) {\n return (val: unknown): val is InstanceType<T> =>\n val instanceof classConstructor;\n}\n\n/**\n * `P.any` is a wildcard pattern, matching **any value**.\n *\n * [Read the documentation for `P.any` on GitHub](https://github.com/gvergnaud/ts-pattern#p_-wildcard)\n *\n * @example\n * match(value)\n * .with(P.any, () => 'will always match')\n */\nexport const any: UnknownPattern = chainable(when(isUnknown));\n\n/**\n * `P.unknown` is a wildcard pattern, matching **unknown value**.\n *\n * [Read the documentation for `P.unknown` on GitHub](https://github.com/gvergnaud/ts-pattern#p_-wildcard)\n *\n * @example\n * match(value)\n * .with(P.unknown, () => 'will always match')\n */\nexport const unknown: UnknownPattern = chainable(when(isUnknown));\n\n/**\n * `P._` is a wildcard pattern, matching **any value**.\n * It's an alias to `P.any`.\n *\n * [Read the documentation for `P._` on GitHub](https://github.com/gvergnaud/ts-pattern#p_-wildcard)\n *\n * @example\n * match(value)\n * .with(P._, () => 'will always match')\n */\nexport const _ = any;\n\n/**\n * `P.string.startsWith(start)` is a pattern, matching **strings** starting with `start`.\n *\n * [Read the documentation for `P.string.startsWith` on GitHub](https://github.com/gvergnaud/ts-pattern#pstringstartsWith)\n *\n * @example\n * match(value)\n * .with(P.string.startsWith('A'), () => 'value starts with an A')\n */\n\nconst startsWith = <input, const start extends string>(\n start: start\n): GuardP<input, `${start}${string}`> =>\n when((value) => isString(value) && value.startsWith(start));\n\n/**\n * `P.string.endsWith(end)` is a pattern, matching **strings** ending with `end`.\n *\n * [Read the documentation for `P.string.endsWith` on GitHub](https://github.com/gvergnaud/ts-pattern#pstringendsWith)\n *\n * @example\n * match(value)\n * .with(P.string.endsWith('!'), () => 'value ends with an !')\n */\nconst endsWith = <input, const end extends string>(\n end: end\n): GuardP<input, `${string}${end}`> =>\n when((value) => isString(value) && value.endsWith(end));\n\n/**\n * `P.string.minLength(min)` is a pattern, matching **strings** with at least `min` characters.\n *\n * [Read the documentation for `P.string.minLength` on GitHub](https://github.com/gvergnaud/ts-pattern#pstringminLength)\n *\n * @example\n * match(value)\n * .with(P.string.minLength(10), () => 'string with more length >= 10')\n */\nconst minLength = <const min extends number>(min: min) =>\n when((value) => isString(value) && value.length >= min);\n\n/**\n * `P.string.length(len)` is a pattern, matching **strings** with exactly `len` characters.\n *\n * [Read the documentation for `P.string.length` on GitHub](https://github.com/gvergnaud/ts-pattern#pstringlength)\n *\n * @example\n * match(value)\n * .with(P.string.length(10), () => 'strings with length === 10')\n */\nconst length = <const len extends number>(len: len) =>\n when((value) => isString(value) && value.length === len);\n\n/**\n * `P.string.maxLength(max)` is a pattern, matching **strings** with at most `max` characters.\n *\n * [Read the documentation for `P.string.maxLength` on GitHub](https://github.com/gvergnaud/ts-pattern#pstringmaxLength)\n *\n * @example\n * match(value)\n * .with(P.string.maxLength(10), () => 'string with more length <= 10')\n */\nconst maxLength = <const max extends number>(max: max) =>\n when((value) => isString(value) && value.length <= max);\n\n/**\n * `P.string.includes(substr)` is a pattern, matching **strings** containing `substr`.\n *\n * [Read the documentation for `P.string.includes` on GitHub](https://github.com/gvergnaud/ts-pattern#pstringincludes)\n *\n * @example\n * match(value)\n * .with(P.string.includes('http'), () => 'value contains http')\n */\nconst includes = <input, const substr extends string>(\n substr: substr\n): GuardExcludeP<input, string, never> =>\n when((value) => isString(value) && value.includes(substr));\n\n/**\n * `P.string.regex(expr)` is a pattern, matching **strings** that `expr` regular expression.\n *\n * [Read the documentation for `P.string.regex` on GitHub](https://github.com/gvergnaud/ts-pattern#pstringregex)\n *\n * @example\n * match(value)\n * .with(P.string.regex(/^https?:\\/\\//), () => 'url')\n */\nconst regex = <input, const expr extends string | RegExp>(\n expr: expr\n): GuardExcludeP<input, string, never> =>\n when((value) => isString(value) && Boolean(value.match(expr)));\n\nconst stringChainable = <pattern extends Matcher<any, any, any, any, any>>(\n pattern: pattern\n): StringChainable<pattern> =>\n Object.assign(chainable(pattern), {\n startsWith: (str: string) =>\n stringChainable(intersection(pattern, startsWith(str))),\n endsWith: (str: string) =>\n stringChainable(intersection(pattern, endsWith(str))),\n minLength: (min: number) =>\n stringChainable(intersection(pattern, minLength(min))),\n length: (len: number) =>\n stringChainable(intersection(pattern, length(len))),\n maxLength: (max: number) =>\n stringChainable(intersection(pattern, maxLength(max))),\n includes: (str: string) =>\n stringChainable(intersection(pattern, includes(str))),\n regex: (str: string) => stringChainable(intersection(pattern, regex(str))),\n }) as any;\n\n/**\n * `P.string` is a wildcard pattern, matching any **string**.\n *\n * [Read the documentation for `P.string` on GitHub](https://github.com/gvergnaud/ts-pattern#pstring-wildcard)\n *\n * @example\n * match(value)\n * .with(P.string, () => 'will match on strings')\n */\nexport const string: StringPattern = stringChainable(when(isString));\n\n/**\n * `P.number.between(min, max)` matches **numbers** between `min` and `max`,\n * equal to min or equal to max.\n *\n * [Read the documentation for `P.number.between` on GitHub](https://github.com/gvergnaud/ts-pattern#pnumberbetween)\n *\n * @example\n * match(value)\n * .with(P.number.between(0, 10), () => '0 <= numbers <= 10')\n */\nconst between = <input, const min extends number, const max extends number>(\n min: min,\n max: max\n): GuardExcludeP<input, number, never> =>\n when((value) => isNumber(value) && min <= value && max >= value);\n\n/**\n * `P.number.lt(max)` matches **numbers** smaller than `max`.\n *\n * [Read the documentation for `P.number.lt` on GitHub](https://github.com/gvergnaud/ts-pattern#pnumberlt)\n *\n * @example\n * match(value)\n * .with(P.number.lt(10), () => 'numbers < 10')\n */\nconst lt = <input, const max extends number>(\n max: max\n): GuardExcludeP<input, number, never> =>\n when((value) => isNumber(value) && value < max);\n\n/**\n * `P.number.gt(min)` matches **numbers** greater than `min`.\n *\n * [Read the documentation for `P.number.gt` on GitHub](https://github.com/gvergnaud/ts-pattern#pnumbergt)\n *\n * @example\n * match(value)\n * .with(P.number.gt(10), () => 'numbers > 10')\n */\nconst gt = <input, const min extends number>(\n min: min\n): GuardExcludeP<input, number, never> =>\n when((value) => isNumber(value) && value > min);\n\n/**\n * `P.number.lte(max)` matches **numbers** smaller than or equal to `max`.\n *\n * [Read the documentation for `P.number.lte` on GitHub](https://github.com/gvergnaud/ts-pattern#pnumberlte)\n *\n * @example\n * match(value)\n * .with(P.number.lte(10), () => 'numbers <= 10')\n */\nconst lte = <input, const max extends number>(\n max: max\n): GuardExcludeP<input, number, never> =>\n when((value) => isNumber(value) && value <= max);\n\n/**\n * `P.number.gte(min)` matches **numbers** greater than or equal to `min`.\n *\n * [Read the documentation for `P.number.gte` on GitHub](https://github.com/gvergnaud/ts-pattern#pnumbergte)\n *\n * @example\n * match(value)\n * .with(P.number.gte(10), () => 'numbers >= 10')\n */\nconst gte = <input, const min extends number>(\n min: min\n): GuardExcludeP<input, number, never> =>\n when((value) => isNumber(value) && value >= min);\n\n/**\n * `P.number.int()` matches **integer** numbers.\n *\n * [Read the documentation for `P.number.int()` on GitHub](https://github.com/gvergnaud/ts-pattern#pnumberint)\n *\n * @example\n * match(value)\n * .with(P.number.int(), () => 'an integer')\n */\nconst int = <input>(): GuardExcludeP<input, number, never> =>\n when((value) => isNumber(value) && Number.isInteger(value));\n\n/**\n * `P.number.finite` matches **finite numbers**.\n *\n * [Read the documentation for `P.number.finite` on GitHub](https://github.com/gvergnaud/ts-pattern#pnumberfinite)\n *\n * @example\n * match(value)\n * .with(P.number.finite, () => 'not Infinity')\n */\nconst finite = <input>(): GuardExcludeP<input, number, never> =>\n when((value) => isNumber(value) && Number.isFinite(value));\n\n/**\n * `P.number.positive()` matches **positive** numbers.\n *\n * [Read the documentation for `P.number.positive()` on GitHub](https://github.com/gvergnaud/ts-pattern#pnumberpositive)\n *\n * @example\n * match(value)\n * .with(P.number.positive(), () => 'number > 0')\n */\nconst positive = <input>(): GuardExcludeP<input, number, never> =>\n when((value) => isNumber(value) && value > 0);\n\n/**\n * `P.number.negative()` matches **negative** numbers.\n *\n * [Read the documentation for `P.number.negative()` on GitHub](https://github.com/gvergnaud/ts-pattern#pnumbernegative)\n *\n * @example\n * match(value)\n * .with(P.number.negative(), () => 'number < 0')\n */\nconst negative = <input>(): GuardExcludeP<input, number, never> =>\n when((value) => isNumber(value) && value < 0);\n\nconst numberChainable = <pattern extends Matcher<any, any, any, any, any>>(\n pattern: pattern\n): NumberChainable<pattern> =>\n Object.assign(chainable(pattern), {\n between: (min: number, max: number) =>\n numberChainable(intersection(pattern, between(min, max))),\n lt: (max: number) => numberChainable(intersection(pattern, lt(max))),\n gt: (min: number) => numberChainable(intersection(pattern, gt(min))),\n lte: (max: number) => numberChainable(intersection(pattern, lte(max))),\n gte: (min: number) => numberChainable(intersection(pattern, gte(min))),\n int: () => numberChainable(intersection(pattern, int())),\n finite: () => numberChainable(intersection(pattern, finite())),\n positive: () => numberChainable(intersection(pattern, positive())),\n negative: () => numberChainable(intersection(pattern, negative())),\n }) as any;\n\n/**\n * `P.number` is a wildcard pattern, matching any **number**.\n *\n * [Read the documentation for `P.number` on GitHub](https://github.com/gvergnaud/ts-pattern#pnumber-wildcard)\n *\n * @example\n * match(value)\n * .with(P.number, () => 'will match on numbers')\n */\nexport const number: NumberPattern = numberChainable(when(isNumber));\n\n/**\n * `P.bigint.between(min, max)` matches **bigint** between `min` and `max`,\n * equal to min or equal to max.\n *\n * [Read the documentation for `P.bigint.between` on GitHub](https://github.com/gvergnaud/ts-pattern#pnumberbetween)\n *\n * @example\n * match(value)\n * .with(P.bigint.between(0, 10), () => '0 <= bigints <= 10')\n */\nconst betweenBigInt = <\n input,\n const min extends bigint,\n const max extends bigint\n>(\n min: min,\n max: max\n): GuardExcludeP<input, bigint, never> =>\n when((value) => isBigInt(value) && min <= value && max >= value);\n\n/**\n * `P.bigint.lt(max)` matches **bigint** smaller than `max`.\n *\n * [Read the documentation for `P.bigint.lt` on GitHub](https://github.com/gvergnaud/ts-pattern#pnumberlt)\n *\n * @example\n * match(value)\n * .with(P.bigint.lt(10), () => 'bigints < 10')\n */\nconst ltBigInt = <input, const max extends bigint>(\n max: max\n): GuardExcludeP<input, bigint, never> =>\n when((value) => isBigInt(value) && value < max);\n\n/**\n * `P.bigint.gt(min)` matches **bigint** greater than `min`.\n *\n * [Read the documentation for `P.bigint.gt` on GitHub](https://github.com/gvergnaud/ts-pattern#pnumbergt)\n *\n * @example\n * match(value)\n * .with(P.bigint.gt(10), () => 'bigints > 10')\n */\nconst gtBigInt = <input, const min extends bigint>(\n min: min\n): GuardExcludeP<input, bigint, never> =>\n when((value) => isBigInt(value) && value > min);\n\n/**\n * `P.bigint.lte(max)` matches **bigint** smaller than or equal to `max`.\n *\n * [Read the documentation for `P.bigint.lte` on GitHub](https://github.com/gvergnaud/ts-pattern#pnumberlte)\n *\n * @example\n * match(value)\n * .with(P.bigint.lte(10), () => 'bigints <= 10')\n */\nconst lteBigInt = <input, const max extends bigint>(\n max: max\n): GuardExcludeP<input, bigint, never> =>\n when((value) => isBigInt(value) && value <= max);\n\n/**\n * `P.bigint.gte(min)` matches **bigint** greater than or equal to `min`.\n *\n * [Read the documentation for `P.bigint.gte` on GitHub](https://github.com/gvergnaud/ts-pattern#pbigintgte)\n *\n * @example\n * match(value)\n * .with(P.bigint.gte(10), () => 'bigints >= 10')\n */\nconst gteBigInt = <input, const min extends bigint>(\n min: min\n): GuardExcludeP<input, bigint, never> =>\n when((value) => isBigInt(value) && value >= min);\n\n/**\n * `P.bigint.positive()` matches **positive** bigints.\n *\n * [Read the documentation for `P.bigint.positive()` on GitHub](https://github.com/gvergnaud/ts-pattern#pbigintpositive)\n *\n * @example\n * match(value)\n * .with(P.bigint.positive(), () => 'bigint > 0')\n */\nconst positiveBigInt = <input>(): GuardExcludeP<input, bigint, never> =>\n when((value) => isBigInt(value) && value > 0);\n\n/**\n * `P.bigint.negative()` matches **negative** bigints.\n *\n * [Read the documentation for `P.bigint.negative()` on GitHub](https://github.com/gvergnaud/ts-pattern#pbigintnegative)\n *\n * @example\n * match(value)\n * .with(P.bigint.negative(), () => 'bigint < 0')\n */\nconst negativeBigInt = <input>(): GuardExcludeP<input, bigint, never> =>\n when((value) => isBigInt(value) && value < 0);\n\nconst bigintChainable = <pattern extends Matcher<any, any, any, any, any>>(\n pattern: pattern\n): BigIntChainable<pattern> =>\n Object.assign(chainable(pattern), {\n between: (min: bigint, max: bigint) =>\n bigintChainable(intersection(pattern, betweenBigInt(min, max))),\n lt: (max: bigint) => bigintChainable(intersection(pattern, ltBigInt(max))),\n gt: (min: bigint) => bigintChainable(intersection(pattern, gtBigInt(min))),\n lte: (max: bigint) =>\n bigintChainable(intersection(pattern, lteBigInt(max))),\n gte: (min: bigint) =>\n bigintChainable(intersection(pattern, gteBigInt(min))),\n positive: () => bigintChainable(intersection(pattern, positiveBigInt())),\n negative: () => bigintChainable(intersection(pattern, negativeBigInt())),\n }) as any;\n\n/**\n * `P.bigint` is a wildcard pattern, matching any **bigint**.\n *\n * [Read the documentation for `P.bigint` on GitHub](https://github.com/gvergnaud/ts-pattern#number-wildcard)\n *\n * @example\n * .with(P.bigint, () => 'will match on bigints')\n */\nexport const bigint: BigIntPattern = bigintChainable(when(isBigInt));\n\n/**\n * `P.boolean` is a wildcard pattern, matching any **boolean**.\n *\n * [Read the documentation for `P.boolean` on GitHub](https://github.com/gvergnaud/ts-pattern#boolean-wildcard)\n *\n * @example\n * .with(P.boolean, () => 'will match on booleans')\n */\nexport const boolean: BooleanPattern = chainable(when(isBoolean));\n\n/**\n * `P.symbol` is a wildcard pattern, matching any **symbol**.\n *\n * [Read the documentation for `P.symbol` on GitHub](https://github.com/gvergnaud/ts-pattern#symbol-wildcard)\n *\n * @example\n * .with(P.symbol, () => 'will match on symbols')\n */\nexport const symbol: SymbolPattern = chainable(when(isSymbol));\n\n/**\n * `P.nullish` is a wildcard pattern, matching **null** or **undefined**.\n *\n * [Read the documentation for `P.nullish` on GitHub](https://github.com/gvergnaud/ts-pattern#nullish-wildcard)\n *\n * @example\n * .with(P.nullish, (x) => `${x} is null or undefined`)\n */\nexport const nullish: NullishPattern = chainable(when(isNullish));\n\n/**\n * `P.nonNullable` is a wildcard pattern, matching everything except **null** or **undefined**.\n *\n * [Read the documentation for `P.nonNullable` on GitHub](https://github.com/gvergnaud/ts-pattern#nonNullable-wildcard)\n *\n * @example\n * .with(P.nonNullable, (x) => `${x} isn't null nor undefined`)\n */\nexport const nonNullable: NonNullablePattern = chainable(when(isNonNullable));\n\n/**\n * `P.instanceOf(SomeClass)` is a pattern matching instances of a given class.\n *\n * [Read the documentation for `P.instanceOf` on GitHub](https://github.com/gvergnaud/ts-pattern#pinstanceof-patterns)\n *\n * @example\n * .with(P.instanceOf(SomeClass), () => 'will match on SomeClass instances')\n */\nexport function instanceOf<T extends AnyConstructor>(\n classConstructor: T\n): Chainable<GuardP<unknown, InstanceType<T>>> {\n return chainable(when(isInstanceOf(classConstructor)));\n}\n\n/**\n * `P.shape(somePattern)` lets you call methods like `.optional()`, `.and`, `.or` and `.select()`\n * On structural patterns, like objects and arrays.\n *\n * [Read the documentation for `P.shape` on GitHub](https://github.com/gvergnaud/ts-pattern#pshape-patterns)\n *\n * @example\n * .with(\n * {\n * state: P.shape({ status: \"success\" }).optional().select()\n * },\n * (state) => 'match the success state, or undefined.'\n * )\n */\nexport function shape<input, const pattern extends Pattern<input>>(\n pattern: pattern\n): Chainable<GuardP<input, InvertPattern<pattern, input>>>;\nexport function shape(pattern: UnknownValuePattern) {\n return chainable(when(isMatching(pattern)));\n}\n","/**\n * Error when the given input value does not match any included pattern\n * and .exhaustive() was specified\n */\nexport class NonExhaustiveError extends Error {\n constructor(public input: unknown) {\n let displayedValue;\n try {\n displayedValue = JSON.stringify(input);\n } catch (e) {\n displayedValue = input;\n }\n super(`Pattern matching error: no pattern matches value ${displayedValue}`);\n }\n}\n","import { Pattern } from './types/Pattern';\nimport { Match } from './types/Match';\nimport * as symbols from './internals/symbols';\nimport { matchPattern } from './internals/helpers';\nimport { NonExhaustiveError } from './errors';\n\ntype MatchState<output> =\n | { matched: true; value: output }\n | { matched: false; value: undefined };\n\nconst unmatched: MatchState<never> = {\n matched: false,\n value: undefined,\n};\n\n/**\n * `match` creates a **pattern matching expression**.\n * * Use `.with(pattern, handler)` to pattern match on the input.\n * * Use `.exhaustive()` or `.otherwise(() => defaultValue)` to end the expression and get the result.\n *\n * [Read the documentation for `match` on GitHub](https://github.com/gvergnaud/ts-pattern#match)\n *\n * @example\n * declare let input: \"A\" | \"B\";\n *\n * return match(input)\n * .with(\"A\", () => \"It's an A!\")\n * .with(\"B\", () => \"It's a B!\")\n * .exhaustive();\n *\n */\nexport function match<const input, output = symbols.unset>(\n value: input\n): Match<input, output> {\n return new MatchExpression(value, unmatched) as any;\n}\n\n/**\n * This class represents a match expression. It follows the\n * builder pattern, we chain methods to add features to the expression\n * until we call `.exhaustive`, `.otherwise` or the unsafe `.run`\n * method to execute it.\n *\n * The types of this class aren't public, the public type definition\n * can be found in src/types/Match.ts.\n */\nclass MatchExpression<input, output> {\n constructor(private input: input, private state: MatchState<output>) {}\n\n with(...args: any[]): MatchExpression<input, output> {\n if (this.state.matched) return this;\n\n const handler: (selection: unknown, value: input) => output =\n args[args.length - 1];\n\n const patterns: Pattern<input>[] = [args[0]];\n let predicate: ((value: input) => unknown) | undefined = undefined;\n\n if (args.length === 3 && typeof args[1] === 'function') {\n // case with guard as second argument\n predicate = args[1];\n } else if (args.length > 2) {\n // case with several patterns\n patterns.push(...args.slice(1, args.length - 1));\n }\n\n let hasSelections = false;\n let selected: Record<string, unknown> = {};\n const select = (key: string, value: unknown) => {\n hasSelections = true;\n selected[key] = value;\n };\n\n const matched =\n patterns.some((pattern) => matchPattern(pattern, this.input, select)) &&\n (predicate ? Boolean(predicate(this.input)) : true);\n\n const selections = hasSelections\n ? symbols.anonymousSelectKey in selected\n ? selected[symbols.anonymousSelectKey]\n : selected\n : this.input;\n\n const state = matched\n ? {\n matched: true as const,\n value: handler(selections, this.input),\n }\n : unmatched;\n\n return new MatchExpression(this.input, state);\n }\n\n when(\n predicate: (value: input) => unknown,\n handler: (selection: input, value: input) => output\n ): MatchExpression<input, output> {\n if (this.state.matched) return this;\n\n const matched = Boolean(predicate(this.input));\n\n return new MatchExpression<input, output>(\n this.input,\n matched\n ? { matched: true, value: handler(this.input, this.input) }\n : unmatched\n );\n }\n\n otherwise(handler: (value: input) => output): output {\n if (this.state.matched) return this.state.value;\n return handler(this.input);\n }\n\n exhaustive(unexpectedValueHandler = defaultCatcher): output {\n if (this.state.matched) return this.state.value;\n return unexpectedValueHandler(this.input);\n }\n\n run(): output {\n return this.exhaustive();\n }\n\n returnType() {\n return this;\n }\n\n narrow() {\n return this;\n }\n}\n\nfunction defaultCatcher(input: unknown): never {\n throw new NonExhaustiveError(input);\n}\n","const REDACTED_PLACEHOLDER = \"[REDACTED]\" as const;\n\n// Match Checkly behavior here: https://www.checklyhq.com/docs/platform/variables/\n// Don't scrub artifact references or page identifiers in traces.\nconst NON_SCRUB_KEYS = new Set([\n \"sha1\",\n \"_sha1\",\n \"pageref\",\n \"downloadsPath\",\n \"tracesDir\",\n \"pageId\",\n]);\n\n/**\n * Scrubs a string by replacing all sensitive values with the redacted placeholder.\n * Assumes sensitiveValues are pre-sorted by length (longest first) in scrubTrace()\n * to prevent partial replacements (e.g., 'password' before 'password123' would leave '123').\n */\nexport function scrubString({\n sensitiveValues,\n str,\n}: {\n str: string;\n sensitiveValues: readonly string[];\n}): string {\n return sensitiveValues.reduce(\n (result, value) => result.replaceAll(value, REDACTED_PLACEHOLDER),\n str,\n );\n}\n\n/**\n * Helper function to check if a value is a record.\n * @param value - The value to check if it is a record.\n * @returns True if the value is a record, false otherwise.\n */\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n/**\n * Recursively scrubs an unknown value, handling strings, arrays, and objects.\n */\nexport function scrubValue({\n sensitiveValues,\n value,\n}: {\n value: unknown;\n sensitiveValues: readonly string[];\n}): unknown {\n return typeof value === \"string\"\n ? scrubString({ sensitiveValues, str: value })\n : Array.isArray(value)\n ? value.map((v) => scrubValue({ sensitiveValues, value: v }))\n : isRecord(value)\n ? scrubObject({ obj: value, sensitiveValues })\n : value; // numbers, booleans, null - pass through\n}\n\nfunction shouldPreserveKey(key: string): boolean {\n return NON_SCRUB_KEYS.has(key) ? true : key.toLowerCase().endsWith(\"sha1\");\n}\n\n/**\n * Scrubs an object's values, but never scrubs sha1-related keys.\n * Generic to preserve the input type and avoid repetitive casting at call sites.\n */\nexport function scrubObject<T extends Record<string, unknown>>({\n obj,\n sensitiveValues,\n}: {\n obj: T;\n sensitiveValues: readonly string[];\n}): T {\n // Never scrub sha1-like keys or page identifiers - they're file references\n return Object.fromEntries(\n Object.entries(obj).map(([key, value]) => [\n key,\n shouldPreserveKey(key) ? value : scrubValue({ sensitiveValues, value }),\n ]),\n ) as T;\n}\n","import { match } from \"ts-pattern\";\n\nimport type { TraceEvent } from \"../trace-types\";\n\nimport { scrubObject, scrubString, scrubValue } from \"./primitives\";\n\n// Integrity guardrails:\n// - We never touch sha1-like keys, page identifiers, or screencast/input events so artifact references remain valid.\n// - We keep the original structure/ordering of events and only swap literal values, so traces stay readable by Playwright.\n\n/**\n * Scrubs a trace event based on its type.\n * Returns the scrubbed event or the original if no scrubbing is needed.\n */\nexport function scrubTraceEvent({\n event,\n sensitiveValues,\n}: {\n event: TraceEvent;\n sensitiveValues: readonly string[];\n}): TraceEvent {\n return (\n match(event)\n .with({ type: \"console\" }, (e) => ({\n // Scrubs: text, args[].preview, args[].value\n // Preserves: type, time, pageId, messageType, location\n ...e,\n args: e.args?.map((arg) => ({\n ...arg,\n preview: scrubString({ sensitiveValues, str: arg.preview }),\n value: scrubValue({ sensitiveValues, value: arg.value }),\n })),\n text: scrubString({ sensitiveValues, str: e.text }),\n }))\n .with({ type: \"before\" }, (e) => ({\n // Scrubs: params values, title\n // Preserves: type, method, class, callId, stepId, pageId, beforeSnapshot, stack\n ...e,\n params: scrubObject({ obj: e.params, sensitiveValues }),\n title: e.title\n ? scrubString({ sensitiveValues, str: e.title })\n : undefined,\n }))\n .with({ type: \"after\" }, (e) => ({\n // Scrubs: result values, error.message\n // Preserves: type, callId, endTime, afterSnapshot, attachments, annotations, point\n ...e,\n error: e.error\n ? {\n ...e.error,\n message: scrubString({ sensitiveValues, str: e.error.message }),\n }\n : undefined,\n result:\n e.result !== undefined\n ? scrubValue({ sensitiveValues, value: e.result })\n : undefined,\n }))\n .with({ type: \"action\" }, (e) => ({\n // Scrubs: params values, title, result, error.message\n // Preserves: type, method, class, callId, stepId, pageId, snapshots, stack, attachments, annotations, point\n ...e,\n error: e.error\n ? {\n ...e.error,\n message: scrubString({ sensitiveValues, str: e.error.message }),\n }\n : undefined,\n params: scrubObject({ obj: e.params, sensitiveValues }),\n result:\n e.result !== undefined\n ? scrubValue({ sensitiveValues, value: e.result })\n : undefined,\n title: e.title\n ? scrubString({ sensitiveValues, str: e.title })\n : undefined,\n }))\n .with({ type: \"event\" }, (e) => ({\n // Scrubs: params values\n // Preserves: type, class, method, pageId, time\n ...e,\n params: scrubObject({ obj: e.params, sensitiveValues }),\n }))\n .with({ type: \"stdout\" }, { type: \"stderr\" }, (e) => ({\n // Scrubs: text\n // Preserves: type, timestamp, base64\n ...e,\n text:\n e.text !== undefined\n ? scrubString({ sensitiveValues, str: e.text })\n : undefined,\n }))\n .with({ type: \"error\" }, (e) => ({\n // Scrubs: message\n // Preserves: type, stack\n ...e,\n message: scrubString({ sensitiveValues, str: e.message }),\n }))\n .with({ type: \"log\" }, (e) => ({\n // Scrubs: message (may contain locator descriptions with user data)\n // Preserves: type, callId, time\n ...e,\n message: scrubString({ sensitiveValues, str: e.message }),\n }))\n .with({ type: \"context-options\" }, (e) => ({\n // Scrubs: title, options (may contain sensitive config like baseURL, userAgent)\n // Preserves: type, version, origin, browserName, platform, timestamps, sdkLanguage\n ...e,\n options: scrubObject({ obj: e.options, sensitiveValues }),\n title: e.title\n ? scrubString({ sensitiveValues, str: e.title })\n : undefined,\n }))\n .with({ type: \"frame-snapshot\" }, (e) => ({\n // Scrubs: snapshot.url, snapshot.title, snapshot.html (may contain sensitive page content)\n // Preserves: type, snapshot.callId, snapshot.pageId, snapshot.frameId\n ...e,\n snapshot: scrubObject({ obj: e.snapshot, sensitiveValues }),\n }))\n .with({ type: \"resource-snapshot\" }, (e) => ({\n // Scrubs: snapshot.url (may contain sensitive URLs/params)\n // Preserves: type, snapshot sha1 refs, headers structure\n ...e,\n snapshot: scrubObject({ obj: e.snapshot, sensitiveValues }),\n }))\n // screencast-frame, input - pass through unchanged (coordinates and sha1 refs only)\n .with({ type: \"screencast-frame\" }, { type: \"input\" }, (e) => e)\n .exhaustive()\n );\n}\n","import createWebSocketStream from './lib/stream.js';\nimport Receiver from './lib/receiver.js';\nimport Sender from './lib/sender.js';\nimport WebSocket from './lib/websocket.js';\nimport WebSocketServer from './lib/websocket-server.js';\n\nexport { createWebSocketStream, Receiver, Sender, WebSocket, WebSocketServer };\nexport default WebSocket;\n","const objectToString = Object.prototype.toString;\n\nconst isError = value => objectToString.call(value) === '[object Error]';\n\nconst errorMessages = new Set([\n\t'network error', // Chrome\n\t'Failed to fetch', // Chrome\n\t'NetworkError when attempting to fetch resource.', // Firefox\n\t'The Internet connection appears to be offline.', // Safari 16\n\t'Network request failed', // `cross-fetch`\n\t'fetch failed', // Undici (Node.js)\n\t'terminated', // Undici (Node.js)\n\t' A network error occurred.', // Bun (WebKit)\n\t'Network connection lost', // Cloudflare Workers (fetch)\n]);\n\nexport default function isNetworkError(error) {\n\tconst isValid = error\n\t\t&& isError(error)\n\t\t&& error.name === 'TypeError'\n\t\t&& typeof error.message === 'string';\n\n\tif (!isValid) {\n\t\treturn false;\n\t}\n\n\tconst {message, stack} = error;\n\n\t// Safari 17+ has generic message but no stack for network errors\n\tif (message === 'Load failed') {\n\t\treturn stack === undefined\n\t\t\t// Sentry adds its own stack trace to the fetch error, so also check for that\n\t\t\t|| '__sentry_captured__' in error;\n\t}\n\n\t// Deno network errors start with specific text\n\tif (message.startsWith('error sending request for url')) {\n\t\treturn true;\n\t}\n\n\t// Standard network error messages\n\treturn errorMessages.has(message);\n}\n","import isNetworkError from 'is-network-error';\n\nfunction validateRetries(retries) {\n\tif (typeof retries === 'number') {\n\t\tif (retries < 0) {\n\t\t\tthrow new TypeError('Expected `retries` to be a non-negative number.');\n\t\t}\n\n\t\tif (Number.isNaN(retries)) {\n\t\t\tthrow new TypeError('Expected `retries` to be a valid number or Infinity, got NaN.');\n\t\t}\n\t} else if (retries !== undefined) {\n\t\tthrow new TypeError('Expected `retries` to be a number or Infinity.');\n\t}\n}\n\nfunction validateNumberOption(name, value, {min = 0, allowInfinity = false} = {}) {\n\tif (value === undefined) {\n\t\treturn;\n\t}\n\n\tif (typeof value !== 'number' || Number.isNaN(value)) {\n\t\tthrow new TypeError(`Expected \\`${name}\\` to be a number${allowInfinity ? ' or Infinity' : ''}.`);\n\t}\n\n\tif (!allowInfinity && !Number.isFinite(value)) {\n\t\tthrow new TypeError(`Expected \\`${name}\\` to be a finite number.`);\n\t}\n\n\tif (value < min) {\n\t\tthrow new TypeError(`Expected \\`${name}\\` to be \\u2265 ${min}.`);\n\t}\n}\n\nexport class AbortError extends Error {\n\tconstructor(message) {\n\t\tsuper();\n\n\t\tif (message instanceof Error) {\n\t\t\tthis.originalError = message;\n\t\t\t({message} = message);\n\t\t} else {\n\t\t\tthis.originalError = new Error(message);\n\t\t\tthis.originalError.stack = this.stack;\n\t\t}\n\n\t\tthis.name = 'AbortError';\n\t\tthis.message = message;\n\t}\n}\n\nfunction calculateDelay(retriesConsumed, options) {\n\tconst attempt = Math.max(1, retriesConsumed + 1);\n\tconst random = options.randomize ? (Math.random() + 1) : 1;\n\n\tlet timeout = Math.round(random * options.minTimeout * (options.factor ** (attempt - 1)));\n\ttimeout = Math.min(timeout, options.maxTimeout);\n\n\treturn timeout;\n}\n\nfunction calculateRemainingTime(start, max) {\n\tif (!Number.isFinite(max)) {\n\t\treturn max;\n\t}\n\n\treturn max - (performance.now() - start);\n}\n\nasync function onAttemptFailure({error, attemptNumber, retriesConsumed, startTime, options}) {\n\tconst normalizedError = error instanceof Error\n\t\t? error\n\t\t: new TypeError(`Non-error was thrown: \"${error}\". You should only throw errors.`);\n\n\tif (normalizedError instanceof AbortError) {\n\t\tthrow normalizedError.originalError;\n\t}\n\n\tconst retriesLeft = Number.isFinite(options.retries)\n\t\t? Math.max(0, options.retries - retriesConsumed)\n\t\t: options.retries;\n\n\tconst maxRetryTime = options.maxRetryTime ?? Number.POSITIVE_INFINITY;\n\n\tconst context = Object.freeze({\n\t\terror: normalizedError,\n\t\tattemptNumber,\n\t\tretriesLeft,\n\t\tretriesConsumed,\n\t});\n\n\tawait options.onFailedAttempt(context);\n\n\tif (calculateRemainingTime(startTime, maxRetryTime) <= 0) {\n\t\tthrow normalizedError;\n\t}\n\n\tconst consumeRetry = await options.shouldConsumeRetry(context);\n\n\tconst remainingTime = calculateRemainingTime(startTime, maxRetryTime);\n\n\tif (remainingTime <= 0 || retriesLeft <= 0) {\n\t\tthrow normalizedError;\n\t}\n\n\tif (normalizedError instanceof TypeError && !isNetworkError(normalizedError)) {\n\t\tif (consumeRetry) {\n\t\t\tthrow normalizedError;\n\t\t}\n\n\t\toptions.signal?.throwIfAborted();\n\t\treturn false;\n\t}\n\n\tif (!await options.shouldRetry(context)) {\n\t\tthrow normalizedError;\n\t}\n\n\tif (!consumeRetry) {\n\t\toptions.signal?.throwIfAborted();\n\t\treturn false;\n\t}\n\n\tconst delayTime = calculateDelay(retriesConsumed, options);\n\tconst finalDelay = Math.min(delayTime, remainingTime);\n\n\toptions.signal?.throwIfAborted();\n\n\tif (finalDelay > 0) {\n\t\tawait new Promise((resolve, reject) => {\n\t\t\tconst onAbort = () => {\n\t\t\t\tclearTimeout(timeoutToken);\n\t\t\t\toptions.signal?.removeEventListener('abort', onAbort);\n\t\t\t\treject(options.signal.reason);\n\t\t\t};\n\n\t\t\tconst timeoutToken = setTimeout(() => {\n\t\t\t\toptions.signal?.removeEventListener('abort', onAbort);\n\t\t\t\tresolve();\n\t\t\t}, finalDelay);\n\n\t\t\tif (options.unref) {\n\t\t\t\ttimeoutToken.unref?.();\n\t\t\t}\n\n\t\t\toptions.signal?.addEventListener('abort', onAbort, {once: true});\n\t\t});\n\t}\n\n\toptions.signal?.throwIfAborted();\n\n\treturn true;\n}\n\nexport default async function pRetry(input, options = {}) {\n\toptions = {...options};\n\n\tvalidateRetries(options.retries);\n\n\tif (Object.hasOwn(options, 'forever')) {\n\t\tthrow new Error('The `forever` option is no longer supported. For many use-cases, you can set `retries: Infinity` instead.');\n\t}\n\n\toptions.retries ??= 10;\n\toptions.factor ??= 2;\n\toptions.minTimeout ??= 1000;\n\toptions.maxTimeout ??= Number.POSITIVE_INFINITY;\n\toptions.maxRetryTime ??= Number.POSITIVE_INFINITY;\n\toptions.randomize ??= false;\n\toptions.onFailedAttempt ??= () => {};\n\toptions.shouldRetry ??= () => true;\n\toptions.shouldConsumeRetry ??= () => true;\n\n\t// Validate numeric options and normalize edge cases\n\tvalidateNumberOption('factor', options.factor, {min: 0, allowInfinity: false});\n\tvalidateNumberOption('minTimeout', options.minTimeout, {min: 0, allowInfinity: false});\n\tvalidateNumberOption('maxTimeout', options.maxTimeout, {min: 0, allowInfinity: true});\n\tvalidateNumberOption('maxRetryTime', options.maxRetryTime, {min: 0, allowInfinity: true});\n\n\t// Treat non-positive factor as 1 to avoid zero backoff or negative behavior\n\tif (!(options.factor > 0)) {\n\t\toptions.factor = 1;\n\t}\n\n\toptions.signal?.throwIfAborted();\n\n\tlet attemptNumber = 0;\n\tlet retriesConsumed = 0;\n\tconst startTime = performance.now();\n\n\twhile (Number.isFinite(options.retries) ? retriesConsumed <= options.retries : true) {\n\t\tattemptNumber++;\n\n\t\ttry {\n\t\t\toptions.signal?.throwIfAborted();\n\n\t\t\tconst result = await input(attemptNumber);\n\n\t\t\toptions.signal?.throwIfAborted();\n\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\tif (await onAttemptFailure({\n\t\t\t\terror,\n\t\t\t\tattemptNumber,\n\t\t\t\tretriesConsumed,\n\t\t\t\tstartTime,\n\t\t\t\toptions,\n\t\t\t})) {\n\t\t\t\tretriesConsumed++;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Should not reach here, but in case it does, throw an error\n\tthrow new Error('Retry attempts exhausted without throwing an error.');\n}\n\nexport function makeRetriable(function_, options) {\n\treturn function (...arguments_) {\n\t\treturn pRetry(() => function_.apply(this, arguments_), options);\n\t};\n}\n","import StablyReporter from \"@stablyai/playwright-reporter\";\n\nexport default StablyReporter;\n"],"mappings":"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aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aACA;IACA,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;IACT,QAAO;EACP;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;IACT,QAAO;EACP;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;IACT,QAAO;EACP;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,MAAK;IACL,QAAO;IACP,QAAO;IACP,aAAY;IACZ,UAAS;EACT;EACA;IACA,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MAAaA,MAAa,QAC1BA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACA,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,M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","names":["x","y","i","p","fs","n","i","b","isBinaryFile","err","_","x","i","e","err","data","i","e","Receiver","n","err","Sender","err","_","i","i","k","v","URL","Receiver","Sender","WebSocket","head","err","e","key","WebSocket","err","createWebSocketStream","i","protocol","WebSocket","WebSocketServer","head","err","h","Buffer","path","process","constants","setTimeout","ChildProcess","readFileSync","__commonJS","fs","__require","path","i","p","er","u","g","o","ii","j","pathKey","err","e","fd","it","me","b","s","of","pr","branch","__toESM","process","to","onetime","signals","constants","isError","global","fn","_","a","t","mergeStream","setTimeout","ChildProcess","Buffer","expression","crossSpawn","$","readFileSync","javaProperties","ci","ansiRegex","onlyFirst","pattern","regex","e","eaw","module","character","x","y","codePoint","code","stringToArray","string","characters","len","i","text","start","end","result","eawLen","chars","char","charLen","emojiRegex","ANSI_BACKGROUND_OFFSET","wrapAnsi16","offset","code","wrapAnsi256","wrapAnsi16m","red","green","blue","styles","foregroundColorNames","backgroundColorNames","assembleStyles","codes","groupName","group","styleName","style","hex","matches","colorString","character","integer","remainder","value","result","ansiStyles","ANSI_OSC","ANSI_ESCAPE_LINK","ANSI_OSC","actions","settings","isActionKey","key","action","settings","value","isWindows","CANCEL_SYMBOL","block","input","stdin","output","stdout","overwrite","hideCursor","rl","readline","clear","data","name","sequence","str","isActionKey","cursor","dx","dy","isWindows","_selectableGroups","_selectableGroups","isUnicodeSupported","process","unicode","s","c","fallback","S_STEP_ACTIVE","S_STEP_CANCEL","S_STEP_ERROR","S_STEP_SUBMIT","S_BAR_START","S_BAR","S_BAR_END","S_RADIO_ACTIVE","S_RADIO_INACTIVE","S_CHECKBOX_ACTIVE","S_CHECKBOX_SELECTED","S_CHECKBOX_INACTIVE","S_PASSWORD_MASK","S_BAR_H","S_CORNER_TOP_RIGHT","S_CONNECT_LEFT","S_CORNER_BOTTOM_RIGHT","S_INFO","S_SUCCESS","S_WARN","S_ERROR","intro","title","color","S_BAR_START","outro","message","S_BAR","S_BAR_END","prefix","color","S_BAR","spinner","indicator","frames","unicode","delay","isCI","unblock","loop","isSpinnerActive","_message","_prevMessage","_origin","handleExit","code","msg","stop","errorEventHandler","signalEventHandler","registerHooks","clearHooks","clearPrevMessage","prevLines","cursor","erase","parseMessage","formatTimer","origin","duration","min","secs","start","block","color","S_BAR","frameIndex","indicatorTimer","frame","loadingDots","step","S_STEP_SUBMIT","S_STEP_CANCEL","S_STEP_ERROR","import_picocolors","readFileSync","require","e","c","_","w","b","i","r","j","x","s","l","le","co","v","a","d","p","o","nt","e","st","l","bt","s","t","i","r","c","n","b","d","p","v","o","t2","a","i2","tr","w","li","_a","_b","_e","it","head","wi","j","ti","k","cr","st","a","b","o","k","fn","td","i","v","t","o","w","err","dat","d","b","v","d","p","t","o","k","n","e","r","i","c","i","l","ar","ai","w","v","n","c","r","_a","s","d","b","z","fn","_a","le","k","l","u","c","ce","co","fl","y","o","e","r","k","o","i","a","b","oe","l","e","fn","_a","p","c","s","ms","d","fn","i","a","b","e","c","o","z","ze","_a","no","d","TextDecoder","TextEncoder","matcher","Symbol","for","isVariadic","anonymousSelectKey","isObject","value","Boolean","isMatcher","x","symbols","matchPattern","pattern","select","matched","selections","match","Object","keys","forEach","key","Array","isArray","startPatterns","endPatterns","variadicPatterns","i","subpattern","push","length","Error","startValues","slice","endValues","middleValues","Infinity","every","subPattern","Reflect","ownKeys","k","matcherType","is","getSelectionKeys","_pattern$symbols$matc","_pattern$symbols$matc2","_pattern$symbols$matc3","call","flatMap","values","xs","f","reduce","acc","concat","chainable","pattern","Object","assign","optional","and","p2","intersection","or","union","select","key","optional","pattern","chainable","matcher","match","value","selections","selector","key","getSelectionKeys","forEach","undefined","matched","matchPattern","matcherType","intersection","patterns","chainable","matcher","match","value","selections","selector","key","matched","every","p","matchPattern","getSelectionKeys","flatMap","matcherType","union","forEach","undefined","some","when","predicate","Boolean","select","args","pattern","length","symbols","concat","isUnknown","x","isNumber","isString","isBigInt","any","unknown","stringChainable","pattern","Object","assign","chainable","startsWith","str","intersection","start","when","value","isString","endsWith","end","minLength","min","length","len","maxLength","max","includes","substr","regex","expr","Boolean","match","string","numberChainable","between","isNumber","lt","gt","lte","gte","int","Number","isInteger","finite","isFinite","positive","negative","number","bigintChainable","betweenBigInt","isBigInt","bigint","boolean","x","symbol","nullish","nonNullable","NonExhaustiveError","Error","constructor","input","displayedValue","JSON","stringify","e","super","this","unmatched","matched","value","undefined","match","MatchExpression","state","with","args","handler","length","patterns","predicate","push","slice","hasSelections","selected","select","key","some","pattern","matchPattern","Boolean","symbols","when","otherwise","exhaustive","unexpectedValueHandler","defaultCatcher","run","returnType","narrow","v","M","e","TextDecoder","TextEncoder","a","b","WebSocket","Se","fileURLToPath","constants","debuglog","objectToString","max","e","t","r","F","n","i","a","u","_","R","y","b","C","P","O","L","q","V","mt","de","ln","_a","et","W","w","S","te","o","s","c","p","g","l","d","h","N","$","me","I","T","A","B","D","k","x","Y","U","X","K","j","M","J","ae","ue","v","le","fileURLToPath","Se","os","constants","ce","readFileSync","debuglog","oe","pe","se"]}