mirror of
https://github.com/logos-messaging/lab.waku.org.git
synced 2026-01-10 09:43:08 +00:00
115 lines
282 KiB
JavaScript
115 lines
282 KiB
JavaScript
"use strict";
|
|
/*
|
|
* ATTENTION: An "eval-source-map" devtool has been used.
|
|
* This devtool is neither made for production nor for readable output files.
|
|
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
|
|
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
|
* or disable the default devtool with "devtool: false".
|
|
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
|
*/
|
|
exports.id = "vendor-chunks/@leichtgewicht";
|
|
exports.ids = ["vendor-chunks/@leichtgewicht"];
|
|
exports.modules = {
|
|
|
|
/***/ "(ssr)/./node_modules/@leichtgewicht/base64-codec/index.mjs":
|
|
/*!************************************************************!*\
|
|
!*** ./node_modules/@leichtgewicht/base64-codec/index.mjs ***!
|
|
\************************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PREFERS_NO_PADDING: () => (/* binding */ PREFERS_NO_PADDING),\n/* harmony export */ PREFERS_PADDING: () => (/* binding */ PREFERS_PADDING),\n/* harmony export */ base64: () => (/* binding */ base64),\n/* harmony export */ base64URL: () => (/* binding */ base64URL),\n/* harmony export */ make: () => (/* binding */ make)\n/* harmony export */ });\nconst PREFERS_PADDING = 1;\nconst PREFERS_NO_PADDING = 2;\nfunction make(name, charset, padding, paddingMode) {\n if (charset.length !== 64) {\n throw new Error(`Charset needs to be 64 characters long! (${charset.length})`);\n }\n const byCharCode = new Uint8Array(256);\n const byNum = new Uint8Array(64);\n for(let i = 0; i < 64; i += 1){\n const code = charset.charCodeAt(i);\n if (code > 255) {\n throw new Error(`Character #${i} in charset [code=${code}, char=${charset.charAt(i)}] is too high! (max=255)`);\n }\n if (byCharCode[code] !== 0) {\n throw new Error(`Character [code=${code}, char=${charset.charAt(i)}] is more than once in the charset!`);\n }\n byCharCode[code] = i;\n byNum[i] = code;\n }\n const padCode = padding.charCodeAt(0);\n const codec = {\n name,\n encodingLength (str) {\n const strLen = str.length;\n const len = strLen * 0.75 | 0;\n if (str.charCodeAt(strLen - 1) === padCode) {\n if (str.charCodeAt(strLen - 2) === padCode) {\n return len - 2;\n }\n return len - 1;\n }\n return len;\n },\n encode (str, buffer, offset) {\n if (buffer === null || buffer === undefined) {\n buffer = new Uint8Array(codec.encodingLength(str));\n }\n if (offset === null || offset === undefined) {\n offset = 0;\n }\n let strLen = str.length;\n if (str.charCodeAt(strLen - 1) === padCode) {\n if (str.charCodeAt(strLen - 2) === padCode) {\n strLen -= 2;\n } else {\n strLen -= 1;\n }\n }\n const padding = strLen % 4;\n const safeLen = strLen - padding;\n let off = offset;\n let i = 0;\n while(i < safeLen){\n const code = byCharCode[str.charCodeAt(i)] << 18 | byCharCode[str.charCodeAt(i + 1)] << 12 | byCharCode[str.charCodeAt(i + 2)] << 6 | byCharCode[str.charCodeAt(i + 3)];\n buffer[off++] = code >> 16;\n buffer[off++] = code >> 8;\n buffer[off++] = code;\n i += 4;\n }\n if (padding === 3) {\n const code = byCharCode[str.charCodeAt(i)] << 10 | byCharCode[str.charCodeAt(i + 1)] << 4 | byCharCode[str.charCodeAt(i + 2)] >> 2;\n buffer[off++] = code >> 8;\n buffer[off++] = code;\n } else if (padding === 2) {\n buffer[off++] = byCharCode[str.charCodeAt(i)] << 2 | byCharCode[str.charCodeAt(i + 1)] >> 4;\n }\n codec.encode.bytes = off - offset;\n return buffer;\n },\n decode (buffer, start, end) {\n if (start === null || start === undefined) {\n start = 0;\n }\n if (end === null || end === undefined) {\n end = buffer.length;\n }\n const length = end - start;\n const pad = length % 3;\n const safeEnd = start + length - pad;\n const codes = [];\n for(let off = start; off < safeEnd; off += 3){\n const num = buffer[off] << 16 | buffer[off + 1] << 8 | buffer[off + 2];\n codes.push(byNum[num >> 18 & 0x3F], byNum[num >> 12 & 0x3F], byNum[num >> 6 & 0x3F], byNum[num & 0x3F]);\n }\n if (pad === 2) {\n const num = (buffer[end - 2] << 8) + buffer[end - 1];\n codes.push(byNum[num >> 10], byNum[num >> 4 & 0x3F], byNum[num << 2 & 0x3F]);\n if (paddingMode === PREFERS_PADDING) {\n codes.push(padCode);\n }\n } else if (pad === 1) {\n const num = buffer[end - 1];\n codes.push(byNum[num >> 2], byNum[num << 4 & 0x3F]);\n if (paddingMode === PREFERS_PADDING) {\n codes.push(padCode, padCode);\n }\n }\n codec.decode.bytes = length;\n return String.fromCharCode.apply(String, codes);\n }\n };\n return codec;\n}\nconst base64 = make(\"base64\", \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\", \"=\", PREFERS_PADDING);\n// https://datatracker.ietf.org/doc/html/rfc4648#section-5\nconst base64URL = make(\"base64-url\", \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\", \"=\", PREFERS_NO_PADDING);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQGxlaWNodGdld2ljaHQvYmFzZTY0LWNvZGVjL2luZGV4Lm1qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFPLE1BQU1BLGtCQUFrQixFQUFDO0FBQ3pCLE1BQU1DLHFCQUFxQixFQUFDO0FBRTVCLFNBQVNDLEtBQU1DLElBQUksRUFBRUMsT0FBTyxFQUFFQyxPQUFPLEVBQUVDLFdBQVc7SUFDdkQsSUFBSUYsUUFBUUcsTUFBTSxLQUFLLElBQUk7UUFDekIsTUFBTSxJQUFJQyxNQUFNLENBQUMseUNBQXlDLEVBQUVKLFFBQVFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0U7SUFDQSxNQUFNRSxhQUFhLElBQUlDLFdBQVc7SUFDbEMsTUFBTUMsUUFBUSxJQUFJRCxXQUFXO0lBQzdCLElBQUssSUFBSUUsSUFBSSxHQUFHQSxJQUFJLElBQUlBLEtBQUssRUFBRztRQUM5QixNQUFNQyxPQUFPVCxRQUFRVSxVQUFVLENBQUNGO1FBQ2hDLElBQUlDLE9BQU8sS0FBSztZQUNkLE1BQU0sSUFBSUwsTUFBTSxDQUFDLFdBQVcsRUFBRUksRUFBRSxrQkFBa0IsRUFBRUMsS0FBSyxPQUFPLEVBQUVULFFBQVFXLE1BQU0sQ0FBQ0gsR0FBRyx3QkFBd0IsQ0FBQztRQUMvRztRQUNBLElBQUlILFVBQVUsQ0FBQ0ksS0FBSyxLQUFLLEdBQUc7WUFDMUIsTUFBTSxJQUFJTCxNQUFNLENBQUMsZ0JBQWdCLEVBQUVLLEtBQUssT0FBTyxFQUFFVCxRQUFRVyxNQUFNLENBQUNILEdBQUcsbUNBQW1DLENBQUM7UUFDekc7UUFDQUgsVUFBVSxDQUFDSSxLQUFLLEdBQUdEO1FBQ25CRCxLQUFLLENBQUNDLEVBQUUsR0FBR0M7SUFDYjtJQUNBLE1BQU1HLFVBQVVYLFFBQVFTLFVBQVUsQ0FBQztJQUNuQyxNQUFNRyxRQUFRO1FBQ1pkO1FBQ0FlLGdCQUFnQkMsR0FBRztZQUNqQixNQUFNQyxTQUFTRCxJQUFJWixNQUFNO1lBQ3pCLE1BQU1jLE1BQU1ELFNB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L0BsZWljaHRnZXdpY2h0L2Jhc2U2NC1jb2RlYy9pbmRleC5tanM/NWRjMSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgUFJFRkVSU19QQURESU5HID0gMVxuZXhwb3J0IGNvbnN0IFBSRUZFUlNfTk9fUEFERElORyA9IDJcblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2UgKG5hbWUsIGNoYXJzZXQsIHBhZGRpbmcsIHBhZGRpbmdNb2RlKSB7XG4gIGlmIChjaGFyc2V0Lmxlbmd0aCAhPT0gNjQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENoYXJzZXQgbmVlZHMgdG8gYmUgNjQgY2hhcmFjdGVycyBsb25nISAoJHtjaGFyc2V0Lmxlbmd0aH0pYClcbiAgfVxuICBjb25zdCBieUNoYXJDb2RlID0gbmV3IFVpbnQ4QXJyYXkoMjU2KVxuICBjb25zdCBieU51bSA9IG5ldyBVaW50OEFycmF5KDY0KVxuICBmb3IgKGxldCBpID0gMDsgaSA8IDY0OyBpICs9IDEpIHtcbiAgICBjb25zdCBjb2RlID0gY2hhcnNldC5jaGFyQ29kZUF0KGkpXG4gICAgaWYgKGNvZGUgPiAyNTUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2hhcmFjdGVyICMke2l9IGluIGNoYXJzZXQgW2NvZGU9JHtjb2RlfSwgY2hhcj0ke2NoYXJzZXQuY2hhckF0KGkpfV0gaXMgdG9vIGhpZ2ghIChtYXg9MjU1KWApXG4gICAgfVxuICAgIGlmIChieUNoYXJDb2RlW2NvZGVdICE9PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENoYXJhY3RlciBbY29kZT0ke2NvZGV9LCBjaGFyPSR7Y2hhcnNldC5jaGFyQXQoaSl9XSBpcyBtb3JlIHRoYW4gb25jZSBpbiB0aGUgY2hhcnNldCFgKVxuICAgIH1cbiAgICBieUNoYXJDb2RlW2NvZGVdID0gaVxuICAgIGJ5TnVtW2ldID0gY29kZVxuICB9XG4gIGNvbnN0IHBhZENvZGUgPSBwYWRkaW5nLmNoYXJDb2RlQXQoMClcbiAgY29uc3QgY29kZWMgPSB7XG4gICAgbmFtZSxcbiAgICBlbmNvZGluZ0xlbmd0aCAoc3RyKSB7XG4gICAgICBjb25zdCBzdHJMZW4gPSBzdHIubGVuZ3RoXG4gICAgICBjb25zdCBsZW4gPSBzdHJMZW4gKiAwLjc1IHwgMFxuICAgICAgaWYgKHN0ci5jaGFyQ29kZUF0KHN0ckxlbiAtIDEpID09PSBwYWRDb2RlKSB7XG4gICAgICAgIGlmIChzdHIuY2hhckNvZGVBdChzdHJMZW4gLSAyKSA9PT0gcGFkQ29kZSkge1xuICAgICAgICAgIHJldHVybiBsZW4gLSAyXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxlbiAtIDFcbiAgICAgIH1cbiAgICAgIHJldHVybiBsZW5cbiAgICB9LFxuICAgIGVuY29kZSAoc3RyLCBidWZmZXIsIG9mZnNldCkge1xuICAgICAgaWYgKGJ1ZmZlciA9PT0gbnVsbCB8fCBidWZmZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBidWZmZXIgPSBuZXcgVWludDhBcnJheShjb2RlYy5lbmNvZGluZ0xlbmd0aChzdHIpKVxuICAgICAgfVxuICAgICAgaWYgKG9mZnNldCA9PT0gbnVsbCB8fCBvZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBvZmZzZXQgPSAwXG4gICAgICB9XG5cbiAgICAgIGxldCBzdHJMZW4gPSBzdHIubGVuZ3RoXG4gICAgICBpZiAoc3RyLmNoYXJDb2RlQXQoc3RyTGVuIC0gMSkgPT09IHBhZENvZGUpIHtcbiAgICAgICAgaWYgKHN0ci5jaGFyQ29kZUF0KHN0ckxlbiAtIDIpID09PSBwYWRDb2RlKSB7XG4gICAgICAgICAgc3RyTGVuIC09IDJcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdHJMZW4gLT0gMVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBhZGRpbmcgPSBzdHJMZW4gJSA0XG4gICAgICBjb25zdCBzYWZlTGVuID0gc3RyTGVuIC0gcGFkZGluZ1xuXG4gICAgICBsZXQgb2ZmID0gb2Zmc2V0XG4gICAgICBsZXQgaSA9IDBcbiAgICAgIHdoaWxlIChpIDwgc2FmZUxlbikge1xuICAgICAgICBjb25zdCBjb2RlID1cbiAgICAgICAgICAoYnlDaGFyQ29kZVtzdHIuY2hhckNvZGVBdChpKV0gPDwgMTgpIHxcbiAgICAgICAgICAoYnlDaGFyQ29kZVtzdHIuY2hhckNvZGVBdChpICsgMSldIDw8IDEyKSB8XG4gICAgICAgICAgKGJ5Q2hhckNvZGVbc3RyLmNoYXJDb2RlQXQoaSArIDIpXSA8PCA2KSB8XG4gICAgICAgICAgYnlDaGFyQ29kZVtzdHIuY2hhckNvZGVBdChpICsgMyldXG4gICAgICAgIGJ1ZmZlcltvZmYrK10gPSBjb2RlID4+IDE2XG4gICAgICAgIGJ1ZmZlcltvZmYrK10gPSBjb2RlID4+IDhcbiAgICAgICAgYnVmZmVyW29mZisrXSA9IGNvZGVcbiAgICAgICAgaSArPSA0XG4gICAgICB9XG5cbiAgICAgIGlmIChwYWRkaW5nID09PSAzKSB7XG4gICAgICAgIGNvbnN0IGNvZGUgPVxuICAgICAgICAgIChieUNoYXJDb2RlW3N0ci5jaGFyQ29kZUF0KGkpXSA8PCAxMCkgfFxuICAgICAgICAgIChieUNoYXJDb2RlW3N0ci5jaGFyQ29kZUF0KGkgKyAxKV0gPDwgNCkgfFxuICAgICAgICAgIChieUNoYXJDb2RlW3N0ci5jaGFyQ29kZUF0KGkgKyAyKV0gPj4gMilcbiAgICAgICAgYnVmZmVyW29mZisrXSA9IGNvZGUgPj4gOFxuICAgICAgICBidWZmZXJbb2ZmKytdID0gY29kZVxuICAgICAgfSBlbHNlIGlmIChwYWRkaW5nID09PSAyKSB7XG4gICAgICAgIGJ1ZmZlcltvZmYrK10gPSAoYnlDaGFyQ29kZVtzdHIuY2hhckNvZGVBdChpKV0gPDwgMikgfFxuICAgICAgICAgIChieUNoYXJDb2RlW3N0ci5jaGFyQ29kZUF0KGkgKyAxKV0gPj4gNClcbiAgICAgIH1cblxuICAgICAgY29kZWMuZW5jb2RlLmJ5dGVzID0gb2ZmIC0gb2Zmc2V0XG4gICAgICByZXR1cm4gYnVmZmVyXG4gICAgfSxcbiAgICBkZWNvZGUgKGJ1ZmZlciwgc3RhcnQsIGVuZCkge1xuICAgICAgaWYgKHN0YXJ0ID09PSBudWxsIHx8IHN0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc3RhcnQgPSAwXG4gICAgICB9XG4gICAgICBpZiAoZW5kID09PSBudWxsIHx8IGVuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGVuZCA9IGJ1ZmZlci5sZW5ndGhcbiAgICAgIH1cblxuICAgICAgY29uc3QgbGVuZ3RoID0gZW5kIC0gc3RhcnRcbiAgICAgIGNvbnN0IHBhZCA9IGxlbmd0aCAlIDNcbiAgICAgIGNvbnN0IHNhZmVFbmQgPSBzdGFydCArIGxlbmd0aCAtIHBhZFxuICAgICAgY29uc3QgY29kZXMgPSBbXVxuICAgICAgZm9yIChsZXQgb2ZmID0gc3RhcnQ7IG9mZiA8IHNhZmVFbmQ7IG9mZiArPSAzKSB7XG4gICAgICAgIGNvbnN0IG51bSA9IChidWZmZXJbb2ZmXSA8PCAxNikgfCAoKGJ1ZmZlcltvZmYgKyAxXSA8PCA4KSkgfCBidWZmZXJbb2ZmICsgMl1cbiAgICAgICAgY29kZXMucHVzaChcbiAgICAgICAgICBieU51bVtudW0gPj4gMTggJiAweDNGXSxcbiAgICAgICAgICBieU51bVtudW0gPj4gMTIgJiAweDNGXSxcbiAgICAgICAgICBieU51bVtudW0gPj4gNiAmIDB4M0ZdLFxuICAgICAgICAgIGJ5TnVtW251bSAmIDB4M0ZdXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgaWYgKHBhZCA9PT0gMikge1xuICAgICAgICBjb25zdCBudW0gPSAoYnVmZmVyW2VuZCAtIDJdIDw8IDgpICsgYnVmZmVyW2VuZCAtIDFdXG4gICAgICAgIGNvZGVzLnB1c2goXG4gICAgICAgICAgYnlOdW1bbnVtID4+IDEwXSxcbiAgICAgICAgICBieU51bVsobnVtID4+IDQpICYgMHgzRl0sXG4gICAgICAgICAgYnlOdW1bKG51bSA8PCAyKSAmIDB4M0ZdXG4gICAgICAgIClcbiAgICAgICAgaWYgKHBhZGRpbmdNb2RlID09PSBQUkVGRVJTX1BBRERJTkcpIHtcbiAgICAgICAgICBjb2Rlcy5wdXNoKHBhZENvZGUpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocGFkID09PSAxKSB7XG4gICAgICAgIGNvbnN0IG51bSA9IGJ1ZmZlcltlbmQgLSAxXVxuICAgICAgICBjb2Rlcy5wdXNoKFxuICAgICAgICAgIGJ5TnVtW251bSA+PiAyXSxcbiAgICAgICAgICBieU51bVsobnVtIDw8IDQpICYgMHgzRl1cbiAgICAgICAgKVxuICAgICAgICBpZiAocGFkZGluZ01vZGUgPT09IFBSRUZFUlNfUEFERElORykge1xuICAgICAgICAgIGNvZGVzLnB1c2gocGFkQ29kZSwgcGFkQ29kZSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb2RlYy5kZWNvZGUuYnl0ZXMgPSBsZW5ndGhcbiAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZywgY29kZXMpXG4gICAgfVxuICB9XG4gIHJldHVybiBjb2RlY1xufVxuXG5leHBvcnQgY29uc3QgYmFzZTY0ID0gbWFrZSgnYmFzZTY0JywgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nLCAnPScsIFBSRUZFUlNfUEFERElORylcbi8vIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNDY0OCNzZWN0aW9uLTVcbmV4cG9ydCBjb25zdCBiYXNlNjRVUkwgPSBtYWtlKCdiYXNlNjQtdXJsJywgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5LV8nLCAnPScsIFBSRUZFUlNfTk9fUEFERElORylcbiJdLCJuYW1lcyI6WyJQUkVGRVJTX1BBRERJTkciLCJQUkVGRVJTX05PX1BBRERJTkciLCJtYWtlIiwibmFtZSIsImNoYXJzZXQiLCJwYWRkaW5nIiwicGFkZGluZ01vZGUiLCJsZW5ndGgiLCJFcnJvciIsImJ5Q2hhckNvZGUiLCJVaW50OEFycmF5IiwiYnlOdW0iLCJpIiwiY29kZSIsImNoYXJDb2RlQXQiLCJjaGFyQXQiLCJwYWRDb2RlIiwiY29kZWMiLCJlbmNvZGluZ0xlbmd0aCIsInN0ciIsInN0ckxlbiIsImxlbiIsImVuY29kZSIsImJ1ZmZlciIsIm9mZnNldCIsInVuZGVmaW5lZCIsInNhZmVMZW4iLCJvZmYiLCJieXRlcyIsImRlY29kZSIsInN0YXJ0IiwiZW5kIiwicGFkIiwic2FmZUVuZCIsImNvZGVzIiwibnVtIiwicHVzaCIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsImFwcGx5IiwiYmFzZTY0IiwiYmFzZTY0VVJMIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@leichtgewicht/base64-codec/index.mjs\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/@leichtgewicht/dns-packet/buffer_utils.mjs":
|
|
/*!*****************************************************************!*\
|
|
!*** ./node_modules/@leichtgewicht/dns-packet/buffer_utils.mjs ***!
|
|
\*****************************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ bytelength: () => (/* binding */ bytelength),\n/* harmony export */ copy: () => (/* binding */ copy),\n/* harmony export */ from: () => (/* binding */ from),\n/* harmony export */ isU8Arr: () => (/* binding */ isU8Arr),\n/* harmony export */ readUInt16BE: () => (/* binding */ readUInt16BE),\n/* harmony export */ readUInt32BE: () => (/* binding */ readUInt32BE),\n/* harmony export */ toHex: () => (/* binding */ toHex),\n/* harmony export */ write: () => (/* binding */ write),\n/* harmony export */ writeUInt16BE: () => (/* binding */ writeUInt16BE),\n/* harmony export */ writeUInt32BE: () => (/* binding */ writeUInt32BE)\n/* harmony export */ });\n/* harmony import */ var utf8_codec__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! utf8-codec */ \"(ssr)/./node_modules/utf8-codec/index.mjs\");\n\nconst isU8Arr = (input)=>input instanceof Uint8Array;\nfunction bytelength(input) {\n return typeof input === \"string\" ? utf8_codec__WEBPACK_IMPORTED_MODULE_0__.encodingLength(input) : input.byteLength;\n}\nfunction from(input) {\n if (input instanceof Uint8Array) {\n return input;\n }\n if (Array.isArray(input)) {\n return new Uint8Array(input);\n }\n return utf8_codec__WEBPACK_IMPORTED_MODULE_0__.encode(input);\n}\nfunction write(arr, str, start) {\n if (typeof str !== \"string\") {\n throw new Error(\"unknown input type\");\n }\n utf8_codec__WEBPACK_IMPORTED_MODULE_0__.encode(str, arr, start);\n return utf8_codec__WEBPACK_IMPORTED_MODULE_0__.encode.bytes;\n}\nfunction toHex(buf, start, end) {\n let result = \"\";\n for(let offset = start; offset < end;){\n const num = buf[offset++];\n const str = num.toString(16);\n result += str.length === 1 ? \"0\" + str : str;\n }\n return result;\n}\nconst P_24 = Math.pow(2, 24);\nconst P_16 = Math.pow(2, 16);\nconst P_8 = Math.pow(2, 8);\nconst readUInt32BE = (buf, offset)=>buf[offset] * P_24 + buf[offset + 1] * P_16 + buf[offset + 2] * P_8 + buf[offset + 3];\nconst readUInt16BE = (buf, offset)=>buf[offset] << 8 | buf[offset + 1];\nconst writeUInt32BE = (buf, value, offset)=>{\n value = +value;\n buf[offset + 3] = value;\n value = value >>> 8;\n buf[offset + 2] = value;\n value = value >>> 8;\n buf[offset + 1] = value;\n value = value >>> 8;\n buf[offset] = value;\n return offset + 4;\n};\nconst writeUInt16BE = (buf, value, offset)=>{\n buf[offset] = value >> 8;\n buf[offset + 1] = value & 0xFF;\n return offset + 2;\n};\nfunction copy(source, target, targetStart, sourceStart, sourceEnd) {\n if (targetStart < 0) {\n sourceStart -= targetStart;\n targetStart = 0;\n }\n if (sourceStart < 0) {\n sourceStart = 0;\n }\n if (sourceEnd < 0) {\n return new Uint8Array(0);\n }\n if (targetStart >= target.length || sourceStart >= sourceEnd) {\n return 0;\n }\n return _copyActual(source, target, targetStart, sourceStart, sourceEnd);\n}\nfunction _copyActual(source, target, targetStart, sourceStart, sourceEnd) {\n if (sourceEnd - sourceStart > target.length - targetStart) {\n sourceEnd = sourceStart + target.length - targetStart;\n }\n let nb = sourceEnd - sourceStart;\n const sourceLen = source.length - sourceStart;\n if (nb > sourceLen) {\n nb = sourceLen;\n }\n if (sourceStart !== 0 || sourceEnd < source.length) {\n source = new Uint8Array(source.buffer, source.byteOffset + sourceStart, nb);\n }\n target.set(source, targetStart);\n return nb;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQGxlaWNodGdld2ljaHQvZG5zLXBhY2tldC9idWZmZXJfdXRpbHMubWpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQWtDO0FBRTNCLE1BQU1DLFVBQVVDLENBQUFBLFFBQVNBLGlCQUFpQkMsV0FBVTtBQUVwRCxTQUFTQyxXQUFZRixLQUFLO0lBQy9CLE9BQU8sT0FBT0EsVUFBVSxXQUFXRixzREFBbUIsQ0FBQ0UsU0FBU0EsTUFBTUksVUFBVTtBQUNsRjtBQUVPLFNBQVNDLEtBQU1MLEtBQUs7SUFDekIsSUFBSUEsaUJBQWlCQyxZQUFZO1FBQy9CLE9BQU9EO0lBQ1Q7SUFDQSxJQUFJTSxNQUFNQyxPQUFPLENBQUNQLFFBQVE7UUFDeEIsT0FBTyxJQUFJQyxXQUFXRDtJQUN4QjtJQUNBLE9BQU9GLDhDQUFXLENBQUNFO0FBQ3JCO0FBRU8sU0FBU1MsTUFBT0MsR0FBRyxFQUFFQyxHQUFHLEVBQUVDLEtBQUs7SUFDcEMsSUFBSSxPQUFPRCxRQUFRLFVBQVU7UUFDM0IsTUFBTSxJQUFJRSxNQUFNO0lBQ2xCO0lBQ0FmLDhDQUFXLENBQUNhLEtBQUtELEtBQUtFO0lBQ3RCLE9BQU9kLDhDQUFXLENBQUNnQixLQUFLO0FBQzFCO0FBRU8sU0FBU0MsTUFBT0MsR0FBRyxFQUFFSixLQUFLLEVBQUVLLEdBQUc7SUFDcEMsSUFBSUMsU0FBUztJQUNiLElBQUssSUFBSUMsU0FBU1AsT0FBT08sU0FBU0YsS0FBTTtRQUN0QyxNQUFNRyxNQUFNSixHQUFHLENBQUNHLFNBQVM7UUFDekIsTUFBTVIsTUFBTVMsSUFBSUMsUUFBUSxDQUFDO1FBQ3pCSCxVQUFVLElBQUtJLE1BQU0sS0FBSyxJQUFLLE1BQU1YLE1BQU1BO0lBQzdDO0lBQ0EsT0FBT087QUFDVDtBQUVBLE1BQU1LLE9BQU9DLEtBQUtDLEdBQUcsQ0FBQyxHQUFHO0FBQ3pCLE1BQU1DLE9BQU9GLEtBQUtDLEdBQUcsQ0FBQyxHQUFHO0FBQ3pCLE1BQU1FLE1BQU1ILEtBQUtDLEdBQUcsQ0FBQyxHQUFHO0FBQ2pCLE1BQU1HLGVBQWUsQ0FBQ1osS0FBS0csU0FBV0gsR0FBRyxDQUFDRyxPQUFPLEdBQUdJLE9BQ3pEUCxHQUFHLENBQUNHLFNBQVMsRUFBRSxHQUFHTyxPQUNsQlYsR0FBRyxDQUFDRyxTQUFTLEVBQUUsR0FBR1EsTUFDbEJYLEdBQUcsQ0FBQ0csU0FBUyxFQUFFO0FBRVYsTUFBTVUsZUFBZSxDQUFDYixLQUFLRyxTQUFXLEdBQUksQ0FBQ0EsT0FBTyxJQUFJLElBQUtILEdBQUcsQ0FBQ0csU0FBUyxFQUFFO0FBQzFFLE1BQU1XLGdCQUFnQixDQUFDZCxLQUFLZSxPQUFPWjtJQUN4Q1ksUUFBUSxDQUFDQTtJQUNUZixHQUFHLENBQUNHLFNBQVMsRUFBRSxHQUFHWTtJQUNsQkEsUUFBUUEsVUFBVTtJQUNsQmYsR0FBRyxDQUFDRyxTQUFTLEVBQUUsR0FBR1k7SUFDbEJBLFFBQVFBLFVBQVU7SUFDbEJmLEdBQUcsQ0FBQ0csU0FBUyxFQUFFLEdBQUdZO0lBQ2xCQSxRQUFRQSxVQUFVO0lBQ2xCZixHQUFHLENBQUNHLE9BQU8sR0FBR1k7SUFDZCxPQUFPWixTQUFTO0FBQ2xCLEVBQUM7QUFDTSxNQUFNYSxnQkFBZ0IsQ0FBQ2hCLEtBQUtlLE9BQU9aO0lBQ3hDSCxHQUFHLENBQUNHLE9BQU8sR0FBR1ksU0FBUztJQUN2QmYsR0FBRyxDQUFDRyxTQUFTLEVBQUUsR0FBR1ksUUFBUTtJQUMxQixPQUFPWixTQUFTO0FBQ2xCLEVBQUM7QUFFTSxTQUFTYyxLQUFNQyxNQUFNLEVBQUVDLE1BQU0sRUFBRUMsV0FBVyxFQUFFQyxXQUFXLEVBQUVDLFNBQVM7SUFDdkUsSUFBSUYsY0FBYyxHQUFHO1FBQ25CQyxlQUFlRDtRQUNmQSxjQUFjO0lBQ2hCO0lBRUEsSUFBSUMsY0FBYyxHQUFHO1FBQ25CQSxjQUFjO0lBQ2hCO0lBRUEsSUFBSUMsWUFBWSxHQUFHO1FBQ2pCLE9BQU8sSUFBSXJDLFdBQVc7SUFDeEI7SUFFQSxJQUFJbUMsZUFBZUQsT0FBT2IsTUFBTSxJQUFJZSxlQUFlQyxXQUFXO1FBQzVELE9BQU87SUFDVDtJQUVBLE9BQU9DLFlBQVlMLFFBQVFDLFFBQVFDLGFBQWFDLGFBQWFDO0FBQy9EO0FBRUEsU0FBU0MsWUFBYUwsTUFBTSxFQUFFQyxNQUFNLEVBQUVDLFdBQVcsRUFBRUMsV0FBVyxFQUFFQyxTQUFTO0lBQ3ZFLElBQUlBLFlBQVlELGNBQWNGLE9BQU9iLE1BQU0sR0FBR2MsYUFBYTtRQUN6REUsWUFBWUQsY0FBY0YsT0FBT2IsTUFBTSxHQUFHYztJQUM1QztJQUVBLElBQUlJLEtBQUtGLFlBQVlEO0lBQ3JCLE1BQU1JLFlBQVlQLE9BQU9aLE1BQU0sR0FBR2U7SUFDbEMsSUFBSUcsS0FBS0MsV0FBVztRQUNsQkQsS0FBS0M7SUFDUDtJQUVBLElBQUlKLGdCQUFnQixLQUFLQyxZQUFZSixPQUFPWixNQUFNLEVBQUU7UUFDbERZLFNBQVMsSUFBSWpDLFdBQVdpQyxPQUFPUSxNQUFNLEVBQUVSLE9BQU9TLFVBQVUsR0FBR04sYUFBYUc7SUFDMUU7SUFFQUwsT0FBT1MsR0FBRyxDQUFDVixRQUFRRTtJQUVuQixPQUFPSTtBQUNUIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZmx1c2gtbm90ZXMvLi9ub2RlX21vZHVsZXMvQGxlaWNodGdld2ljaHQvZG5zLXBhY2tldC9idWZmZXJfdXRpbHMubWpzP2VjOGYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRmOCBmcm9tICd1dGY4LWNvZGVjJ1xuXG5leHBvcnQgY29uc3QgaXNVOEFyciA9IGlucHV0ID0+IGlucHV0IGluc3RhbmNlb2YgVWludDhBcnJheVxuXG5leHBvcnQgZnVuY3Rpb24gYnl0ZWxlbmd0aCAoaW5wdXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycgPyB1dGY4LmVuY29kaW5nTGVuZ3RoKGlucHV0KSA6IGlucHV0LmJ5dGVMZW5ndGhcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb20gKGlucHV0KSB7XG4gIGlmIChpbnB1dCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcbiAgICByZXR1cm4gaW5wdXRcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheShpbnB1dCkpIHtcbiAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoaW5wdXQpXG4gIH1cbiAgcmV0dXJuIHV0ZjguZW5jb2RlKGlucHV0KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGUgKGFyciwgc3RyLCBzdGFydCkge1xuICBpZiAodHlwZW9mIHN0ciAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gaW5wdXQgdHlwZScpXG4gIH1cbiAgdXRmOC5lbmNvZGUoc3RyLCBhcnIsIHN0YXJ0KVxuICByZXR1cm4gdXRmOC5lbmNvZGUuYnl0ZXNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvSGV4IChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgbGV0IHJlc3VsdCA9ICcnXG4gIGZvciAobGV0IG9mZnNldCA9IHN0YXJ0OyBvZmZzZXQgPCBlbmQ7KSB7XG4gICAgY29uc3QgbnVtID0gYnVmW29mZnNldCsrXVxuICAgIGNvbnN0IHN0ciA9IG51bS50b1N0cmluZygxNilcbiAgICByZXN1bHQgKz0gKHN0ci5sZW5ndGggPT09IDEpID8gJzAnICsgc3RyIDogc3RyXG4gIH1cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5jb25zdCBQXzI0ID0gTWF0aC5wb3coMiwgMjQpXG5jb25zdCBQXzE2ID0gTWF0aC5wb3coMiwgMTYpXG5jb25zdCBQXzggPSBNYXRoLnBvdygyLCA4KVxuZXhwb3J0IGNvbnN0IHJlYWRVSW50MzJCRSA9IChidWYsIG9mZnNldCkgPT4gYnVmW29mZnNldF0gKiBQXzI0ICtcbiAgYnVmW29mZnNldCArIDFdICogUF8xNiArXG4gIGJ1ZltvZmZzZXQgKyAyXSAqIFBfOCArXG4gIGJ1ZltvZmZzZXQgKyAzXVxuXG5leHBvcnQgY29uc3QgcmVhZFVJbnQxNkJFID0gKGJ1Ziwgb2Zmc2V0KSA9PiAoYnVmW29mZnNldF0gPDwgOCkgfCBidWZbb2Zmc2V0ICsgMV1cbmV4cG9ydCBjb25zdCB3cml0ZVVJbnQzMkJFID0gKGJ1ZiwgdmFsdWUsIG9mZnNldCkgPT4ge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBidWZbb2Zmc2V0ICsgM10gPSB2YWx1ZVxuICB2YWx1ZSA9IHZhbHVlID4+PiA4XG4gIGJ1ZltvZmZzZXQgKyAyXSA9IHZhbHVlXG4gIHZhbHVlID0gdmFsdWUgPj4+IDhcbiAgYnVmW29mZnNldCArIDFdID0gdmFsdWVcbiAgdmFsdWUgPSB2YWx1ZSA+Pj4gOFxuICBidWZbb2Zmc2V0XSA9IHZhbHVlXG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5leHBvcnQgY29uc3Qgd3JpdGVVSW50MTZCRSA9IChidWYsIHZhbHVlLCBvZmZzZXQpID0+IHtcbiAgYnVmW29mZnNldF0gPSB2YWx1ZSA+PiA4XG4gIGJ1ZltvZmZzZXQgKyAxXSA9IHZhbHVlICYgMHhGRlxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29weSAoc291cmNlLCB0YXJnZXQsIHRhcmdldFN0YXJ0LCBzb3VyY2VTdGFydCwgc291cmNlRW5kKSB7XG4gIGlmICh0YXJnZXRTdGFydCA8IDApIHtcbiAgICBzb3VyY2VTdGFydCAtPSB0YXJnZXRTdGFydFxuICAgIHRhcmdldFN0YXJ0ID0gMFxuICB9XG5cbiAgaWYgKHNvdXJjZVN0YXJ0IDwgMCkge1xuICAgIHNvdXJjZVN0YXJ0ID0gMFxuICB9XG5cbiAgaWYgKHNvdXJjZUVuZCA8IDApIHtcbiAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMClcbiAgfVxuXG4gIGlmICh0YXJnZXRTdGFydCA+PSB0YXJnZXQubGVuZ3RoIHx8IHNvdXJjZVN0YXJ0ID49IHNvdXJjZUVuZCkge1xuICAgIHJldHVybiAwXG4gIH1cblxuICByZXR1cm4gX2NvcHlBY3R1YWwoc291cmNlLCB0YXJnZXQsIHRhcmdldFN0YXJ0LCBzb3VyY2VTdGFydCwgc291cmNlRW5kKVxufVxuXG5mdW5jdGlvbiBfY29weUFjdHVhbCAoc291cmNlLCB0YXJnZXQsIHRhcmdldFN0YXJ0LCBzb3VyY2VTdGFydCwgc291cmNlRW5kKSB7XG4gIGlmIChzb3VyY2VFbmQgLSBzb3VyY2VTdGFydCA+IHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCkge1xuICAgIHNvdXJjZUVuZCA9IHNvdXJjZVN0YXJ0ICsgdGFyZ2V0Lmxlbmd0aCAtIHRhcmdldFN0YXJ0XG4gIH1cblxuICBsZXQgbmIgPSBzb3VyY2VFbmQgLSBzb3VyY2VTdGFydFxuICBjb25zdCBzb3VyY2VMZW4gPSBzb3VyY2UubGVuZ3RoIC0gc291cmNlU3RhcnRcbiAgaWYgKG5iID4gc291cmNlTGVuKSB7XG4gICAgbmIgPSBzb3VyY2VMZW5cbiAgfVxuXG4gIGlmIChzb3VyY2VTdGFydCAhPT0gMCB8fCBzb3VyY2VFbmQgPCBzb3VyY2UubGVuZ3RoKSB7XG4gICAgc291cmNlID0gbmV3IFVpbnQ4QXJyYXkoc291cmNlLmJ1ZmZlciwgc291cmNlLmJ5dGVPZmZzZXQgKyBzb3VyY2VTdGFydCwgbmIpXG4gIH1cblxuICB0YXJnZXQuc2V0KHNvdXJjZSwgdGFyZ2V0U3RhcnQpXG5cbiAgcmV0dXJuIG5iXG59XG4iXSwibmFtZXMiOlsidXRmOCIsImlzVThBcnIiLCJpbnB1dCIsIlVpbnQ4QXJyYXkiLCJieXRlbGVuZ3RoIiwiZW5jb2RpbmdMZW5ndGgiLCJieXRlTGVuZ3RoIiwiZnJvbSIsIkFycmF5IiwiaXNBcnJheSIsImVuY29kZSIsIndyaXRlIiwiYXJyIiwic3RyIiwic3RhcnQiLCJFcnJvciIsImJ5dGVzIiwidG9IZXgiLCJidWYiLCJlbmQiLCJyZXN1bHQiLCJvZmZzZXQiLCJudW0iLCJ0b1N0cmluZyIsImxlbmd0aCIsIlBfMjQiLCJNYXRoIiwicG93IiwiUF8xNiIsIlBfOCIsInJlYWRVSW50MzJCRSIsInJlYWRVSW50MTZCRSIsIndyaXRlVUludDMyQkUiLCJ2YWx1ZSIsIndyaXRlVUludDE2QkUiLCJjb3B5Iiwic291cmNlIiwidGFyZ2V0IiwidGFyZ2V0U3RhcnQiLCJzb3VyY2VTdGFydCIsInNvdXJjZUVuZCIsIl9jb3B5QWN0dWFsIiwibmIiLCJzb3VyY2VMZW4iLCJidWZmZXIiLCJieXRlT2Zmc2V0Iiwic2V0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@leichtgewicht/dns-packet/buffer_utils.mjs\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/@leichtgewicht/dns-packet/classes.mjs":
|
|
/*!************************************************************!*\
|
|
!*** ./node_modules/@leichtgewicht/dns-packet/classes.mjs ***!
|
|
\************************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ toClass: () => (/* binding */ toClass),\n/* harmony export */ toString: () => (/* binding */ toString)\n/* harmony export */ });\nfunction toString(klass) {\n switch(klass){\n case 1:\n return \"IN\";\n case 2:\n return \"CS\";\n case 3:\n return \"CH\";\n case 4:\n return \"HS\";\n case 255:\n return \"ANY\";\n }\n return \"UNKNOWN_\" + klass;\n}\nfunction toClass(name) {\n switch(name.toUpperCase()){\n case \"IN\":\n return 1;\n case \"CS\":\n return 2;\n case \"CH\":\n return 3;\n case \"HS\":\n return 4;\n case \"ANY\":\n return 255;\n }\n return 0;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQGxlaWNodGdld2ljaHQvZG5zLXBhY2tldC9jbGFzc2VzLm1qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFPLFNBQVNBLFNBQVVDLEtBQUs7SUFDN0IsT0FBUUE7UUFDTixLQUFLO1lBQUcsT0FBTztRQUNmLEtBQUs7WUFBRyxPQUFPO1FBQ2YsS0FBSztZQUFHLE9BQU87UUFDZixLQUFLO1lBQUcsT0FBTztRQUNmLEtBQUs7WUFBSyxPQUFPO0lBQ25CO0lBQ0EsT0FBTyxhQUFhQTtBQUN0QjtBQUVPLFNBQVNDLFFBQVNDLElBQUk7SUFDM0IsT0FBUUEsS0FBS0MsV0FBVztRQUN0QixLQUFLO1lBQU0sT0FBTztRQUNsQixLQUFLO1lBQU0sT0FBTztRQUNsQixLQUFLO1lBQU0sT0FBTztRQUNsQixLQUFLO1lBQU0sT0FBTztRQUNsQixLQUFLO1lBQU8sT0FBTztJQUNyQjtJQUNBLE9BQU87QUFDVCIsInNvdXJjZXMiOlsid2VicGFjazovL2ZsdXNoLW5vdGVzLy4vbm9kZV9tb2R1bGVzL0BsZWljaHRnZXdpY2h0L2Rucy1wYWNrZXQvY2xhc3Nlcy5tanM/MGRlMSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gdG9TdHJpbmcgKGtsYXNzKSB7XG4gIHN3aXRjaCAoa2xhc3MpIHtcbiAgICBjYXNlIDE6IHJldHVybiAnSU4nXG4gICAgY2FzZSAyOiByZXR1cm4gJ0NTJ1xuICAgIGNhc2UgMzogcmV0dXJuICdDSCdcbiAgICBjYXNlIDQ6IHJldHVybiAnSFMnXG4gICAgY2FzZSAyNTU6IHJldHVybiAnQU5ZJ1xuICB9XG4gIHJldHVybiAnVU5LTk9XTl8nICsga2xhc3Ncbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvQ2xhc3MgKG5hbWUpIHtcbiAgc3dpdGNoIChuYW1lLnRvVXBwZXJDYXNlKCkpIHtcbiAgICBjYXNlICdJTic6IHJldHVybiAxXG4gICAgY2FzZSAnQ1MnOiByZXR1cm4gMlxuICAgIGNhc2UgJ0NIJzogcmV0dXJuIDNcbiAgICBjYXNlICdIUyc6IHJldHVybiA0XG4gICAgY2FzZSAnQU5ZJzogcmV0dXJuIDI1NVxuICB9XG4gIHJldHVybiAwXG59XG4iXSwibmFtZXMiOlsidG9TdHJpbmciLCJrbGFzcyIsInRvQ2xhc3MiLCJuYW1lIiwidG9VcHBlckNhc2UiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@leichtgewicht/dns-packet/classes.mjs\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/@leichtgewicht/dns-packet/index.mjs":
|
|
/*!**********************************************************!*\
|
|
!*** ./node_modules/@leichtgewicht/dns-packet/index.mjs ***!
|
|
\**********************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AUTHENTIC_DATA: () => (/* binding */ AUTHENTIC_DATA),\n/* harmony export */ AUTHORITATIVE_ANSWER: () => (/* binding */ AUTHORITATIVE_ANSWER),\n/* harmony export */ CHECKING_DISABLED: () => (/* binding */ CHECKING_DISABLED),\n/* harmony export */ DNSSEC_OK: () => (/* binding */ DNSSEC_OK),\n/* harmony export */ RECURSION_AVAILABLE: () => (/* binding */ RECURSION_AVAILABLE),\n/* harmony export */ RECURSION_DESIRED: () => (/* binding */ RECURSION_DESIRED),\n/* harmony export */ TRUNCATED_RESPONSE: () => (/* binding */ TRUNCATED_RESPONSE),\n/* harmony export */ a: () => (/* binding */ ra),\n/* harmony export */ aaaa: () => (/* binding */ raaaa),\n/* harmony export */ answer: () => (/* binding */ answer),\n/* harmony export */ caa: () => (/* binding */ rcaa),\n/* harmony export */ cname: () => (/* binding */ rptr),\n/* harmony export */ decode: () => (/* binding */ decode),\n/* harmony export */ decodeList: () => (/* binding */ decodeList),\n/* harmony export */ dname: () => (/* binding */ rptr),\n/* harmony export */ dnskey: () => (/* binding */ rdnskey),\n/* harmony export */ ds: () => (/* binding */ rds),\n/* harmony export */ enc: () => (/* binding */ renc),\n/* harmony export */ encode: () => (/* binding */ encode),\n/* harmony export */ encodeList: () => (/* binding */ encodeList),\n/* harmony export */ encodingLength: () => (/* binding */ encodingLength),\n/* harmony export */ encodingLengthList: () => (/* binding */ encodingLengthList),\n/* harmony export */ hinfo: () => (/* binding */ rhinfo),\n/* harmony export */ mx: () => (/* binding */ rmx),\n/* harmony export */ name: () => (/* binding */ name),\n/* harmony export */ ns: () => (/* binding */ rns),\n/* harmony export */ nsec: () => (/* binding */ rnsec),\n/* harmony export */ nsec3: () => (/* binding */ rnsec3),\n/* harmony export */ \"null\": () => (/* binding */ rnull),\n/* harmony export */ opt: () => (/* binding */ ropt),\n/* harmony export */ option: () => (/* binding */ roption),\n/* harmony export */ packet: () => (/* binding */ packet),\n/* harmony export */ ptr: () => (/* binding */ rptr),\n/* harmony export */ query: () => (/* binding */ query),\n/* harmony export */ question: () => (/* binding */ question),\n/* harmony export */ response: () => (/* binding */ response),\n/* harmony export */ rp: () => (/* binding */ rrp),\n/* harmony export */ rrsig: () => (/* binding */ rrrsig),\n/* harmony export */ soa: () => (/* binding */ rsoa),\n/* harmony export */ srv: () => (/* binding */ rsrv),\n/* harmony export */ streamDecode: () => (/* binding */ streamDecode),\n/* harmony export */ streamEncode: () => (/* binding */ streamEncode),\n/* harmony export */ txt: () => (/* binding */ rtxt),\n/* harmony export */ unknown: () => (/* binding */ runknown)\n/* harmony export */ });\n/* harmony import */ var _leichtgewicht_ip_codec__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @leichtgewicht/ip-codec */ \"(ssr)/./node_modules/@leichtgewicht/ip-codec/index.mjs\");\n/* harmony import */ var _types_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./types.mjs */ \"(ssr)/./node_modules/@leichtgewicht/dns-packet/types.mjs\");\n/* harmony import */ var _rcodes_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./rcodes.mjs */ \"(ssr)/./node_modules/@leichtgewicht/dns-packet/rcodes.mjs\");\n/* harmony import */ var _opcodes_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./opcodes.mjs */ \"(ssr)/./node_modules/@leichtgewicht/dns-packet/opcodes.mjs\");\n/* harmony import */ var _classes_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./classes.mjs */ \"(ssr)/./node_modules/@leichtgewicht/dns-packet/classes.mjs\");\n/* harmony import */ var _optioncodes_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./optioncodes.mjs */ \"(ssr)/./node_modules/@leichtgewicht/dns-packet/optioncodes.mjs\");\n/* harmony import */ var _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./buffer_utils.mjs */ \"(ssr)/./node_modules/@leichtgewicht/dns-packet/buffer_utils.mjs\");\n/* harmony import */ var utf8_codec__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! utf8-codec */ \"(ssr)/./node_modules/utf8-codec/index.mjs\");\n\n\n\n\n\n\n\n\nconst QUERY_FLAG = 0;\nconst RESPONSE_FLAG = 1 << 15;\nconst FLUSH_MASK = 1 << 15;\nconst NOT_FLUSH_MASK = ~FLUSH_MASK;\nconst QU_MASK = 1 << 15;\nconst NOT_QU_MASK = ~QU_MASK;\nfunction codec({ bytes = 0, encode, decode, encodingLength }) {\n encode.bytes = bytes;\n decode.bytes = bytes;\n return {\n encode,\n decode,\n encodingLength: encodingLength || (()=>bytes)\n };\n}\nconst name = codec({\n encode (str, buf, offset) {\n if (!buf) buf = new Uint8Array(name.encodingLength(str));\n if (!offset) offset = 0;\n const oldOffset = offset;\n // strip leading and trailing .\n const n = str.replace(/^\\.|\\.$/gm, \"\");\n if (n.length) {\n const list = n.split(\".\");\n for(let i = 0; i < list.length; i++){\n const len = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.write(buf, list[i], offset + 1);\n buf[offset] = len;\n offset += len + 1;\n }\n }\n buf[offset++] = 0;\n name.encode.bytes = offset - oldOffset;\n return buf;\n },\n decode (buf, offset) {\n if (!offset) offset = 0;\n const list = [];\n let oldOffset = offset;\n let totalLength = 0;\n let consumedBytes = 0;\n let jumped = false;\n while(true){\n if (offset >= buf.length) {\n throw new Error(\"Cannot decode name (buffer overflow)\");\n }\n const len = buf[offset++];\n consumedBytes += jumped ? 0 : 1;\n if (len === 0) {\n break;\n } else if ((len & 0xc0) === 0) {\n if (offset + len > buf.length) {\n throw new Error(\"Cannot decode name (buffer overflow)\");\n }\n totalLength += len + 1;\n if (totalLength > 254) {\n throw new Error(\"Cannot decode name (name too long)\");\n }\n list.push((0,utf8_codec__WEBPACK_IMPORTED_MODULE_7__.decode)(buf, offset, offset + len));\n offset += len;\n consumedBytes += jumped ? 0 : len;\n } else if ((len & 0xc0) === 0xc0) {\n if (offset + 1 > buf.length) {\n throw new Error(\"Cannot decode name (buffer overflow)\");\n }\n const jumpOffset = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset - 1) - 0xc000;\n if (jumpOffset >= oldOffset) {\n // Allow only pointers to prior data. RFC 1035, section 4.1.4 states:\n // \"[...] an entire domain name or a list of labels at the end of a domain name\n // is replaced with a pointer to a prior occurance (sic) of the same name.\"\n throw new Error(\"Cannot decode name (bad pointer)\");\n }\n offset = jumpOffset;\n oldOffset = jumpOffset;\n consumedBytes += jumped ? 0 : 1;\n jumped = true;\n } else {\n throw new Error(\"Cannot decode name (bad label)\");\n }\n }\n name.decode.bytes = consumedBytes;\n return list.length === 0 ? \".\" : list.join(\".\");\n },\n encodingLength (n) {\n if (n === \".\" || n === \"..\") return 1;\n return _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.bytelength(n.replace(/^\\.|\\.$/gm, \"\")) + 2;\n }\n});\nconst string = codec({\n encode (s, buf, offset) {\n if (!buf) buf = new Uint8Array(string.encodingLength(s));\n if (!offset) offset = 0;\n const len = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.write(buf, s, offset + 1);\n buf[offset] = len;\n string.encode.bytes = len + 1;\n return buf;\n },\n decode (buf, offset) {\n if (!offset) offset = 0;\n const len = buf[offset];\n const s = (0,utf8_codec__WEBPACK_IMPORTED_MODULE_7__.decode)(buf, offset + 1, offset + 1 + len);\n string.decode.bytes = len + 1;\n return s;\n },\n encodingLength (s) {\n return _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.bytelength(s) + 1;\n }\n});\nconst header = codec({\n bytes: 12,\n encode (h, buf, offset) {\n if (!buf) buf = new Uint8Array(header.encodingLength(h));\n if (!offset) offset = 0;\n const flags = (h.flags || 0) & 32767;\n const type = h.type === \"response\" ? RESPONSE_FLAG : QUERY_FLAG;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, h.id || 0, offset);\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, flags | type, offset + 2);\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, h.questions.length, offset + 4);\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, h.answers.length, offset + 6);\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, h.authorities.length, offset + 8);\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, h.additionals.length, offset + 10);\n return buf;\n },\n decode (buf, offset) {\n if (!offset) offset = 0;\n if (buf.length < 12) throw new Error(\"Header must be 12 bytes\");\n const flags = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset + 2);\n return {\n id: _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset),\n type: flags & RESPONSE_FLAG ? \"response\" : \"query\",\n flags: flags & 32767,\n flag_qr: (flags >> 15 & 0x1) === 1,\n opcode: _opcodes_mjs__WEBPACK_IMPORTED_MODULE_3__.toString(flags >> 11 & 0xf),\n flag_aa: (flags >> 10 & 0x1) === 1,\n flag_tc: (flags >> 9 & 0x1) === 1,\n flag_rd: (flags >> 8 & 0x1) === 1,\n flag_ra: (flags >> 7 & 0x1) === 1,\n flag_z: (flags >> 6 & 0x1) === 1,\n flag_ad: (flags >> 5 & 0x1) === 1,\n flag_cd: (flags >> 4 & 0x1) === 1,\n rcode: _rcodes_mjs__WEBPACK_IMPORTED_MODULE_2__.toString(flags & 0xf),\n questions: new Array(_buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset + 4)),\n answers: new Array(_buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset + 6)),\n authorities: new Array(_buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset + 8)),\n additionals: new Array(_buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset + 10))\n };\n },\n encodingLength () {\n return 12;\n }\n});\nconst runknown = codec({\n encode (data, buf, offset) {\n if (!buf) buf = new Uint8Array(runknown.encodingLength(data));\n if (!offset) offset = 0;\n const dLen = data.length;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, dLen, offset);\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.copy(data, buf, offset + 2, 0, dLen);\n runknown.encode.bytes = dLen + 2;\n return buf;\n },\n decode (buf, offset) {\n if (!offset) offset = 0;\n const len = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset);\n const data = buf.slice(offset + 2, offset + 2 + len);\n runknown.decode.bytes = len + 2;\n return data;\n },\n encodingLength (data) {\n return data.length + 2;\n }\n});\nconst rns = codec({\n encode (data, buf, offset) {\n if (!buf) buf = new Uint8Array(rns.encodingLength(data));\n if (!offset) offset = 0;\n name.encode(data, buf, offset + 2);\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, name.encode.bytes, offset);\n rns.encode.bytes = name.encode.bytes + 2;\n return buf;\n },\n decode (buf, offset) {\n if (!offset) offset = 0;\n const len = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset);\n const dd = name.decode(buf, offset + 2);\n rns.decode.bytes = len + 2;\n return dd;\n },\n encodingLength (data) {\n return name.encodingLength(data) + 2;\n }\n});\nconst rsoa = codec({\n encode (data, buf, offset) {\n if (!buf) buf = new Uint8Array(rsoa.encodingLength(data));\n if (!offset) offset = 0;\n const oldOffset = offset;\n offset += 2;\n name.encode(data.mname, buf, offset);\n offset += name.encode.bytes;\n name.encode(data.rname, buf, offset);\n offset += name.encode.bytes;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt32BE(buf, data.serial || 0, offset);\n offset += 4;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt32BE(buf, data.refresh || 0, offset);\n offset += 4;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt32BE(buf, data.retry || 0, offset);\n offset += 4;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt32BE(buf, data.expire || 0, offset);\n offset += 4;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt32BE(buf, data.minimum || 0, offset);\n offset += 4;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, offset - oldOffset - 2, oldOffset);\n rsoa.encode.bytes = offset - oldOffset;\n return buf;\n },\n decode (buf, offset) {\n if (!offset) offset = 0;\n const oldOffset = offset;\n const data = {};\n offset += 2;\n data.mname = name.decode(buf, offset);\n offset += name.decode.bytes;\n data.rname = name.decode(buf, offset);\n offset += name.decode.bytes;\n data.serial = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt32BE(buf, offset);\n offset += 4;\n data.refresh = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt32BE(buf, offset);\n offset += 4;\n data.retry = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt32BE(buf, offset);\n offset += 4;\n data.expire = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt32BE(buf, offset);\n offset += 4;\n data.minimum = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt32BE(buf, offset);\n offset += 4;\n rsoa.decode.bytes = offset - oldOffset;\n return data;\n },\n encodingLength (data) {\n return 22 + name.encodingLength(data.mname) + name.encodingLength(data.rname);\n }\n});\nconst rtxt = codec({\n encode (data, buf, offset) {\n if (!Array.isArray(data)) data = [\n data\n ];\n for(let i = 0; i < data.length; i++){\n if (typeof data[i] === \"string\") {\n data[i] = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.from(data[i]);\n }\n if (!_buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.isU8Arr(data[i])) {\n throw new Error(\"Must be a Buffer\");\n }\n }\n if (!buf) buf = new Uint8Array(rtxt.encodingLength(data));\n if (!offset) offset = 0;\n const oldOffset = offset;\n offset += 2;\n data.forEach(function(d) {\n buf[offset++] = d.length;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.copy(d, buf, offset, 0, d.length);\n offset += d.length;\n });\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, offset - oldOffset - 2, oldOffset);\n rtxt.encode.bytes = offset - oldOffset;\n return buf;\n },\n decode (buf, offset) {\n if (!offset) offset = 0;\n const oldOffset = offset;\n let remaining = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset);\n offset += 2;\n const data = [];\n while(remaining > 0){\n const len = buf[offset++];\n --remaining;\n if (remaining < len) {\n throw new Error(\"Buffer overflow\");\n }\n data.push(buf.slice(offset, offset + len));\n offset += len;\n remaining -= len;\n }\n rtxt.decode.bytes = offset - oldOffset;\n return data;\n },\n encodingLength (data) {\n if (!Array.isArray(data)) data = [\n data\n ];\n let length = 2;\n data.forEach(function(buf) {\n if (typeof buf === \"string\") {\n length += _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.bytelength(buf) + 1;\n } else {\n length += buf.length + 1;\n }\n });\n return length;\n }\n});\nconst rnull = codec({\n encode (data, buf, offset) {\n if (!buf) buf = new Uint8Array(rnull.encodingLength(data));\n if (!offset) offset = 0;\n if (typeof data === \"string\") data = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.from(data);\n if (!data) data = new Uint8Array(0);\n const oldOffset = offset;\n offset += 2;\n const len = data.length;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.copy(data, buf, offset, 0, len);\n offset += len;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, offset - oldOffset - 2, oldOffset);\n rnull.encode.bytes = offset - oldOffset;\n return buf;\n },\n decode (buf, offset) {\n if (!offset) offset = 0;\n const oldOffset = offset;\n const len = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset);\n offset += 2;\n const data = buf.slice(offset, offset + len);\n offset += len;\n rnull.decode.bytes = offset - oldOffset;\n return data;\n },\n encodingLength (data) {\n if (!data) return 2;\n return (_buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.isU8Arr(data) ? data.length : _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.bytelength(data)) + 2;\n }\n});\nconst rhinfo = codec({\n encode (data, buf, offset) {\n if (!buf) buf = new Uint8Array(rhinfo.encodingLength(data));\n if (!offset) offset = 0;\n const oldOffset = offset;\n offset += 2;\n string.encode(data.cpu, buf, offset);\n offset += string.encode.bytes;\n string.encode(data.os, buf, offset);\n offset += string.encode.bytes;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, offset - oldOffset - 2, oldOffset);\n rhinfo.encode.bytes = offset - oldOffset;\n return buf;\n },\n decode (buf, offset) {\n if (!offset) offset = 0;\n const oldOffset = offset;\n const data = {};\n offset += 2;\n data.cpu = string.decode(buf, offset);\n offset += string.decode.bytes;\n data.os = string.decode(buf, offset);\n offset += string.decode.bytes;\n rhinfo.decode.bytes = offset - oldOffset;\n return data;\n },\n encodingLength (data) {\n return string.encodingLength(data.cpu) + string.encodingLength(data.os) + 2;\n }\n});\nconst rptr = codec({\n encode (data, buf, offset) {\n if (!buf) buf = new Uint8Array(rptr.encodingLength(data));\n if (!offset) offset = 0;\n name.encode(data, buf, offset + 2);\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, name.encode.bytes, offset);\n rptr.encode.bytes = name.encode.bytes + 2;\n return buf;\n },\n decode (buf, offset) {\n if (!offset) offset = 0;\n const data = name.decode(buf, offset + 2);\n rptr.decode.bytes = name.decode.bytes + 2;\n return data;\n },\n encodingLength (data) {\n return name.encodingLength(data) + 2;\n }\n});\nconst rsrv = codec({\n encode (data, buf, offset) {\n if (!buf) buf = new Uint8Array(rsrv.encodingLength(data));\n if (!offset) offset = 0;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, data.priority || 0, offset + 2);\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, data.weight || 0, offset + 4);\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, data.port || 0, offset + 6);\n name.encode(data.target, buf, offset + 8);\n const len = name.encode.bytes + 6;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, len, offset);\n rsrv.encode.bytes = len + 2;\n return buf;\n },\n decode (buf, offset) {\n if (!offset) offset = 0;\n const len = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset);\n const data = {};\n data.priority = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset + 2);\n data.weight = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset + 4);\n data.port = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset + 6);\n data.target = name.decode(buf, offset + 8);\n rsrv.decode.bytes = len + 2;\n return data;\n },\n encodingLength (data) {\n return 8 + name.encodingLength(data.target);\n }\n});\nconst rcaa = codec({\n encode (data, buf, offset) {\n const len = rcaa.encodingLength(data);\n if (!buf) buf = new Uint8Array(rcaa.encodingLength(data));\n if (!offset) offset = 0;\n if (data.issuerCritical) {\n data.flags = rcaa.ISSUER_CRITICAL;\n }\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, len - 2, offset);\n offset += 2;\n buf[offset] = data.flags || 0;\n offset += 1;\n string.encode(data.tag, buf, offset);\n offset += string.encode.bytes;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.write(buf, data.value, offset);\n offset += _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.bytelength(data.value);\n rcaa.encode.bytes = len;\n return buf;\n },\n decode (buf, offset) {\n if (!offset) offset = 0;\n const len = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset);\n offset += 2;\n const oldOffset = offset;\n const data = {};\n data.flags = buf[offset];\n offset += 1;\n data.tag = string.decode(buf, offset);\n offset += string.decode.bytes;\n data.value = (0,utf8_codec__WEBPACK_IMPORTED_MODULE_7__.decode)(buf, offset, oldOffset + len);\n data.issuerCritical = !!(data.flags & rcaa.ISSUER_CRITICAL);\n rcaa.decode.bytes = len + 2;\n return data;\n },\n encodingLength (data) {\n return string.encodingLength(data.tag) + string.encodingLength(data.value) + 2;\n }\n});\nrcaa.ISSUER_CRITICAL = 1 << 7;\nconst rmx = codec({\n encode (data, buf, offset) {\n if (!buf) buf = new Uint8Array(rmx.encodingLength(data));\n if (!offset) offset = 0;\n const oldOffset = offset;\n offset += 2;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, data.preference || 0, offset);\n offset += 2;\n name.encode(data.exchange, buf, offset);\n offset += name.encode.bytes;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, offset - oldOffset - 2, oldOffset);\n rmx.encode.bytes = offset - oldOffset;\n return buf;\n },\n decode (buf, offset) {\n if (!offset) offset = 0;\n const oldOffset = offset;\n const data = {};\n offset += 2;\n data.preference = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset);\n offset += 2;\n data.exchange = name.decode(buf, offset);\n offset += name.decode.bytes;\n rmx.decode.bytes = offset - oldOffset;\n return data;\n },\n encodingLength (data) {\n return 4 + name.encodingLength(data.exchange);\n }\n});\nconst ra = codec({\n encode (host, buf, offset) {\n if (!buf) buf = new Uint8Array(ra.encodingLength(host));\n if (!offset) offset = 0;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, 4, offset);\n offset += 2;\n _leichtgewicht_ip_codec__WEBPACK_IMPORTED_MODULE_0__.v4.encode(host, buf, offset);\n return buf;\n },\n decode (buf, offset) {\n if (!offset) offset = 0;\n offset += 2;\n const host = _leichtgewicht_ip_codec__WEBPACK_IMPORTED_MODULE_0__.v4.decode(buf, offset);\n return host;\n },\n bytes: 6\n});\nconst raaaa = codec({\n encode (host, buf, offset) {\n if (!buf) buf = new Uint8Array(raaaa.encodingLength(host));\n if (!offset) offset = 0;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, 16, offset);\n offset += 2;\n _leichtgewicht_ip_codec__WEBPACK_IMPORTED_MODULE_0__.v6.encode(host, buf, offset);\n raaaa.encode.bytes = 18;\n return buf;\n },\n decode (buf, offset) {\n if (!offset) offset = 0;\n offset += 2;\n const host = _leichtgewicht_ip_codec__WEBPACK_IMPORTED_MODULE_0__.v6.decode(buf, offset);\n raaaa.decode.bytes = 18;\n return host;\n },\n bytes: 18\n});\nconst alloc = (size)=>new Uint8Array(size);\nconst roption = codec({\n encode (option, buf, offset) {\n if (!buf) buf = new Uint8Array(roption.encodingLength(option));\n if (!offset) offset = 0;\n const oldOffset = offset;\n const code = _optioncodes_mjs__WEBPACK_IMPORTED_MODULE_5__.toCode(option.code);\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, code, offset);\n offset += 2;\n if (option.data) {\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, option.data.length, offset);\n offset += 2;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.copy(option.data, buf, offset);\n offset += option.data.length;\n } else {\n switch(code){\n // case 3: NSID. No encode makes sense.\n // case 5,6,7: Not implementable\n case 8:\n {\n // note: do IP math before calling\n const spl = option.sourcePrefixLength || 0;\n const fam = option.family || _leichtgewicht_ip_codec__WEBPACK_IMPORTED_MODULE_0__.familyOf(option.ip, alloc);\n const ipBuf = _leichtgewicht_ip_codec__WEBPACK_IMPORTED_MODULE_0__.encode(option.ip, alloc);\n const ipLen = Math.ceil(spl / 8);\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, ipLen + 4, offset);\n offset += 2;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, fam, offset);\n offset += 2;\n buf[offset++] = spl;\n buf[offset++] = option.scopePrefixLength || 0;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.copy(ipBuf, buf, offset, 0, ipLen);\n offset += ipLen;\n }\n break;\n // case 9: EXPIRE (experimental)\n // case 10: COOKIE. No encode makes sense.\n case 11:\n if (option.timeout) {\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, 2, offset);\n offset += 2;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, option.timeout, offset);\n offset += 2;\n } else {\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, 0, offset);\n offset += 2;\n }\n break;\n case 12:\n {\n const len = option.length || 0;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, len, offset);\n offset += 2;\n buf.fill(0, offset, offset + len);\n offset += len;\n }\n break;\n // case 13: CHAIN. Experimental.\n case 14:\n {\n const tagsLen = option.tags.length * 2;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, tagsLen, offset);\n offset += 2;\n for (const tag of option.tags){\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, tag, offset);\n offset += 2;\n }\n }\n break;\n default:\n throw new Error(`Unknown roption code: ${option.code}`);\n }\n }\n roption.encode.bytes = offset - oldOffset;\n return buf;\n },\n decode (buf, offset) {\n if (!offset) offset = 0;\n const option = {};\n option.code = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset);\n option.type = _optioncodes_mjs__WEBPACK_IMPORTED_MODULE_5__.toString(option.code);\n offset += 2;\n const len = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset);\n offset += 2;\n option.data = buf.slice(offset, offset + len);\n switch(option.code){\n // case 3: NSID. No decode makes sense.\n case 8:\n option.family = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset);\n offset += 2;\n option.sourcePrefixLength = buf[offset++];\n option.scopePrefixLength = buf[offset++];\n {\n const padded = new Uint8Array(option.family === 1 ? 4 : 16);\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.copy(buf, padded, 0, offset, offset + len - 4);\n option.ip = _leichtgewicht_ip_codec__WEBPACK_IMPORTED_MODULE_0__.decode(padded);\n }\n break;\n // case 12: Padding. No decode makes sense.\n case 11:\n if (len > 0) {\n option.timeout = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset);\n offset += 2;\n }\n break;\n case 14:\n option.tags = [];\n for(let i = 0; i < len; i += 2){\n option.tags.push(_buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset));\n offset += 2;\n }\n }\n roption.decode.bytes = len + 4;\n return option;\n },\n encodingLength (option) {\n if (option.data) {\n return option.data.length + 4;\n }\n const code = _optioncodes_mjs__WEBPACK_IMPORTED_MODULE_5__.toCode(option.code);\n switch(code){\n case 8:\n {\n const spl = option.sourcePrefixLength || 0;\n return Math.ceil(spl / 8) + 8;\n }\n case 11:\n return typeof option.timeout === \"number\" ? 6 : 4;\n case 12:\n return option.length + 4;\n case 14:\n return 4 + option.tags.length * 2;\n }\n throw new Error(`Unknown roption code: ${option.code}`);\n }\n});\nconst ropt = codec({\n encode (options, buf, offset) {\n if (!buf) buf = new Uint8Array(ropt.encodingLength(options));\n if (!offset) offset = 0;\n const oldOffset = offset;\n const rdlen = encodingLengthList(options, roption);\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, rdlen, offset);\n offset = encodeList(options, roption, buf, offset + 2);\n ropt.encode.bytes = offset - oldOffset;\n return buf;\n },\n decode (buf, offset) {\n if (!offset) offset = 0;\n const oldOffset = offset;\n const options = [];\n let rdlen = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset);\n offset += 2;\n let o = 0;\n while(rdlen > 0){\n options[o++] = roption.decode(buf, offset);\n offset += roption.decode.bytes;\n rdlen -= roption.decode.bytes;\n }\n ropt.decode.bytes = offset - oldOffset;\n return options;\n },\n encodingLength (options) {\n return 2 + encodingLengthList(options || [], roption);\n }\n});\nconst rdnskey = codec({\n encode (key, buf, offset) {\n if (!buf) buf = new Uint8Array(rdnskey.encodingLength(key));\n if (!offset) offset = 0;\n const oldOffset = offset;\n const keydata = key.key;\n if (!_buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.isU8Arr(keydata)) {\n throw new Error(\"Key must be a Buffer\");\n }\n offset += 2 // Leave space for length\n ;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, key.flags, offset);\n offset += 2;\n buf[offset] = rdnskey.PROTOCOL_DNSSEC;\n offset += 1;\n buf[offset] = key.algorithm;\n offset += 1;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.copy(keydata, buf, offset, 0, keydata.length);\n offset += keydata.length;\n rdnskey.encode.bytes = offset - oldOffset;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, rdnskey.encode.bytes - 2, oldOffset);\n return buf;\n },\n decode (buf, offset) {\n if (!offset) offset = 0;\n const oldOffset = offset;\n const key = {};\n const length = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset);\n offset += 2;\n key.flags = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset);\n offset += 2;\n if (buf[offset] !== rdnskey.PROTOCOL_DNSSEC) {\n throw new Error(\"Protocol must be 3\");\n }\n offset += 1;\n key.algorithm = buf[offset];\n offset += 1;\n key.key = buf.slice(offset, oldOffset + length + 2);\n offset += key.key.length;\n rdnskey.decode.bytes = offset - oldOffset;\n return key;\n },\n encodingLength (key) {\n return 6 + _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.bytelength(key.key);\n }\n});\nrdnskey.PROTOCOL_DNSSEC = 3;\nrdnskey.ZONE_KEY = 0x80;\nrdnskey.SECURE_ENTRYPOINT = 0x8000;\nconst rrrsig = codec({\n encode (sig, buf, offset) {\n if (!buf) buf = new Uint8Array(rrrsig.encodingLength(sig));\n if (!offset) offset = 0;\n const oldOffset = offset;\n const signature = sig.signature;\n if (!_buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.isU8Arr(signature)) {\n throw new Error(\"Signature must be a Buffer\");\n }\n offset += 2 // Leave space for length\n ;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, _types_mjs__WEBPACK_IMPORTED_MODULE_1__.toType(sig.typeCovered), offset);\n offset += 2;\n buf[offset] = sig.algorithm;\n offset += 1;\n buf[offset] = sig.labels;\n offset += 1;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt32BE(buf, sig.originalTTL, offset);\n offset += 4;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt32BE(buf, sig.expiration, offset);\n offset += 4;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt32BE(buf, sig.inception, offset);\n offset += 4;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, sig.keyTag, offset);\n offset += 2;\n name.encode(sig.signersName, buf, offset);\n offset += name.encode.bytes;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.copy(signature, buf, offset, 0, signature.length);\n offset += signature.length;\n rrrsig.encode.bytes = offset - oldOffset;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, rrrsig.encode.bytes - 2, oldOffset);\n return buf;\n },\n decode (buf, offset) {\n if (!offset) offset = 0;\n const oldOffset = offset;\n const sig = {};\n const length = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset);\n offset += 2;\n sig.typeCovered = _types_mjs__WEBPACK_IMPORTED_MODULE_1__.toString(_buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset));\n offset += 2;\n sig.algorithm = buf[offset];\n offset += 1;\n sig.labels = buf[offset];\n offset += 1;\n sig.originalTTL = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt32BE(buf, offset);\n offset += 4;\n sig.expiration = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt32BE(buf, offset);\n offset += 4;\n sig.inception = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt32BE(buf, offset);\n offset += 4;\n sig.keyTag = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset);\n offset += 2;\n sig.signersName = name.decode(buf, offset);\n offset += name.decode.bytes;\n sig.signature = buf.slice(offset, oldOffset + length + 2);\n offset += sig.signature.length;\n rrrsig.decode.bytes = offset - oldOffset;\n return sig;\n },\n encodingLength (sig) {\n return 20 + name.encodingLength(sig.signersName) + _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.bytelength(sig.signature);\n }\n});\nconst rrp = codec({\n encode (data, buf, offset) {\n if (!buf) buf = new Uint8Array(rrp.encodingLength(data));\n if (!offset) offset = 0;\n const oldOffset = offset;\n offset += 2 // Leave space for length\n ;\n name.encode(data.mbox || \".\", buf, offset);\n offset += name.encode.bytes;\n name.encode(data.txt || \".\", buf, offset);\n offset += name.encode.bytes;\n rrp.encode.bytes = offset - oldOffset;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, rrp.encode.bytes - 2, oldOffset);\n return buf;\n },\n decode (buf, offset) {\n if (!offset) offset = 0;\n const oldOffset = offset;\n const data = {};\n offset += 2;\n data.mbox = name.decode(buf, offset) || \".\";\n offset += name.decode.bytes;\n data.txt = name.decode(buf, offset) || \".\";\n offset += name.decode.bytes;\n rrp.decode.bytes = offset - oldOffset;\n return data;\n },\n encodingLength (data) {\n return 2 + name.encodingLength(data.mbox || \".\") + name.encodingLength(data.txt || \".\");\n }\n});\nconst typebitmap = codec({\n encode (typelist, buf, offset) {\n if (!buf) buf = new Uint8Array(typebitmap.encodingLength(typelist));\n if (!offset) offset = 0;\n const oldOffset = offset;\n const typesByWindow = [];\n for(let i = 0; i < typelist.length; i++){\n const typeid = _types_mjs__WEBPACK_IMPORTED_MODULE_1__.toType(typelist[i]);\n if (typesByWindow[typeid >> 8] === undefined) {\n typesByWindow[typeid >> 8] = [];\n }\n typesByWindow[typeid >> 8][typeid >> 3 & 0x1F] |= 1 << 7 - (typeid & 0x7);\n }\n for(let i = 0; i < typesByWindow.length; i++){\n if (typesByWindow[i] !== undefined) {\n const windowBuf = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.from(typesByWindow[i]);\n buf[offset] = i;\n offset += 1;\n buf[offset] = windowBuf.length;\n offset += 1;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.copy(windowBuf, buf, offset, 0, windowBuf.length);\n offset += windowBuf.length;\n }\n }\n typebitmap.encode.bytes = offset - oldOffset;\n return buf;\n },\n decode (buf, offset, length) {\n if (!offset) offset = 0;\n const oldOffset = offset;\n const typelist = [];\n while(offset - oldOffset < length){\n const window = buf[offset];\n offset += 1;\n const windowLength = buf[offset];\n offset += 1;\n for(let i = 0; i < windowLength; i++){\n const b = buf[offset + i];\n for(let j = 0; j < 8; j++){\n if (b & 1 << 7 - j) {\n const typeid = _types_mjs__WEBPACK_IMPORTED_MODULE_1__.toString(window << 8 | i << 3 | j);\n typelist.push(typeid);\n }\n }\n }\n offset += windowLength;\n }\n typebitmap.decode.bytes = offset - oldOffset;\n return typelist;\n },\n encodingLength (typelist) {\n const extents = [];\n for(let i = 0; i < typelist.length; i++){\n const typeid = _types_mjs__WEBPACK_IMPORTED_MODULE_1__.toType(typelist[i]);\n extents[typeid >> 8] = Math.max(extents[typeid >> 8] || 0, typeid & 0xFF);\n }\n let len = 0;\n for(let i = 0; i < extents.length; i++){\n if (extents[i] !== undefined) {\n len += 2 + Math.ceil((extents[i] + 1) / 8);\n }\n }\n return len;\n }\n});\nconst rnsec = codec({\n encode (record, buf, offset) {\n if (!buf) buf = new Uint8Array(rnsec.encodingLength(record));\n if (!offset) offset = 0;\n const oldOffset = offset;\n offset += 2 // Leave space for length\n ;\n name.encode(record.nextDomain, buf, offset);\n offset += name.encode.bytes;\n typebitmap.encode(record.rrtypes, buf, offset);\n offset += typebitmap.encode.bytes;\n rnsec.encode.bytes = offset - oldOffset;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, rnsec.encode.bytes - 2, oldOffset);\n return buf;\n },\n decode (buf, offset) {\n if (!offset) offset = 0;\n const oldOffset = offset;\n const record = {};\n const length = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset);\n offset += 2;\n record.nextDomain = name.decode(buf, offset);\n offset += name.decode.bytes;\n record.rrtypes = typebitmap.decode(buf, offset, length - (offset - oldOffset));\n offset += typebitmap.decode.bytes;\n rnsec.decode.bytes = offset - oldOffset;\n return record;\n },\n encodingLength (record) {\n return 2 + name.encodingLength(record.nextDomain) + typebitmap.encodingLength(record.rrtypes);\n }\n});\nconst rnsec3 = codec({\n encode (record, buf, offset) {\n if (!buf) buf = new Uint8Array(rnsec3.encodingLength(record));\n if (!offset) offset = 0;\n const oldOffset = offset;\n const salt = record.salt;\n if (!_buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.isU8Arr(salt)) {\n throw new Error(\"salt must be a Buffer\");\n }\n const nextDomain = record.nextDomain;\n if (!_buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.isU8Arr(nextDomain)) {\n throw new Error(\"nextDomain must be a Buffer\");\n }\n offset += 2 // Leave space for length\n ;\n buf[offset] = record.algorithm;\n offset += 1;\n buf[offset] = record.flags;\n offset += 1;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, record.iterations, offset);\n offset += 2;\n buf[offset] = salt.length;\n offset += 1;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.copy(salt, buf, offset, 0, salt.length);\n offset += salt.length;\n buf[offset] = nextDomain.length;\n offset += 1;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.copy(nextDomain, buf, offset, 0, nextDomain.length);\n offset += nextDomain.length;\n typebitmap.encode(record.rrtypes, buf, offset);\n offset += typebitmap.encode.bytes;\n rnsec3.encode.bytes = offset - oldOffset;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, rnsec3.encode.bytes - 2, oldOffset);\n return buf;\n },\n decode (buf, offset) {\n if (!offset) offset = 0;\n const oldOffset = offset;\n const record = {};\n const length = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset);\n offset += 2;\n record.algorithm = buf[offset];\n offset += 1;\n record.flags = buf[offset];\n offset += 1;\n record.iterations = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset);\n offset += 2;\n const saltLength = buf[offset];\n offset += 1;\n record.salt = buf.slice(offset, offset + saltLength);\n offset += saltLength;\n const hashLength = buf[offset];\n offset += 1;\n record.nextDomain = buf.slice(offset, offset + hashLength);\n offset += hashLength;\n record.rrtypes = typebitmap.decode(buf, offset, length - (offset - oldOffset));\n offset += typebitmap.decode.bytes;\n rnsec3.decode.bytes = offset - oldOffset;\n return record;\n },\n encodingLength (record) {\n return 8 + record.salt.length + record.nextDomain.length + typebitmap.encodingLength(record.rrtypes);\n }\n});\nconst rds = codec({\n encode (digest, buf, offset) {\n if (!buf) buf = new Uint8Array(rds.encodingLength(digest));\n if (!offset) offset = 0;\n const oldOffset = offset;\n const digestdata = digest.digest;\n if (!_buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.isU8Arr(digestdata)) {\n throw new Error(\"Digest must be a Buffer\");\n }\n offset += 2 // Leave space for length\n ;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, digest.keyTag, offset);\n offset += 2;\n buf[offset] = digest.algorithm;\n offset += 1;\n buf[offset] = digest.digestType;\n offset += 1;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.copy(digestdata, buf, offset, 0, digestdata.length);\n offset += digestdata.length;\n rds.encode.bytes = offset - oldOffset;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, rds.encode.bytes - 2, oldOffset);\n return buf;\n },\n decode (buf, offset) {\n if (!offset) offset = 0;\n const oldOffset = offset;\n const digest = {};\n const length = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset);\n offset += 2;\n digest.keyTag = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset);\n offset += 2;\n digest.algorithm = buf[offset];\n offset += 1;\n digest.digestType = buf[offset];\n offset += 1;\n digest.digest = buf.slice(offset, oldOffset + length + 2);\n offset += digest.digest.length;\n rds.decode.bytes = offset - oldOffset;\n return digest;\n },\n encodingLength (digest) {\n return 6 + _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.bytelength(digest.digest);\n }\n});\nfunction renc(type) {\n switch(type.toUpperCase()){\n case \"A\":\n return ra;\n case \"PTR\":\n return rptr;\n case \"CNAME\":\n return rptr;\n case \"DNAME\":\n return rptr;\n case \"TXT\":\n return rtxt;\n case \"NULL\":\n return rnull;\n case \"AAAA\":\n return raaaa;\n case \"SRV\":\n return rsrv;\n case \"HINFO\":\n return rhinfo;\n case \"CAA\":\n return rcaa;\n case \"NS\":\n return rns;\n case \"SOA\":\n return rsoa;\n case \"MX\":\n return rmx;\n case \"OPT\":\n return ropt;\n case \"DNSKEY\":\n return rdnskey;\n case \"RRSIG\":\n return rrrsig;\n case \"RP\":\n return rrp;\n case \"NSEC\":\n return rnsec;\n case \"NSEC3\":\n return rnsec3;\n case \"DS\":\n return rds;\n }\n return runknown;\n}\nconst answer = codec({\n encode (a, buf, offset) {\n if (!buf) buf = new Uint8Array(answer.encodingLength(a));\n if (!offset) offset = 0;\n const oldOffset = offset;\n name.encode(a.name, buf, offset);\n offset += name.encode.bytes;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, _types_mjs__WEBPACK_IMPORTED_MODULE_1__.toType(a.type), offset);\n if (a.type.toUpperCase() === \"OPT\") {\n if (a.name !== \".\") {\n throw new Error(\"OPT name must be root.\");\n }\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, a.udpPayloadSize || 4096, offset + 2);\n buf[offset + 4] = a.extendedRcode || 0;\n buf[offset + 5] = a.ednsVersion || 0;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, a.flags || 0, offset + 6);\n offset += 8;\n ropt.encode(a.options || [], buf, offset);\n offset += ropt.encode.bytes;\n } else {\n let klass = _classes_mjs__WEBPACK_IMPORTED_MODULE_4__.toClass(a.class === undefined ? \"IN\" : a.class);\n if (a.flush) klass |= FLUSH_MASK // the 1st bit of the class is the flush bit\n ;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, klass, offset + 2);\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt32BE(buf, a.ttl || 0, offset + 4);\n offset += 8;\n const enc = renc(a.type);\n enc.encode(a.data, buf, offset);\n offset += enc.encode.bytes;\n }\n answer.encode.bytes = offset - oldOffset;\n return buf;\n },\n decode (buf, offset) {\n if (!offset) offset = 0;\n const a = {};\n const oldOffset = offset;\n a.name = name.decode(buf, offset);\n offset += name.decode.bytes;\n a.type = _types_mjs__WEBPACK_IMPORTED_MODULE_1__.toString(_buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset));\n if (a.type === \"OPT\") {\n a.udpPayloadSize = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset + 2);\n a.extendedRcode = buf[offset + 4];\n a.ednsVersion = buf[offset + 5];\n a.flags = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset + 6);\n a.flag_do = (a.flags >> 15 & 0x1) === 1;\n a.options = ropt.decode(buf, offset + 8);\n offset += 8 + ropt.decode.bytes;\n } else {\n const klass = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset + 2);\n a.ttl = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt32BE(buf, offset + 4);\n a.class = _classes_mjs__WEBPACK_IMPORTED_MODULE_4__.toString(klass & NOT_FLUSH_MASK);\n a.flush = !!(klass & FLUSH_MASK);\n const enc = renc(a.type);\n a.data = enc.decode(buf, offset + 8);\n offset += 8 + enc.decode.bytes;\n }\n answer.decode.bytes = offset - oldOffset;\n return a;\n },\n encodingLength (a) {\n const data = a.data !== null && a.data !== undefined ? a.data : a.options;\n return name.encodingLength(a.name) + 8 + renc(a.type).encodingLength(data);\n }\n});\nconst question = codec({\n encode (q, buf, offset) {\n if (!buf) buf = new Uint8Array(question.encodingLength(q));\n if (!offset) offset = 0;\n const oldOffset = offset;\n name.encode(q.name, buf, offset);\n offset += name.encode.bytes;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, _types_mjs__WEBPACK_IMPORTED_MODULE_1__.toType(q.type), offset);\n offset += 2;\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(buf, _classes_mjs__WEBPACK_IMPORTED_MODULE_4__.toClass(q.class === undefined ? \"IN\" : q.class), offset);\n offset += 2;\n question.encode.bytes = offset - oldOffset;\n return q;\n },\n decode (buf, offset) {\n if (!offset) offset = 0;\n const oldOffset = offset;\n const q = {};\n q.name = name.decode(buf, offset);\n offset += name.decode.bytes;\n q.type = _types_mjs__WEBPACK_IMPORTED_MODULE_1__.toString(_buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset));\n offset += 2;\n q.class = _classes_mjs__WEBPACK_IMPORTED_MODULE_4__.toString(_buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(buf, offset));\n offset += 2;\n const qu = !!(q.class & QU_MASK);\n if (qu) q.class &= NOT_QU_MASK;\n question.decode.bytes = offset - oldOffset;\n return q;\n },\n encodingLength (q) {\n return name.encodingLength(q.name) + 4;\n }\n});\n\nconst AUTHORITATIVE_ANSWER = 1 << 10;\nconst TRUNCATED_RESPONSE = 1 << 9;\nconst RECURSION_DESIRED = 1 << 8;\nconst RECURSION_AVAILABLE = 1 << 7;\nconst AUTHENTIC_DATA = 1 << 5;\nconst CHECKING_DISABLED = 1 << 4;\nconst DNSSEC_OK = 1 << 15;\nconst packet = {\n encode: function(result, buf, offset) {\n const allocing = !buf;\n if (allocing) buf = new Uint8Array(encodingLength(result));\n if (!offset) offset = 0;\n const oldOffset = offset;\n if (!result.questions) result.questions = [];\n if (!result.answers) result.answers = [];\n if (!result.authorities) result.authorities = [];\n if (!result.additionals) result.additionals = [];\n header.encode(result, buf, offset);\n offset += header.encode.bytes;\n offset = encodeList(result.questions, question, buf, offset);\n offset = encodeList(result.answers, answer, buf, offset);\n offset = encodeList(result.authorities, answer, buf, offset);\n offset = encodeList(result.additionals, answer, buf, offset);\n packet.encode.bytes = offset - oldOffset;\n // just a quick sanity check\n if (allocing && encode.bytes !== buf.length) {\n return buf.slice(0, encode.bytes);\n }\n return buf;\n },\n decode: function(buf, offset) {\n if (!offset) offset = 0;\n const oldOffset = offset;\n const result = header.decode(buf, offset);\n offset += header.decode.bytes;\n offset = decodeList(result.questions, question, buf, offset);\n offset = decodeList(result.answers, answer, buf, offset);\n offset = decodeList(result.authorities, answer, buf, offset);\n offset = decodeList(result.additionals, answer, buf, offset);\n packet.decode.bytes = offset - oldOffset;\n return result;\n },\n encodingLength: function(result) {\n return header.encodingLength(result) + encodingLengthList(result.questions || [], question) + encodingLengthList(result.answers || [], answer) + encodingLengthList(result.authorities || [], answer) + encodingLengthList(result.additionals || [], answer);\n }\n};\npacket.encode.bytes = 0;\npacket.decode.bytes = 0;\nfunction sanitizeSingle(input, type) {\n if (input.questions) {\n throw new Error(\"Only one .question object expected instead of a .questions array!\");\n }\n const sanitized = Object.assign({\n type\n }, input);\n if (sanitized.question) {\n sanitized.questions = [\n sanitized.question\n ];\n delete sanitized.question;\n }\n return sanitized;\n}\nconst query = {\n encode: function(result, buf, offset) {\n buf = packet.encode(sanitizeSingle(result, \"query\"), buf, offset);\n query.encode.bytes = packet.encode.bytes;\n return buf;\n },\n decode: function(buf, offset) {\n const res = packet.decode(buf, offset);\n query.decode.bytes = packet.decode.bytes;\n if (res.questions) {\n res.question = res.questions[0];\n delete res.questions;\n }\n return res;\n },\n encodingLength: function(result) {\n return packet.encodingLength(sanitizeSingle(result, \"query\"));\n }\n};\nquery.encode.bytes = 0;\nquery.decode.bytes = 0;\nconst response = {\n encode: function(result, buf, offset) {\n buf = packet.encode(sanitizeSingle(result, \"response\"), buf, offset);\n response.encode.bytes = packet.encode.bytes;\n return buf;\n },\n decode: function(buf, offset) {\n const res = packet.decode(buf, offset);\n response.decode.bytes = packet.decode.bytes;\n if (res.questions) {\n res.question = res.questions[0];\n delete res.questions;\n }\n return res;\n },\n encodingLength: function(result) {\n return packet.encodingLength(sanitizeSingle(result, \"response\"));\n }\n};\nresponse.encode.bytes = 0;\nresponse.decode.bytes = 0;\nconst encode = packet.encode;\nconst decode = packet.decode;\nconst encodingLength = packet.encodingLength;\nfunction streamEncode(result) {\n const buf = encode(result);\n const combine = new Uint8Array(2 + buf.byteLength);\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.writeUInt16BE(combine, buf.byteLength);\n _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.copy(buf, combine, 2, 0, buf.length);\n streamEncode.bytes = combine.byteLength;\n return combine;\n}\nstreamEncode.bytes = 0;\nfunction streamDecode(sbuf) {\n const len = _buffer_utils_mjs__WEBPACK_IMPORTED_MODULE_6__.readUInt16BE(sbuf, 0);\n if (sbuf.byteLength < len + 2) {\n // not enough data\n return null;\n }\n const result = decode(sbuf.slice(2));\n streamDecode.bytes = decode.bytes;\n return result;\n}\nstreamDecode.bytes = 0;\nfunction encodingLengthList(list, enc) {\n let len = 0;\n for(let i = 0; i < list.length; i++)len += enc.encodingLength(list[i]);\n return len;\n}\nfunction encodeList(list, enc, buf, offset) {\n for(let i = 0; i < list.length; i++){\n enc.encode(list[i], buf, offset);\n offset += enc.encode.bytes;\n }\n return offset;\n}\nfunction decodeList(list, enc, buf, offset) {\n for(let i = 0; i < list.length; i++){\n list[i] = enc.decode(buf, offset);\n offset += enc.decode.bytes;\n }\n return offset;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQGxlaWNodGdld2ljaHQvZG5zLXBhY2tldC9pbmRleC5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUE2QztBQUNUO0FBQ0U7QUFDRTtBQUNBO0FBQ1E7QUFDVDtBQUNNO0FBRTdDLE1BQU1TLGFBQWE7QUFDbkIsTUFBTUMsZ0JBQWdCLEtBQUs7QUFDM0IsTUFBTUMsYUFBYSxLQUFLO0FBQ3hCLE1BQU1DLGlCQUFpQixDQUFDRDtBQUN4QixNQUFNRSxVQUFVLEtBQUs7QUFDckIsTUFBTUMsY0FBYyxDQUFDRDtBQUVyQixTQUFTRSxNQUFPLEVBQUVDLFFBQVEsQ0FBQyxFQUFFQyxNQUFNLEVBQUVWLE1BQU0sRUFBRVcsY0FBYyxFQUFFO0lBQzNERCxPQUFPRCxLQUFLLEdBQUdBO0lBQ2ZULE9BQU9TLEtBQUssR0FBR0E7SUFDZixPQUFPO1FBQ0xDO1FBQ0FWO1FBQ0FXLGdCQUFnQkEsa0JBQW1CLEtBQU1GLEtBQUk7SUFDL0M7QUFDRjtBQUVPLE1BQU1HLE9BQU9KLE1BQU07SUFDeEJFLFFBQVFHLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxNQUFNO1FBQ3RCLElBQUksQ0FBQ0QsS0FBS0EsTUFBTSxJQUFJRSxXQUFXSixLQUFLRCxjQUFjLENBQUNFO1FBQ25ELElBQUksQ0FBQ0UsUUFBUUEsU0FBUztRQUN0QixNQUFNRSxZQUFZRjtRQUVsQiwrQkFBK0I7UUFDL0IsTUFBTUcsSUFBSUwsSUFBSU0sT0FBTyxDQUFDLGFBQWE7UUFDbkMsSUFBSUQsRUFBRUUsTUFBTSxFQUFFO1lBQ1osTUFBTUMsT0FBT0gsRUFBRUksS0FBSyxDQUFDO1lBRXJCLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJRixLQUFLRCxNQUFNLEVBQUVHLElBQUs7Z0JBQ3BDLE1BQU1DLE1BQU16QixvREFBTyxDQUFDZSxLQUFLTyxJQUFJLENBQUNFLEVBQUUsRUFBRVIsU0FB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U3lILG1CQUFvQjdHLElBQUksRUFBRXlLLEdBQUc7SUFDM0MsSUFBSXRLLE1BQU07SUFDVixJQUFLLElBQUlELElBQUksR0FBR0EsSUFBSUYsS0FBS0QsTUFBTSxFQUFFRyxJQUFLQyxPQUFPc0ssSUFBSW5MLGNBQWMsQ0FBQ1UsSUFBSSxDQUFDRSxFQUFFO0lBQ3ZFLE9BQU9DO0FBQ1Q7QUFFTyxTQUFTMkcsV0FBWTlHLElBQUksRUFBRXlLLEdBQUcsRUFBRWhMLEdBQUcsRUFBRUMsTUFBTTtJQUNoRCxJQUFLLElBQUlRLElBQUksR0FBR0EsSUFBSUYsS0FBS0QsTUFBTSxFQUFFRyxJQUFLO1FBQ3BDdUssSUFBSXBMLE1BQU0sQ0FBQ1csSUFBSSxDQUFDRSxFQUFFLEVBQUVULEtBQUtDO1FBQ3pCQSxVQUFVK0ssSUFBSXBMLE1BQU0sQ0FBQ0QsS0FBSztJQUM1QjtJQUNBLE9BQU9NO0FBQ1Q7QUFFTyxTQUFTaU4sV0FBWTNNLElBQUksRUFBRXlLLEdBQUcsRUFBRWhMLEdBQUcsRUFBRUMsTUFBTTtJQUNoRCxJQUFLLElBQUlRLElBQUksR0FBR0EsSUFBSUYsS0FBS0QsTUFBTSxFQUFFRyxJQUFLO1FBQ3BDRixJQUFJLENBQUNFLEVBQUUsR0FBR3VLLElBQUk5TCxNQUFNLENBQUNjLEtBQUtDO1FBQzFCQSxVQUFVK0ssSUFBSTlMLE1BQU0sQ0FBQ1MsS0FBSztJQUM1QjtJQUNBLE9BQU9NO0FBQ1QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9mbHVzaC1ub3Rlcy8uL25vZGVfbW9kdWxlcy9AbGVpY2h0Z2V3aWNodC9kbnMtcGFja2V0L2luZGV4Lm1qcz83YTBiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGlwIGZyb20gJ0BsZWljaHRnZXdpY2h0L2lwLWNvZGVjJ1xuaW1wb3J0ICogYXMgdHlwZXMgZnJvbSAnLi90eXBlcy5tanMnXG5pbXBvcnQgKiBhcyByY29kZXMgZnJvbSAnLi9yY29kZXMubWpzJ1xuaW1wb3J0ICogYXMgb3Bjb2RlcyBmcm9tICcuL29wY29kZXMubWpzJ1xuaW1wb3J0ICogYXMgY2xhc3NlcyBmcm9tICcuL2NsYXNzZXMubWpzJ1xuaW1wb3J0ICogYXMgb3B0aW9uY29kZXMgZnJvbSAnLi9vcHRpb25jb2Rlcy5tanMnXG5pbXBvcnQgKiBhcyBiIGZyb20gJy4vYnVmZmVyX3V0aWxzLm1qcydcbmltcG9ydCB7IGRlY29kZSBhcyB0b1V0ZjggfSBmcm9tICd1dGY4LWNvZGVjJ1xuXG5jb25zdCBRVUVSWV9GTEFHID0gMFxuY29uc3QgUkVTUE9OU0VfRkxBRyA9IDEgPDwgMTVcbmNvbnN0IEZMVVNIX01BU0sgPSAxIDw8IDE1XG5jb25zdCBOT1RfRkxVU0hfTUFTSyA9IH5GTFVTSF9NQVNLXG5jb25zdCBRVV9NQVNLID0gMSA8PCAxNVxuY29uc3QgTk9UX1FVX01BU0sgPSB+UVVfTUFTS1xuXG5mdW5jdGlvbiBjb2RlYyAoeyBieXRlcyA9IDAsIGVuY29kZSwgZGVjb2RlLCBlbmNvZGluZ0xlbmd0aCB9KSB7XG4gIGVuY29kZS5ieXRlcyA9IGJ5dGVzXG4gIGRlY29kZS5ieXRlcyA9IGJ5dGVzXG4gIHJldHVybiB7XG4gICAgZW5jb2RlLFxuICAgIGRlY29kZSxcbiAgICBlbmNvZGluZ0xlbmd0aDogZW5jb2RpbmdMZW5ndGggfHwgKCgpID0+IGJ5dGVzKVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBuYW1lID0gY29kZWMoe1xuICBlbmNvZGUgKHN0ciwgYnVmLCBvZmZzZXQpIHtcbiAgICBpZiAoIWJ1ZikgYnVmID0gbmV3IFVpbnQ4QXJyYXkobmFtZS5lbmNvZGluZ0xlbmd0aChzdHIpKVxuICAgIGlmICghb2Zmc2V0KSBvZmZzZXQgPSAwXG4gICAgY29uc3Qgb2xkT2Zmc2V0ID0gb2Zmc2V0XG5cbiAgICAvLyBzdHJpcCBsZWFkaW5nIGFuZCB0cmFpbGluZyAuXG4gICAgY29uc3QgbiA9IHN0ci5yZXBsYWNlKC9eXFwufFxcLiQvZ20sICcnKVxuICAgIGlmIChuLmxlbmd0aCkge1xuICAgICAgY29uc3QgbGlzdCA9IG4uc3BsaXQoJy4nKVxuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgbGVuID0gYi53cml0ZShidWYsIGxpc3RbaV0sIG9mZnNldCArIDEpXG4gICAgICAgIGJ1ZltvZmZzZXRdID0gbGVuXG4gICAgICAgIG9mZnNldCArPSBsZW4gKyAxXG4gICAgICB9XG4gICAgfVxuXG4gICAgYnVmW29mZnNldCsrXSA9IDBcblxuICAgIG5hbWUuZW5jb2RlLmJ5dGVzID0gb2Zmc2V0IC0gb2xkT2Zmc2V0XG4gICAgcmV0dXJuIGJ1ZlxuICB9LFxuICBkZWNvZGUgKGJ1Ziwgb2Zmc2V0KSB7XG4gICAgaWYgKCFvZmZzZXQpIG9mZnNldCA9IDBcblxuICAgIGNvbnN0IGxpc3QgPSBbXVxuICAgIGxldCBvbGRPZmZzZXQgPSBvZmZzZXRcbiAgICBsZXQgdG90YWxMZW5ndGggPSAwXG4gICAgbGV0IGNvbnN1bWVkQnl0ZXMgPSAwXG4gICAgbGV0IGp1bXBlZCA9IGZhbHNlXG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKG9mZnNldCA+PSBidWYubGVuZ3RoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGRlY29kZSBuYW1lIChidWZmZXIgb3ZlcmZsb3cpJylcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxlbiA9IGJ1ZltvZmZzZXQrK11cbiAgICAgIGNvbnN1bWVkQnl0ZXMgKz0ganVtcGVkID8gMCA6IDFcblxuICAgICAgaWYgKGxlbiA9PT0gMCkge1xuICAgICAgICBicmVha1xuICAgICAgfSBlbHNlIGlmICgobGVuICYgMHhjMCkgPT09IDApIHtcbiAgICAgICAgaWYgKG9mZnNldCArIGxlbiA+IGJ1Zi5sZW5ndGgpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZWNvZGUgbmFtZSAoYnVmZmVyIG92ZXJmbG93KScpXG4gICAgICAgIH1cbiAgICAgICAgdG90YWxMZW5ndGggKz0gbGVuICsgMVxuICAgICAgICBpZiAodG90YWxMZW5ndGggPiAyNTQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZWNvZGUgbmFtZSAobmFtZSB0b28gbG9uZyknKVxuICAgICAgICB9XG4gICAgICAgIGxpc3QucHVzaCh0b1V0ZjgoYnVmLCBvZmZzZXQsIG9mZnNldCArIGxlbikpXG4gICAgICAgIG9mZnNldCArPSBsZW5cbiAgICAgICAgY29uc3VtZWRCeXRlcyArPSBqdW1wZWQgPyAwIDogbGVuXG4gICAgICB9IGVsc2UgaWYgKChsZW4gJiAweGMwKSA9PT0gMHhjMCkge1xuICAgICAgICBpZiAob2Zmc2V0ICsgMSA+IGJ1Zi5sZW5ndGgpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZWNvZGUgbmFtZSAoYnVmZmVyIG92ZXJmbG93KScpXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QganVtcE9mZnNldCA9IGIucmVhZFVJbnQxNkJFKGJ1Ziwgb2Zmc2V0IC0gMSkgLSAweGMwMDBcbiAgICAgICAgaWYgKGp1bXBPZmZzZXQgPj0gb2xkT2Zmc2V0KSB7XG4gICAgICAgICAgLy8gQWxsb3cgb25seSBwb2ludGVycyB0byBwcmlvciBkYXRhLiBSRkMgMTAzNSwgc2VjdGlvbiA0LjEuNCBzdGF0ZXM6XG4gICAgICAgICAgLy8gXCJbLi4uXSBhbiBlbnRpcmUgZG9tYWluIG5hbWUgb3IgYSBsaXN0IG9mIGxhYmVscyBhdCB0aGUgZW5kIG9mIGEgZG9tYWluIG5hbWVcbiAgICAgICAgICAvLyBpcyByZXBsYWNlZCB3aXRoIGEgcG9pbnRlciB0byBhIHByaW9yIG9jY3VyYW5jZSAoc2ljKSBvZiB0aGUgc2FtZSBuYW1lLlwiXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZGVjb2RlIG5hbWUgKGJhZCBwb2ludGVyKScpXG4gICAgICAgIH1cbiAgICAgICAgb2Zmc2V0ID0ganVtcE9mZnNldFxuICAgICAgICBvbGRPZmZzZXQgPSBqdW1wT2Zmc2V0XG4gICAgICAgIGNvbnN1bWVkQnl0ZXMgKz0ganVtcGVkID8gMCA6IDFcbiAgICAgICAganVtcGVkID0gdHJ1ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZGVjb2RlIG5hbWUgKGJhZCBsYWJlbCknKVxuICAgICAgfVxuICAgIH1cblxuICAgIG5hbWUuZGVjb2RlLmJ5dGVzID0gY29uc3VtZWRCeXRlc1xuICAgIHJldHVybiBsaXN0Lmxlbmd0aCA9PT0gMCA/ICcuJyA6IGxpc3Quam9pbignLicpXG4gIH0sXG4gIGVuY29kaW5nTGVuZ3RoIChuKSB7XG4gICAgaWYgKG4gPT09ICcuJyB8fCBuID09PSAnLi4nKSByZXR1cm4gMVxuICAgIHJldHVybiBiLmJ5dGVsZW5ndGgobi5yZXBsYWNlKC9eXFwufFxcLiQvZ20sICcnKSkgKyAyXG4gIH1cbn0pXG5cbmNvbnN0IHN0cmluZyA9IGNvZGVjKHtcbiAgZW5jb2RlIChzLCBidWYsIG9mZnNldCkge1xuICAgIGlmICghYnVmKSBidWYgPSBuZXcgVWludDhBcnJheShzdHJpbmcuZW5jb2RpbmdMZW5ndGgocykpXG4gICAgaWYgKCFvZmZzZXQpIG9mZnNldCA9IDBcblxuICAgIGNvbnN0IGxlbiA9IGIud3JpdGUoYnVmLCBzLCBvZmZzZXQgKyAxKVxuICAgIGJ1ZltvZmZzZXRdID0gbGVuXG4gICAgc3RyaW5nLmVuY29kZS5ieXRlcyA9IGxlbiArIDFcbiAgICByZXR1cm4gYnVmXG4gIH0sXG4gIGRlY29kZSAoYnVmLCBvZmZzZXQpIHtcbiAgICBpZiAoIW9mZnNldCkgb2Zmc2V0ID0gMFxuXG4gICAgY29uc3QgbGVuID0gYnVmW29mZnNldF1cbiAgICBjb25zdCBzID0gdG9VdGY4KGJ1Ziwgb2Zmc2V0ICsgMSwgb2Zmc2V0ICsgMSArIGxlbilcbiAgICBzdHJpbmcuZGVjb2RlLmJ5dGVzID0gbGVuICsgMVxuICAgIHJldHVybiBzXG4gIH0sXG4gIGVuY29kaW5nTGVuZ3RoIChzKSB7XG4gICAgcmV0dXJuIGIuYnl0ZWxlbmd0aChzKSArIDFcbiAgfVxufSlcblxuY29uc3QgaGVhZGVyID0gY29kZWMoe1xuICBieXRlczogMTIsXG4gIGVuY29kZSAoaCwgYnVmLCBvZmZzZXQpIHtcbiAgICBpZiAoIWJ1ZikgYnVmID0gbmV3IFVpbnQ4QXJyYXkoaGVhZGVyLmVuY29kaW5nTGVuZ3RoKGgpKVxuICAgIGlmICghb2Zmc2V0KSBvZmZzZXQgPSAwXG5cbiAgICBjb25zdCBmbGFncyA9IChoLmZsYWdzIHx8IDApICYgMzI3NjdcbiAgICBjb25zdCB0eXBlID0gaC50eXBlID09PSAncmVzcG9uc2UnID8gUkVTUE9OU0VfRkxBRyA6IFFVRVJZX0ZMQUdcblxuICAgIGIud3JpdGVVSW50MTZCRShidWYsIGguaWQgfHwgMCwgb2Zmc2V0KVxuICAgIGIud3JpdGVVSW50MTZCRShidWYsIGZsYWdzIHwgdHlwZSwgb2Zmc2V0ICsgMilcbiAgICBiLndyaXRlVUludDE2QkUoYnVmLCBoLnF1ZXN0aW9ucy5sZW5ndGgsIG9mZnNldCArIDQpXG4gICAgYi53cml0ZVVJbnQxNkJFKGJ1ZiwgaC5hbnN3ZXJzLmxlbmd0aCwgb2Zmc2V0ICsgNilcbiAgICBiLndyaXRlVUludDE2QkUoYnVmLCBoLmF1dGhvcml0aWVzLmxlbmd0aCwgb2Zmc2V0ICsgOClcbiAgICBiLndyaXRlVUludDE2QkUoYnVmLCBoLmFkZGl0aW9uYWxzLmxlbmd0aCwgb2Zmc2V0ICsgMTApXG5cbiAgICByZXR1cm4gYnVmXG4gIH0sXG4gIGRlY29kZSAoYnVmLCBvZmZzZXQpIHtcbiAgICBpZiAoIW9mZnNldCkgb2Zmc2V0ID0gMFxuICAgIGlmIChidWYubGVuZ3RoIDwgMTIpIHRocm93IG5ldyBFcnJvcignSGVhZGVyIG11c3QgYmUgMTIgYnl0ZXMnKVxuICAgIGNvbnN0IGZsYWdzID0gYi5yZWFkVUludDE2QkUoYnVmLCBvZmZzZXQgKyAyKVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBiLnJlYWRVSW50MTZCRShidWYsIG9mZnNldCksXG4gICAgICB0eXBlOiBmbGFncyAmIFJFU1BPTlNFX0ZMQUcgPyAncmVzcG9uc2UnIDogJ3F1ZXJ5JyxcbiAgICAgIGZsYWdzOiBmbGFncyAmIDMyNzY3LFxuICAgICAgZmxhZ19xcjogKChmbGFncyA+PiAxNSkgJiAweDEpID09PSAxLFxuICAgICAgb3Bjb2RlOiBvcGNvZGVzLnRvU3RyaW5nKChmbGFncyA+PiAxMSkgJiAweGYpLFxuICAgICAgZmxhZ19hYTogKChmbGFncyA+PiAxMCkgJiAweDEpID09PSAxLFxuICAgICAgZmxhZ190YzogKChmbGFncyA+PiA5KSAmIDB4MSkgPT09IDEsXG4gICAgICBmbGFnX3JkOiAoKGZsYWdzID4+IDgpICYgMHgxKSA9PT0gMSxcbiAgICAgIGZsYWdfcmE6ICgoZmxhZ3MgPj4gNykgJiAweDEpID09PSAxLFxuICAgICAgZmxhZ196OiAoKGZsYWdzID4+IDYpICYgMHgxKSA9PT0gMSxcbiAgICAgIGZsYWdfYWQ6ICgoZmxhZ3MgPj4gNSkgJiAweDEpID09PSAxLFxuICAgICAgZmxhZ19jZDogKChmbGFncyA+PiA0KSAmIDB4MSkgPT09IDEsXG4gICAgICByY29kZTogcmNvZGVzLnRvU3RyaW5nKGZsYWdzICYgMHhmKSxcbiAgICAgIHF1ZXN0aW9uczogbmV3IEFycmF5KGIucmVhZFVJbnQxNkJFKGJ1Ziwgb2Zmc2V0ICsgNCkpLFxuICAgICAgYW5zd2VyczogbmV3IEFycmF5KGIucmVhZFVJbnQxNkJFKGJ1Ziwgb2Zmc2V0ICsgNikpLFxuICAgICAgYXV0aG9yaXRpZXM6IG5ldyBBcnJheShiLnJlYWRVSW50MTZCRShidWYsIG9mZnNldCArIDgpKSxcbiAgICAgIGFkZGl0aW9uYWxzOiBuZXcgQXJyYXkoYi5yZWFkVUludDE2QkUoYnVmLCBvZmZzZXQgKyAxMCkpXG4gICAgfVxuICB9LFxuICBlbmNvZGluZ0xlbmd0aCAoKSB7XG4gICAgcmV0dXJuIDEyXG4gIH1cbn0pXG5cbmNvbnN0IHJ1bmtub3duID0gY29kZWMoe1xuICBlbmNvZGUgKGRhdGEsIGJ1Ziwgb2Zmc2V0KSB7XG4gICAgaWYgKCFidWYpIGJ1ZiA9IG5ldyBVaW50OEFycmF5KHJ1bmtub3duLmVuY29kaW5nTGVuZ3RoKGRhdGEpKVxuICAgIGlmICghb2Zmc2V0KSBvZmZzZXQgPSAwXG5cbiAgICBjb25zdCBkTGVuID0gZGF0YS5sZW5ndGhcbiAgICBiLndyaXRlVUludDE2QkUoYnVmLCBkTGVuLCBvZmZzZXQpXG4gICAgYi5jb3B5KGRhdGEsIGJ1Ziwgb2Zmc2V0ICsgMiwgMCwgZExlbilcblxuICAgIHJ1bmtub3duLmVuY29kZS5ieXRlcyA9IGRMZW4gKyAyXG4gICAgcmV0dXJuIGJ1ZlxuICB9LFxuICBkZWNvZGUgKGJ1Ziwgb2Zmc2V0KSB7XG4gICAgaWYgKCFvZmZzZXQpIG9mZnNldCA9IDBcblxuICAgIGNvbnN0IGxlbiA9IGIucmVhZFVJbnQxNkJFKGJ1Ziwgb2Zmc2V0KVxuICAgIGNvbnN0IGRhdGEgPSBidWYuc2xpY2Uob2Zmc2V0ICsgMiwgb2Zmc2V0ICsgMiArIGxlbilcbiAgICBydW5rbm93bi5kZWNvZGUuYnl0ZXMgPSBsZW4gKyAyXG4gICAgcmV0dXJuIGRhdGFcbiAgfSxcbiAgZW5jb2RpbmdMZW5ndGggKGRhdGEpIHtcbiAgICByZXR1cm4gZGF0YS5sZW5ndGggKyAyXG4gIH1cbn0pXG5cbmNvbnN0IHJucyA9IGNvZGVjKHtcbiAgZW5jb2RlIChkYXRhLCBidWYsIG9mZnNldCkge1xuICAgIGlmICghYnVmKSBidWYgPSBuZXcgVWludDhBcnJheShybnMuZW5jb2RpbmdMZW5ndGgoZGF0YSkpXG4gICAgaWYgKCFvZmZzZXQpIG9mZnNldCA9IDBcblxuICAgIG5hbWUuZW5jb2RlKGRhdGEsIGJ1Ziwgb2Zmc2V0ICsgMilcbiAgICBiLndyaXRlVUludDE2QkUoYnVmLCBuYW1lLmVuY29kZS5ieXRlcywgb2Zmc2V0KVxuICAgIHJucy5lbmNvZGUuYnl0ZXMgPSBuYW1lLmVuY29kZS5ieXRlcyArIDJcbiAgICByZXR1cm4gYnVmXG4gIH0sXG4gIGRlY29kZSAoYnVmLCBvZmZzZXQpIHtcbiAgICBpZiAoIW9mZnNldCkgb2Zmc2V0ID0gMFxuXG4gICAgY29uc3QgbGVuID0gYi5yZWFkVUludDE2QkUoYnVmLCBvZmZzZXQpXG4gICAgY29uc3QgZGQgPSBuYW1lLmRlY29kZShidWYsIG9mZnNldCArIDIpXG5cbiAgICBybnMuZGVjb2RlLmJ5dGVzID0gbGVuICsgMlxuICAgIHJldHVybiBkZFxuICB9LFxuICBlbmNvZGluZ0xlbmd0aCAoZGF0YSkge1xuICAgIHJldHVybiBuYW1lLmVuY29kaW5nTGVuZ3RoKGRhdGEpICsgMlxuICB9XG59KVxuXG5jb25zdCByc29hID0gY29kZWMoe1xuICBlbmNvZGUgKGRhdGEsIGJ1Ziwgb2Zmc2V0KSB7XG4gICAgaWYgKCFidWYpIGJ1ZiA9IG5ldyBVaW50OEFycmF5KHJzb2EuZW5jb2RpbmdMZW5ndGgoZGF0YSkpXG4gICAgaWYgKCFvZmZzZXQpIG9mZnNldCA9IDBcblxuICAgIGNvbnN0IG9sZE9mZnNldCA9IG9mZnNldFxuICAgIG9mZnNldCArPSAyXG4gICAgbmFtZS5lbmNvZGUoZGF0YS5tbmFtZSwgYnVmLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IG5hbWUuZW5jb2RlLmJ5dGVzXG4gICAgbmFtZS5lbmNvZGUoZGF0YS5ybmFtZSwgYnVmLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IG5hbWUuZW5jb2RlLmJ5dGVzXG4gICAgYi53cml0ZVVJbnQzMkJFKGJ1ZiwgZGF0YS5zZXJpYWwgfHwgMCwgb2Zmc2V0KVxuICAgIG9mZnNldCArPSA0XG4gICAgYi53cml0ZVVJbnQzMkJFKGJ1ZiwgZGF0YS5yZWZyZXNoIHx8IDAsIG9mZnNldClcbiAgICBvZmZzZXQgKz0gNFxuICAgIGIud3JpdGVVSW50MzJCRShidWYsIGRhdGEucmV0cnkgfHwgMCwgb2Zmc2V0KVxuICAgIG9mZnNldCArPSA0XG4gICAgYi53cml0ZVVJbnQzMkJFKGJ1ZiwgZGF0YS5leHBpcmUgfHwgMCwgb2Zmc2V0KVxuICAgIG9mZnNldCArPSA0XG4gICAgYi53cml0ZVVJbnQzMkJFKGJ1ZiwgZGF0YS5taW5pbXVtIHx8IDAsIG9mZnNldClcbiAgICBvZmZzZXQgKz0gNFxuXG4gICAgYi53cml0ZVVJbnQxNkJFKGJ1Ziwgb2Zmc2V0IC0gb2xkT2Zmc2V0IC0gMiwgb2xkT2Zmc2V0KVxuICAgIHJzb2EuZW5jb2RlLmJ5dGVzID0gb2Zmc2V0IC0gb2xkT2Zmc2V0XG4gICAgcmV0dXJuIGJ1ZlxuICB9LFxuICBkZWNvZGUgKGJ1Ziwgb2Zmc2V0KSB7XG4gICAgaWYgKCFvZmZzZXQpIG9mZnNldCA9IDBcblxuICAgIGNvbnN0IG9sZE9mZnNldCA9IG9mZnNldFxuXG4gICAgY29uc3QgZGF0YSA9IHt9XG4gICAgb2Zmc2V0ICs9IDJcbiAgICBkYXRhLm1uYW1lID0gbmFtZS5kZWNvZGUoYnVmLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IG5hbWUuZGVjb2RlLmJ5dGVzXG4gICAgZGF0YS5ybmFtZSA9IG5hbWUuZGVjb2RlKGJ1Ziwgb2Zmc2V0KVxuICAgIG9mZnNldCArPSBuYW1lLmRlY29kZS5ieXRlc1xuICAgIGRhdGEuc2VyaWFsID0gYi5yZWFkVUludDMyQkUoYnVmLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IDRcbiAgICBkYXRhLnJlZnJlc2ggPSBiLnJlYWRVSW50MzJCRShidWYsIG9mZnNldClcbiAgICBvZmZzZXQgKz0gNFxuICAgIGRhdGEucmV0cnkgPSBiLnJlYWRVSW50MzJCRShidWYsIG9mZnNldClcbiAgICBvZmZzZXQgKz0gNFxuICAgIGRhdGEuZXhwaXJlID0gYi5yZWFkVUludDMyQkUoYnVmLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IDRcbiAgICBkYXRhLm1pbmltdW0gPSBiLnJlYWRVSW50MzJCRShidWYsIG9mZnNldClcbiAgICBvZmZzZXQgKz0gNFxuXG4gICAgcnNvYS5kZWNvZGUuYnl0ZXMgPSBvZmZzZXQgLSBvbGRPZmZzZXRcbiAgICByZXR1cm4gZGF0YVxuICB9LFxuICBlbmNvZGluZ0xlbmd0aCAoZGF0YSkge1xuICAgIHJldHVybiAyMiArIG5hbWUuZW5jb2RpbmdMZW5ndGgoZGF0YS5tbmFtZSkgKyBuYW1lLmVuY29kaW5nTGVuZ3RoKGRhdGEucm5hbWUpXG4gIH1cbn0pXG5cbmNvbnN0IHJ0eHQgPSBjb2RlYyh7XG4gIGVuY29kZSAoZGF0YSwgYnVmLCBvZmZzZXQpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YSkpIGRhdGEgPSBbZGF0YV1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0eXBlb2YgZGF0YVtpXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgZGF0YVtpXSA9IGIuZnJvbShkYXRhW2ldKVxuICAgICAgfVxuICAgICAgaWYgKCFiLmlzVThBcnIoZGF0YVtpXSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNdXN0IGJlIGEgQnVmZmVyJylcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWJ1ZikgYnVmID0gbmV3IFVpbnQ4QXJyYXkocnR4dC5lbmNvZGluZ0xlbmd0aChkYXRhKSlcbiAgICBpZiAoIW9mZnNldCkgb2Zmc2V0ID0gMFxuXG4gICAgY29uc3Qgb2xkT2Zmc2V0ID0gb2Zmc2V0XG4gICAgb2Zmc2V0ICs9IDJcblxuICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAoZCkge1xuICAgICAgYnVmW29mZnNldCsrXSA9IGQubGVuZ3RoXG4gICAgICBiLmNvcHkoZCwgYnVmLCBvZmZzZXQsIDAsIGQubGVuZ3RoKVxuICAgICAgb2Zmc2V0ICs9IGQubGVuZ3RoXG4gICAgfSlcblxuICAgIGIud3JpdGVVSW50MTZCRShidWYsIG9mZnNldCAtIG9sZE9mZnNldCAtIDIsIG9sZE9mZnNldClcbiAgICBydHh0LmVuY29kZS5ieXRlcyA9IG9mZnNldCAtIG9sZE9mZnNldFxuICAgIHJldHVybiBidWZcbiAgfSxcbiAgZGVjb2RlIChidWYsIG9mZnNldCkge1xuICAgIGlmICghb2Zmc2V0KSBvZmZzZXQgPSAwXG4gICAgY29uc3Qgb2xkT2Zmc2V0ID0gb2Zmc2V0XG4gICAgbGV0IHJlbWFpbmluZyA9IGIucmVhZFVJbnQxNkJFKGJ1Ziwgb2Zmc2V0KVxuICAgIG9mZnNldCArPSAyXG5cbiAgICBjb25zdCBkYXRhID0gW11cbiAgICB3aGlsZSAocmVtYWluaW5nID4gMCkge1xuICAgICAgY29uc3QgbGVuID0gYnVmW29mZnNldCsrXVxuICAgICAgLS1yZW1haW5pbmdcbiAgICAgIGlmIChyZW1haW5pbmcgPCBsZW4pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdCdWZmZXIgb3ZlcmZsb3cnKVxuICAgICAgfVxuICAgICAgZGF0YS5wdXNoKGJ1Zi5zbGljZShvZmZzZXQsIG9mZnNldCArIGxlbikpXG4gICAgICBvZmZzZXQgKz0gbGVuXG4gICAgICByZW1haW5pbmcgLT0gbGVuXG4gICAgfVxuXG4gICAgcnR4dC5kZWNvZGUuYnl0ZXMgPSBvZmZzZXQgLSBvbGRPZmZzZXRcbiAgICByZXR1cm4gZGF0YVxuICB9LFxuICBlbmNvZGluZ0xlbmd0aCAoZGF0YSkge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhKSkgZGF0YSA9IFtkYXRhXVxuICAgIGxldCBsZW5ndGggPSAyXG4gICAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChidWYpIHtcbiAgICAgIGlmICh0eXBlb2YgYnVmID09PSAnc3RyaW5nJykge1xuICAgICAgICBsZW5ndGggKz0gYi5ieXRlbGVuZ3RoKGJ1ZikgKyAxXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZW5ndGggKz0gYnVmLmxlbmd0aCArIDFcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiBsZW5ndGhcbiAgfVxufSlcblxuY29uc3Qgcm51bGwgPSBjb2RlYyh7XG4gIGVuY29kZSAoZGF0YSwgYnVmLCBvZmZzZXQpIHtcbiAgICBpZiAoIWJ1ZikgYnVmID0gbmV3IFVpbnQ4QXJyYXkocm51bGwuZW5jb2RpbmdMZW5ndGgoZGF0YSkpXG4gICAgaWYgKCFvZmZzZXQpIG9mZnNldCA9IDBcblxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIGRhdGEgPSBiLmZyb20oZGF0YSlcbiAgICBpZiAoIWRhdGEpIGRhdGEgPSBuZXcgVWludDhBcnJheSgwKVxuXG4gICAgY29uc3Qgb2xkT2Zmc2V0ID0gb2Zmc2V0XG4gICAgb2Zmc2V0ICs9IDJcblxuICAgIGNvbnN0IGxlbiA9IGRhdGEubGVuZ3RoXG4gICAgYi5jb3B5KGRhdGEsIGJ1Ziwgb2Zmc2V0LCAwLCBsZW4pXG4gICAgb2Zmc2V0ICs9IGxlblxuXG4gICAgYi53cml0ZVVJbnQxNkJFKGJ1Ziwgb2Zmc2V0IC0gb2xkT2Zmc2V0IC0gMiwgb2xkT2Zmc2V0KVxuICAgIHJudWxsLmVuY29kZS5ieXRlcyA9IG9mZnNldCAtIG9sZE9mZnNldFxuICAgIHJldHVybiBidWZcbiAgfSxcbiAgZGVjb2RlIChidWYsIG9mZnNldCkge1xuICAgIGlmICghb2Zmc2V0KSBvZmZzZXQgPSAwXG4gICAgY29uc3Qgb2xkT2Zmc2V0ID0gb2Zmc2V0XG4gICAgY29uc3QgbGVuID0gYi5yZWFkVUludDE2QkUoYnVmLCBvZmZzZXQpXG5cbiAgICBvZmZzZXQgKz0gMlxuXG4gICAgY29uc3QgZGF0YSA9IGJ1Zi5zbGljZShvZmZzZXQsIG9mZnNldCArIGxlbilcbiAgICBvZmZzZXQgKz0gbGVuXG5cbiAgICBybnVsbC5kZWNvZGUuYnl0ZXMgPSBvZmZzZXQgLSBvbGRPZmZzZXRcbiAgICByZXR1cm4gZGF0YVxuICB9LFxuICBlbmNvZGluZ0xlbmd0aCAoZGF0YSkge1xuICAgIGlmICghZGF0YSkgcmV0dXJuIDJcbiAgICByZXR1cm4gKGIuaXNVOEFycihkYXRhKSA/IGRhdGEubGVuZ3RoIDogYi5ieXRlbGVuZ3RoKGRhdGEpKSArIDJcbiAgfVxufSlcblxuY29uc3QgcmhpbmZvID0gY29kZWMoe1xuICBlbmNvZGUgKGRhdGEsIGJ1Ziwgb2Zmc2V0KSB7XG4gICAgaWYgKCFidWYpIGJ1ZiA9IG5ldyBVaW50OEFycmF5KHJoaW5mby5lbmNvZGluZ0xlbmd0aChkYXRhKSlcbiAgICBpZiAoIW9mZnNldCkgb2Zmc2V0ID0gMFxuXG4gICAgY29uc3Qgb2xkT2Zmc2V0ID0gb2Zmc2V0XG4gICAgb2Zmc2V0ICs9IDJcbiAgICBzdHJpbmcuZW5jb2RlKGRhdGEuY3B1LCBidWYsIG9mZnNldClcbiAgICBvZmZzZXQgKz0gc3RyaW5nLmVuY29kZS5ieXRlc1xuICAgIHN0cmluZy5lbmNvZGUoZGF0YS5vcywgYnVmLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IHN0cmluZy5lbmNvZGUuYnl0ZXNcbiAgICBiLndyaXRlVUludDE2QkUoYnVmLCBvZmZzZXQgLSBvbGRPZmZzZXQgLSAyLCBvbGRPZmZzZXQpXG4gICAgcmhpbmZvLmVuY29kZS5ieXRlcyA9IG9mZnNldCAtIG9sZE9mZnNldFxuICAgIHJldHVybiBidWZcbiAgfSxcbiAgZGVjb2RlIChidWYsIG9mZnNldCkge1xuICAgIGlmICghb2Zmc2V0KSBvZmZzZXQgPSAwXG5cbiAgICBjb25zdCBvbGRPZmZzZXQgPSBvZmZzZXRcblxuICAgIGNvbnN0IGRhdGEgPSB7fVxuICAgIG9mZnNldCArPSAyXG4gICAgZGF0YS5jcHUgPSBzdHJpbmcuZGVjb2RlKGJ1Ziwgb2Zmc2V0KVxuICAgIG9mZnNldCArPSBzdHJpbmcuZGVjb2RlLmJ5dGVzXG4gICAgZGF0YS5vcyA9IHN0cmluZy5kZWNvZGUoYnVmLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IHN0cmluZy5kZWNvZGUuYnl0ZXNcbiAgICByaGluZm8uZGVjb2RlLmJ5dGVzID0gb2Zmc2V0IC0gb2xkT2Zmc2V0XG4gICAgcmV0dXJuIGRhdGFcbiAgfSxcbiAgZW5jb2RpbmdMZW5ndGggKGRhdGEpIHtcbiAgICByZXR1cm4gc3RyaW5nLmVuY29kaW5nTGVuZ3RoKGRhdGEuY3B1KSArIHN0cmluZy5lbmNvZGluZ0xlbmd0aChkYXRhLm9zKSArIDJcbiAgfVxufSlcblxuY29uc3QgcnB0ciA9IGNvZGVjKHtcbiAgZW5jb2RlIChkYXRhLCBidWYsIG9mZnNldCkge1xuICAgIGlmICghYnVmKSBidWYgPSBuZXcgVWludDhBcnJheShycHRyLmVuY29kaW5nTGVuZ3RoKGRhdGEpKVxuICAgIGlmICghb2Zmc2V0KSBvZmZzZXQgPSAwXG5cbiAgICBuYW1lLmVuY29kZShkYXRhLCBidWYsIG9mZnNldCArIDIpXG4gICAgYi53cml0ZVVJbnQxNkJFKGJ1ZiwgbmFtZS5lbmNvZGUuYnl0ZXMsIG9mZnNldClcbiAgICBycHRyLmVuY29kZS5ieXRlcyA9IG5hbWUuZW5jb2RlLmJ5dGVzICsgMlxuICAgIHJldHVybiBidWZcbiAgfSxcbiAgZGVjb2RlIChidWYsIG9mZnNldCkge1xuICAgIGlmICghb2Zmc2V0KSBvZmZzZXQgPSAwXG5cbiAgICBjb25zdCBkYXRhID0gbmFtZS5kZWNvZGUoYnVmLCBvZmZzZXQgKyAyKVxuICAgIHJwdHIuZGVjb2RlLmJ5dGVzID0gbmFtZS5kZWNvZGUuYnl0ZXMgKyAyXG4gICAgcmV0dXJuIGRhdGFcbiAgfSxcbiAgZW5jb2RpbmdMZW5ndGggKGRhdGEpIHtcbiAgICByZXR1cm4gbmFtZS5lbmNvZGluZ0xlbmd0aChkYXRhKSArIDJcbiAgfVxufSlcblxuY29uc3QgcnNydiA9IGNvZGVjKHtcbiAgZW5jb2RlIChkYXRhLCBidWYsIG9mZnNldCkge1xuICAgIGlmICghYnVmKSBidWYgPSBuZXcgVWludDhBcnJheShyc3J2LmVuY29kaW5nTGVuZ3RoKGRhdGEpKVxuICAgIGlmICghb2Zmc2V0KSBvZmZzZXQgPSAwXG5cbiAgICBiLndyaXRlVUludDE2QkUoYnVmLCBkYXRhLnByaW9yaXR5IHx8IDAsIG9mZnNldCArIDIpXG4gICAgYi53cml0ZVVJbnQxNkJFKGJ1ZiwgZGF0YS53ZWlnaHQgfHwgMCwgb2Zmc2V0ICsgNClcbiAgICBiLndyaXRlVUludDE2QkUoYnVmLCBkYXRhLnBvcnQgfHwgMCwgb2Zmc2V0ICsgNilcbiAgICBuYW1lLmVuY29kZShkYXRhLnRhcmdldCwgYnVmLCBvZmZzZXQgKyA4KVxuXG4gICAgY29uc3QgbGVuID0gbmFtZS5lbmNvZGUuYnl0ZXMgKyA2XG4gICAgYi53cml0ZVVJbnQxNkJFKGJ1ZiwgbGVuLCBvZmZzZXQpXG5cbiAgICByc3J2LmVuY29kZS5ieXRlcyA9IGxlbiArIDJcbiAgICByZXR1cm4gYnVmXG4gIH0sXG4gIGRlY29kZSAoYnVmLCBvZmZzZXQpIHtcbiAgICBpZiAoIW9mZnNldCkgb2Zmc2V0ID0gMFxuXG4gICAgY29uc3QgbGVuID0gYi5yZWFkVUludDE2QkUoYnVmLCBvZmZzZXQpXG5cbiAgICBjb25zdCBkYXRhID0ge31cbiAgICBkYXRhLnByaW9yaXR5ID0gYi5yZWFkVUludDE2QkUoYnVmLCBvZmZzZXQgKyAyKVxuICAgIGRhdGEud2VpZ2h0ID0gYi5yZWFkVUludDE2QkUoYnVmLCBvZmZzZXQgKyA0KVxuICAgIGRhdGEucG9ydCA9IGIucmVhZFVJbnQxNkJFKGJ1Ziwgb2Zmc2V0ICsgNilcbiAgICBkYXRhLnRhcmdldCA9IG5hbWUuZGVjb2RlKGJ1Ziwgb2Zmc2V0ICsgOClcblxuICAgIHJzcnYuZGVjb2RlLmJ5dGVzID0gbGVuICsgMlxuICAgIHJldHVybiBkYXRhXG4gIH0sXG4gIGVuY29kaW5nTGVuZ3RoIChkYXRhKSB7XG4gICAgcmV0dXJuIDggKyBuYW1lLmVuY29kaW5nTGVuZ3RoKGRhdGEudGFyZ2V0KVxuICB9XG59KVxuXG5jb25zdCByY2FhID0gY29kZWMoe1xuICBlbmNvZGUgKGRhdGEsIGJ1Ziwgb2Zmc2V0KSB7XG4gICAgY29uc3QgbGVuID0gcmNhYS5lbmNvZGluZ0xlbmd0aChkYXRhKVxuXG4gICAgaWYgKCFidWYpIGJ1ZiA9IG5ldyBVaW50OEFycmF5KHJjYWEuZW5jb2RpbmdMZW5ndGgoZGF0YSkpXG4gICAgaWYgKCFvZmZzZXQpIG9mZnNldCA9IDBcblxuICAgIGlmIChkYXRhLmlzc3VlckNyaXRpY2FsKSB7XG4gICAgICBkYXRhLmZsYWdzID0gcmNhYS5JU1NVRVJfQ1JJVElDQUxcbiAgICB9XG5cbiAgICBiLndyaXRlVUludDE2QkUoYnVmLCBsZW4gLSAyLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IDJcbiAgICBidWZbb2Zmc2V0XSA9IGRhdGEuZmxhZ3MgfHwgMFxuICAgIG9mZnNldCArPSAxXG4gICAgc3RyaW5nLmVuY29kZShkYXRhLnRhZywgYnVmLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IHN0cmluZy5lbmNvZGUuYnl0ZXNcbiAgICBiLndyaXRlKGJ1ZiwgZGF0YS52YWx1ZSwgb2Zmc2V0KVxuICAgIG9mZnNldCArPSBiLmJ5dGVsZW5ndGgoZGF0YS52YWx1ZSlcblxuICAgIHJjYWEuZW5jb2RlLmJ5dGVzID0gbGVuXG4gICAgcmV0dXJuIGJ1ZlxuICB9LFxuICBkZWNvZGUgKGJ1Ziwgb2Zmc2V0KSB7XG4gICAgaWYgKCFvZmZzZXQpIG9mZnNldCA9IDBcblxuICAgIGNvbnN0IGxlbiA9IGIucmVhZFVJbnQxNkJFKGJ1Ziwgb2Zmc2V0KVxuICAgIG9mZnNldCArPSAyXG5cbiAgICBjb25zdCBvbGRPZmZzZXQgPSBvZmZzZXRcbiAgICBjb25zdCBkYXRhID0ge31cbiAgICBkYXRhLmZsYWdzID0gYnVmW29mZnNldF1cbiAgICBvZmZzZXQgKz0gMVxuICAgIGRhdGEudGFnID0gc3RyaW5nLmRlY29kZShidWYsIG9mZnNldClcbiAgICBvZmZzZXQgKz0gc3RyaW5nLmRlY29kZS5ieXRlc1xuICAgIGRhdGEudmFsdWUgPSB0b1V0ZjgoYnVmLCBvZmZzZXQsIG9sZE9mZnNldCArIGxlbilcblxuICAgIGRhdGEuaXNzdWVyQ3JpdGljYWwgPSAhIShkYXRhLmZsYWdzICYgcmNhYS5JU1NVRVJfQ1JJVElDQUwpXG5cbiAgICByY2FhLmRlY29kZS5ieXRlcyA9IGxlbiArIDJcblxuICAgIHJldHVybiBkYXRhXG4gIH0sXG4gIGVuY29kaW5nTGVuZ3RoIChkYXRhKSB7XG4gICAgcmV0dXJuIHN0cmluZy5lbmNvZGluZ0xlbmd0aChkYXRhLnRhZykgKyBzdHJpbmcuZW5jb2RpbmdMZW5ndGgoZGF0YS52YWx1ZSkgKyAyXG4gIH1cbn0pXG5cbnJjYWEuSVNTVUVSX0NSSVRJQ0FMID0gMSA8PCA3XG5cbmNvbnN0IHJteCA9IGNvZGVjKHtcbiAgZW5jb2RlIChkYXRhLCBidWYsIG9mZnNldCkge1xuICAgIGlmICghYnVmKSBidWYgPSBuZXcgVWludDhBcnJheShybXguZW5jb2RpbmdMZW5ndGgoZGF0YSkpXG4gICAgaWYgKCFvZmZzZXQpIG9mZnNldCA9IDBcblxuICAgIGNvbnN0IG9sZE9mZnNldCA9IG9mZnNldFxuICAgIG9mZnNldCArPSAyXG4gICAgYi53cml0ZVVJbnQxNkJFKGJ1ZiwgZGF0YS5wcmVmZXJlbmNlIHx8IDAsIG9mZnNldClcbiAgICBvZmZzZXQgKz0gMlxuICAgIG5hbWUuZW5jb2RlKGRhdGEuZXhjaGFuZ2UsIGJ1Ziwgb2Zmc2V0KVxuICAgIG9mZnNldCArPSBuYW1lLmVuY29kZS5ieXRlc1xuXG4gICAgYi53cml0ZVVJbnQxNkJFKGJ1Ziwgb2Zmc2V0IC0gb2xkT2Zmc2V0IC0gMiwgb2xkT2Zmc2V0KVxuICAgIHJteC5lbmNvZGUuYnl0ZXMgPSBvZmZzZXQgLSBvbGRPZmZzZXRcbiAgICByZXR1cm4gYnVmXG4gIH0sXG4gIGRlY29kZSAoYnVmLCBvZmZzZXQpIHtcbiAgICBpZiAoIW9mZnNldCkgb2Zmc2V0ID0gMFxuXG4gICAgY29uc3Qgb2xkT2Zmc2V0ID0gb2Zmc2V0XG5cbiAgICBjb25zdCBkYXRhID0ge31cbiAgICBvZmZzZXQgKz0gMlxuICAgIGRhdGEucHJlZmVyZW5jZSA9IGIucmVhZFVJbnQxNkJFKGJ1Ziwgb2Zmc2V0KVxuICAgIG9mZnNldCArPSAyXG4gICAgZGF0YS5leGNoYW5nZSA9IG5hbWUuZGVjb2RlKGJ1Ziwgb2Zmc2V0KVxuICAgIG9mZnNldCArPSBuYW1lLmRlY29kZS5ieXRlc1xuXG4gICAgcm14LmRlY29kZS5ieXRlcyA9IG9mZnNldCAtIG9sZE9mZnNldFxuICAgIHJldHVybiBkYXRhXG4gIH0sXG4gIGVuY29kaW5nTGVuZ3RoIChkYXRhKSB7XG4gICAgcmV0dXJuIDQgKyBuYW1lLmVuY29kaW5nTGVuZ3RoKGRhdGEuZXhjaGFuZ2UpXG4gIH1cbn0pXG5cbmNvbnN0IHJhID0gY29kZWMoe1xuICBlbmNvZGUgKGhvc3QsIGJ1Ziwgb2Zmc2V0KSB7XG4gICAgaWYgKCFidWYpIGJ1ZiA9IG5ldyBVaW50OEFycmF5KHJhLmVuY29kaW5nTGVuZ3RoKGhvc3QpKVxuICAgIGlmICghb2Zmc2V0KSBvZmZzZXQgPSAwXG5cbiAgICBiLndyaXRlVUludDE2QkUoYnVmLCA0LCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IDJcbiAgICBpcC52NC5lbmNvZGUoaG9zdCwgYnVmLCBvZmZzZXQpXG4gICAgcmV0dXJuIGJ1ZlxuICB9LFxuICBkZWNvZGUgKGJ1Ziwgb2Zmc2V0KSB7XG4gICAgaWYgKCFvZmZzZXQpIG9mZnNldCA9IDBcblxuICAgIG9mZnNldCArPSAyXG4gICAgY29uc3QgaG9zdCA9IGlwLnY0LmRlY29kZShidWYsIG9mZnNldClcbiAgICByZXR1cm4gaG9zdFxuICB9LFxuICBieXRlczogNlxufSlcblxuY29uc3QgcmFhYWEgPSBjb2RlYyh7XG4gIGVuY29kZSAoaG9zdCwgYnVmLCBvZmZzZXQpIHtcbiAgICBpZiAoIWJ1ZikgYnVmID0gbmV3IFVpbnQ4QXJyYXkocmFhYWEuZW5jb2RpbmdMZW5ndGgoaG9zdCkpXG4gICAgaWYgKCFvZmZzZXQpIG9mZnNldCA9IDBcblxuICAgIGIud3JpdGVVSW50MTZCRShidWYsIDE2LCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IDJcbiAgICBpcC52Ni5lbmNvZGUoaG9zdCwgYnVmLCBvZmZzZXQpXG4gICAgcmFhYWEuZW5jb2RlLmJ5dGVzID0gMThcbiAgICByZXR1cm4gYnVmXG4gIH0sXG4gIGRlY29kZSAoYnVmLCBvZmZzZXQpIHtcbiAgICBpZiAoIW9mZnNldCkgb2Zmc2V0ID0gMFxuXG4gICAgb2Zmc2V0ICs9IDJcbiAgICBjb25zdCBob3N0ID0gaXAudjYuZGVjb2RlKGJ1Ziwgb2Zmc2V0KVxuICAgIHJhYWFhLmRlY29kZS5ieXRlcyA9IDE4XG4gICAgcmV0dXJuIGhvc3RcbiAgfSxcbiAgYnl0ZXM6IDE4XG59KVxuXG5jb25zdCBhbGxvYyA9IHNpemUgPT4gbmV3IFVpbnQ4QXJyYXkoc2l6ZSlcblxuY29uc3Qgcm9wdGlvbiA9IGNvZGVjKHtcbiAgZW5jb2RlIChvcHRpb24sIGJ1Ziwgb2Zmc2V0KSB7XG4gICAgaWYgKCFidWYpIGJ1ZiA9IG5ldyBVaW50OEFycmF5KHJvcHRpb24uZW5jb2RpbmdMZW5ndGgob3B0aW9uKSlcbiAgICBpZiAoIW9mZnNldCkgb2Zmc2V0ID0gMFxuICAgIGNvbnN0IG9sZE9mZnNldCA9IG9mZnNldFxuXG4gICAgY29uc3QgY29kZSA9IG9wdGlvbmNvZGVzLnRvQ29kZShvcHRpb24uY29kZSlcbiAgICBiLndyaXRlVUludDE2QkUoYnVmLCBjb2RlLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IDJcbiAgICBpZiAob3B0aW9uLmRhdGEpIHtcbiAgICAgIGIud3JpdGVVSW50MTZCRShidWYsIG9wdGlvbi5kYXRhLmxlbmd0aCwgb2Zmc2V0KVxuICAgICAgb2Zmc2V0ICs9IDJcbiAgICAgIGIuY29weShvcHRpb24uZGF0YSwgYnVmLCBvZmZzZXQpXG4gICAgICBvZmZzZXQgKz0gb3B0aW9uLmRhdGEubGVuZ3RoXG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgICAvLyBjYXNlIDM6IE5TSUQuICBObyBlbmNvZGUgbWFrZXMgc2Vuc2UuXG4gICAgICAgIC8vIGNhc2UgNSw2LDc6IE5vdCBpbXBsZW1lbnRhYmxlXG4gICAgICAgIGNhc2UgODogLy8gRUNTXG4gICAgICAgICAge1xuICAgICAgICAgICAgLy8gbm90ZTogZG8gSVAgbWF0aCBiZWZvcmUgY2FsbGluZ1xuICAgICAgICAgICAgY29uc3Qgc3BsID0gb3B0aW9uLnNvdXJjZVByZWZpeExlbmd0aCB8fCAwXG4gICAgICAgICAgICBjb25zdCBmYW0gPSBvcHRpb24uZmFtaWx5IHx8IGlwLmZhbWlseU9mKG9wdGlvbi5pcCwgYWxsb2MpXG4gICAgICAgICAgICBjb25zdCBpcEJ1ZiA9IGlwLmVuY29kZShvcHRpb24uaXAsIGFsbG9jKVxuICAgICAgICAgICAgY29uc3QgaXBMZW4gPSBNYXRoLmNlaWwoc3BsIC8gOClcbiAgICAgICAgICAgIGIud3JpdGVVSW50MTZCRShidWYsIGlwTGVuICsgNCwgb2Zmc2V0KVxuICAgICAgICAgICAgb2Zmc2V0ICs9IDJcbiAgICAgICAgICAgIGIud3JpdGVVSW50MTZCRShidWYsIGZhbSwgb2Zmc2V0KVxuICAgICAgICAgICAgb2Zmc2V0ICs9IDJcbiAgICAgICAgICAgIGJ1ZltvZmZzZXQrK10gPSBzcGxcbiAgICAgICAgICAgIGJ1ZltvZmZzZXQrK10gPSBvcHRpb24uc2NvcGVQcmVmaXhMZW5ndGggfHwgMFxuXG4gICAgICAgICAgICBiLmNvcHkoaXBCdWYsIGJ1Ziwgb2Zmc2V0LCAwLCBpcExlbilcbiAgICAgICAgICAgIG9mZnNldCArPSBpcExlblxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICAvLyBjYXNlIDk6IEVYUElSRSAoZXhwZXJpbWVudGFsKVxuICAgICAgICAvLyBjYXNlIDEwOiBDT09LSUUuICBObyBlbmNvZGUgbWFrZXMgc2Vuc2UuXG4gICAgICAgIGNhc2UgMTE6IC8vIEtFRVAtQUxJVkVcbiAgICAgICAgICBpZiAob3B0aW9uLnRpbWVvdXQpIHtcbiAgICAgICAgICAgIGIud3JpdGVVSW50MTZCRShidWYsIDIsIG9mZnNldClcbiAgICAgICAgICAgIG9mZnNldCArPSAyXG4gICAgICAgICAgICBiLndyaXRlVUludDE2QkUoYnVmLCBvcHRpb24udGltZW91dCwgb2Zmc2V0KVxuICAgICAgICAgICAgb2Zmc2V0ICs9IDJcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYi53cml0ZVVJbnQxNkJFKGJ1ZiwgMCwgb2Zmc2V0KVxuICAgICAgICAgICAgb2Zmc2V0ICs9IDJcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAxMjogLy8gUEFERElOR1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IGxlbiA9IG9wdGlvbi5sZW5ndGggfHwgMFxuICAgICAgICAgICAgYi53cml0ZVVJbnQxNkJFKGJ1ZiwgbGVuLCBvZmZzZXQpXG4gICAgICAgICAgICBvZmZzZXQgKz0gMlxuICAgICAgICAgICAgYnVmLmZpbGwoMCwgb2Zmc2V0LCBvZmZzZXQgKyBsZW4pXG4gICAgICAgICAgICBvZmZzZXQgKz0gbGVuXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIC8vIGNhc2UgMTM6ICBDSEFJTi4gIEV4cGVyaW1lbnRhbC5cbiAgICAgICAgY2FzZSAxNDogLy8gS0VZLVRBR1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IHRhZ3NMZW4gPSBvcHRpb24udGFncy5sZW5ndGggKiAyXG4gICAgICAgICAgICBiLndyaXRlVUludDE2QkUoYnVmLCB0YWdzTGVuLCBvZmZzZXQpXG4gICAgICAgICAgICBvZmZzZXQgKz0gMlxuICAgICAgICAgICAgZm9yIChjb25zdCB0YWcgb2Ygb3B0aW9uLnRhZ3MpIHtcbiAgICAgICAgICAgICAgYi53cml0ZVVJbnQxNkJFKGJ1ZiwgdGFnLCBvZmZzZXQpXG4gICAgICAgICAgICAgIG9mZnNldCArPSAyXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHJvcHRpb24gY29kZTogJHtvcHRpb24uY29kZX1gKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJvcHRpb24uZW5jb2RlLmJ5dGVzID0gb2Zmc2V0IC0gb2xkT2Zmc2V0XG4gICAgcmV0dXJuIGJ1ZlxuICB9LFxuICBkZWNvZGUgKGJ1Ziwgb2Zmc2V0KSB7XG4gICAgaWYgKCFvZmZzZXQpIG9mZnNldCA9IDBcbiAgICBjb25zdCBvcHRpb24gPSB7fVxuICAgIG9wdGlvbi5jb2RlID0gYi5yZWFkVUludDE2QkUoYnVmLCBvZmZzZXQpXG4gICAgb3B0aW9uLnR5cGUgPSBvcHRpb25jb2Rlcy50b1N0cmluZyhvcHRpb24uY29kZSlcbiAgICBvZmZzZXQgKz0gMlxuICAgIGNvbnN0IGxlbiA9IGIucmVhZFVJbnQxNkJFKGJ1Ziwgb2Zmc2V0KVxuICAgIG9mZnNldCArPSAyXG4gICAgb3B0aW9uLmRhdGEgPSBidWYuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBsZW4pXG4gICAgc3dpdGNoIChvcHRpb24uY29kZSkge1xuICAgICAgLy8gY2FzZSAzOiBOU0lELiAgTm8gZGVjb2RlIG1ha2VzIHNlbnNlLlxuICAgICAgY2FzZSA4OiAvLyBFQ1NcbiAgICAgICAgb3B0aW9uLmZhbWlseSA9IGIucmVhZFVJbnQxNkJFKGJ1Ziwgb2Zmc2V0KVxuICAgICAgICBvZmZzZXQgKz0gMlxuICAgICAgICBvcHRpb24uc291cmNlUHJlZml4TGVuZ3RoID0gYnVmW29mZnNldCsrXVxuICAgICAgICBvcHRpb24uc2NvcGVQcmVmaXhMZW5ndGggPSBidWZbb2Zmc2V0KytdXG4gICAgICAgIHtcbiAgICAgICAgICBjb25zdCBwYWRkZWQgPSBuZXcgVWludDhBcnJheSgob3B0aW9uLmZhbWlseSA9PT0gMSkgPyA0IDogMTYpXG4gICAgICAgICAgYi5jb3B5KGJ1ZiwgcGFkZGVkLCAwLCBvZmZzZXQsIG9mZnNldCArIGxlbiAtIDQpXG4gICAgICAgICAgb3B0aW9uLmlwID0gaXAuZGVjb2RlKHBhZGRlZClcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgLy8gY2FzZSAxMjogUGFkZGluZy4gIE5vIGRlY29kZSBtYWtlcyBzZW5zZS5cbiAgICAgIGNhc2UgMTE6IC8vIEtFRVAtQUxJVkVcbiAgICAgICAgaWYgKGxlbiA+IDApIHtcbiAgICAgICAgICBvcHRpb24udGltZW91dCA9IGIucmVhZFVJbnQxNkJFKGJ1Ziwgb2Zmc2V0KVxuICAgICAgICAgIG9mZnNldCArPSAyXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMTQ6XG4gICAgICAgIG9wdGlvbi50YWdzID0gW11cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkgKz0gMikge1xuICAgICAgICAgIG9wdGlvbi50YWdzLnB1c2goYi5yZWFkVUludDE2QkUoYnVmLCBvZmZzZXQpKVxuICAgICAgICAgIG9mZnNldCArPSAyXG4gICAgICAgIH1cbiAgICAgIC8vIGRvbid0IHdvcnJ5IGFib3V0IGRlZmF1bHQuICBjYWxsZXIgd2lsbCB1c2UgZGF0YSBpZiBkZXNpcmVkXG4gICAgfVxuXG4gICAgcm9wdGlvbi5kZWNvZGUuYnl0ZXMgPSBsZW4gKyA0XG4gICAgcmV0dXJuIG9wdGlvblxuICB9LFxuICBlbmNvZGluZ0xlbmd0aCAob3B0aW9uKSB7XG4gICAgaWYgKG9wdGlvbi5kYXRhKSB7XG4gICAgICByZXR1cm4gb3B0aW9uLmRhdGEubGVuZ3RoICsgNFxuICAgIH1cbiAgICBjb25zdCBjb2RlID0gb3B0aW9uY29kZXMudG9Db2RlKG9wdGlvbi5jb2RlKVxuICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgY2FzZSA4OiAvLyBFQ1NcbiAgICAgIHtcbiAgICAgICAgY29uc3Qgc3BsID0gb3B0aW9uLnNvdXJjZVByZWZpeExlbmd0aCB8fCAwXG4gICAgICAgIHJldHVybiBNYXRoLmNlaWwoc3BsIC8gOCkgKyA4XG4gICAgICB9XG4gICAgICBjYXNlIDExOiAvLyBLRUVQLUFMSVZFXG4gICAgICAgIHJldHVybiAodHlwZW9mIG9wdGlvbi50aW1lb3V0ID09PSAnbnVtYmVyJykgPyA2IDogNFxuICAgICAgY2FzZSAxMjogLy8gUEFERElOR1xuICAgICAgICByZXR1cm4gb3B0aW9uLmxlbmd0aCArIDRcbiAgICAgIGNhc2UgMTQ6IC8vIEtFWS1UQUdcbiAgICAgICAgcmV0dXJuIDQgKyAob3B0aW9uLnRhZ3MubGVuZ3RoICogMilcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHJvcHRpb24gY29kZTogJHtvcHRpb24uY29kZX1gKVxuICB9XG59KVxuXG5jb25zdCByb3B0ID0gY29kZWMoe1xuICBlbmNvZGUgKG9wdGlvbnMsIGJ1Ziwgb2Zmc2V0KSB7XG4gICAgaWYgKCFidWYpIGJ1ZiA9IG5ldyBVaW50OEFycmF5KHJvcHQuZW5jb2RpbmdMZW5ndGgob3B0aW9ucykpXG4gICAgaWYgKCFvZmZzZXQpIG9mZnNldCA9IDBcbiAgICBjb25zdCBvbGRPZmZzZXQgPSBvZmZzZXRcblxuICAgIGNvbnN0IHJkbGVuID0gZW5jb2RpbmdMZW5ndGhMaXN0KG9wdGlvbnMsIHJvcHRpb24pXG4gICAgYi53cml0ZVVJbnQxNkJFKGJ1ZiwgcmRsZW4sIG9mZnNldClcbiAgICBvZmZzZXQgPSBlbmNvZGVMaXN0KG9wdGlvbnMsIHJvcHRpb24sIGJ1Ziwgb2Zmc2V0ICsgMilcblxuICAgIHJvcHQuZW5jb2RlLmJ5dGVzID0gb2Zmc2V0IC0gb2xkT2Zmc2V0XG4gICAgcmV0dXJuIGJ1ZlxuICB9LFxuICBkZWNvZGUgKGJ1Ziwgb2Zmc2V0KSB7XG4gICAgaWYgKCFvZmZzZXQpIG9mZnNldCA9IDBcbiAgICBjb25zdCBvbGRPZmZzZXQgPSBvZmZzZXRcblxuICAgIGNvbnN0IG9wdGlvbnMgPSBbXVxuICAgIGxldCByZGxlbiA9IGIucmVhZFVJbnQxNkJFKGJ1Ziwgb2Zmc2V0KVxuICAgIG9mZnNldCArPSAyXG4gICAgbGV0IG8gPSAwXG4gICAgd2hpbGUgKHJkbGVuID4gMCkge1xuICAgICAgb3B0aW9uc1tvKytdID0gcm9wdGlvbi5kZWNvZGUoYnVmLCBvZmZzZXQpXG4gICAgICBvZmZzZXQgKz0gcm9wdGlvbi5kZWNvZGUuYnl0ZXNcbiAgICAgIHJkbGVuIC09IHJvcHRpb24uZGVjb2RlLmJ5dGVzXG4gICAgfVxuICAgIHJvcHQuZGVjb2RlLmJ5dGVzID0gb2Zmc2V0IC0gb2xkT2Zmc2V0XG4gICAgcmV0dXJuIG9wdGlvbnNcbiAgfSxcbiAgZW5jb2RpbmdMZW5ndGggKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gMiArIGVuY29kaW5nTGVuZ3RoTGlzdChvcHRpb25zIHx8IFtdLCByb3B0aW9uKVxuICB9XG59KVxuXG5jb25zdCByZG5za2V5ID0gY29kZWMoe1xuICBlbmNvZGUgKGtleSwgYnVmLCBvZmZzZXQpIHtcbiAgICBpZiAoIWJ1ZikgYnVmID0gbmV3IFVpbnQ4QXJyYXkocmRuc2tleS5lbmNvZGluZ0xlbmd0aChrZXkpKVxuICAgIGlmICghb2Zmc2V0KSBvZmZzZXQgPSAwXG4gICAgY29uc3Qgb2xkT2Zmc2V0ID0gb2Zmc2V0XG5cbiAgICBjb25zdCBrZXlkYXRhID0ga2V5LmtleVxuICAgIGlmICghYi5pc1U4QXJyKGtleWRhdGEpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0tleSBtdXN0IGJlIGEgQnVmZmVyJylcbiAgICB9XG5cbiAgICBvZmZzZXQgKz0gMiAvLyBMZWF2ZSBzcGFjZSBmb3IgbGVuZ3RoXG4gICAgYi53cml0ZVVJbnQxNkJFKGJ1Ziwga2V5LmZsYWdzLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IDJcbiAgICBidWZbb2Zmc2V0XSA9IHJkbnNrZXkuUFJPVE9DT0xfRE5TU0VDXG4gICAgb2Zmc2V0ICs9IDFcbiAgICBidWZbb2Zmc2V0XSA9IGtleS5hbGdvcml0aG1cbiAgICBvZmZzZXQgKz0gMVxuICAgIGIuY29weShrZXlkYXRhLCBidWYsIG9mZnNldCwgMCwga2V5ZGF0YS5sZW5ndGgpXG4gICAgb2Zmc2V0ICs9IGtleWRhdGEubGVuZ3RoXG5cbiAgICByZG5za2V5LmVuY29kZS5ieXRlcyA9IG9mZnNldCAtIG9sZE9mZnNldFxuICAgIGIud3JpdGVVSW50MTZCRShidWYsIHJkbnNrZXkuZW5jb2RlLmJ5dGVzIC0gMiwgb2xkT2Zmc2V0KVxuICAgIHJldHVybiBidWZcbiAgfSxcbiAgZGVjb2RlIChidWYsIG9mZnNldCkge1xuICAgIGlmICghb2Zmc2V0KSBvZmZzZXQgPSAwXG4gICAgY29uc3Qgb2xkT2Zmc2V0ID0gb2Zmc2V0XG5cbiAgICBjb25zdCBrZXkgPSB7fVxuICAgIGNvbnN0IGxlbmd0aCA9IGIucmVhZFVJbnQxNkJFKGJ1Ziwgb2Zmc2V0KVxuICAgIG9mZnNldCArPSAyXG4gICAga2V5LmZsYWdzID0gYi5yZWFkVUludDE2QkUoYnVmLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IDJcbiAgICBpZiAoYnVmW29mZnNldF0gIT09IHJkbnNrZXkuUFJPVE9DT0xfRE5TU0VDKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Byb3RvY29sIG11c3QgYmUgMycpXG4gICAgfVxuICAgIG9mZnNldCArPSAxXG4gICAga2V5LmFsZ29yaXRobSA9IGJ1ZltvZmZzZXRdXG4gICAgb2Zmc2V0ICs9IDFcbiAgICBrZXkua2V5ID0gYnVmLnNsaWNlKG9mZnNldCwgb2xkT2Zmc2V0ICsgbGVuZ3RoICsgMilcbiAgICBvZmZzZXQgKz0ga2V5LmtleS5sZW5ndGhcbiAgICByZG5za2V5LmRlY29kZS5ieXRlcyA9IG9mZnNldCAtIG9sZE9mZnNldFxuICAgIHJldHVybiBrZXlcbiAgfSxcbiAgZW5jb2RpbmdMZW5ndGggKGtleSkge1xuICAgIHJldHVybiA2ICsgYi5ieXRlbGVuZ3RoKGtleS5rZXkpXG4gIH1cbn0pXG5cbnJkbnNrZXkuUFJPVE9DT0xfRE5TU0VDID0gM1xucmRuc2tleS5aT05FX0tFWSA9IDB4ODBcbnJkbnNrZXkuU0VDVVJFX0VOVFJZUE9JTlQgPSAweDgwMDBcblxuY29uc3QgcnJyc2lnID0gY29kZWMoe1xuICBlbmNvZGUgKHNpZywgYnVmLCBvZmZzZXQpIHtcbiAgICBpZiAoIWJ1ZikgYnVmID0gbmV3IFVpbnQ4QXJyYXkocnJyc2lnLmVuY29kaW5nTGVuZ3RoKHNpZykpXG4gICAgaWYgKCFvZmZzZXQpIG9mZnNldCA9IDBcbiAgICBjb25zdCBvbGRPZmZzZXQgPSBvZmZzZXRcblxuICAgIGNvbnN0IHNpZ25hdHVyZSA9IHNpZy5zaWduYXR1cmVcbiAgICBpZiAoIWIuaXNVOEFycihzaWduYXR1cmUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NpZ25hdHVyZSBtdXN0IGJlIGEgQnVmZmVyJylcbiAgICB9XG5cbiAgICBvZmZzZXQgKz0gMiAvLyBMZWF2ZSBzcGFjZSBmb3IgbGVuZ3RoXG4gICAgYi53cml0ZVVJbnQxNkJFKGJ1ZiwgdHlwZXMudG9UeXBlKHNpZy50eXBlQ292ZXJlZCksIG9mZnNldClcbiAgICBvZmZzZXQgKz0gMlxuICAgIGJ1ZltvZmZzZXRdID0gc2lnLmFsZ29yaXRobVxuICAgIG9mZnNldCArPSAxXG4gICAgYnVmW29mZnNldF0gPSBzaWcubGFiZWxzXG4gICAgb2Zmc2V0ICs9IDFcbiAgICBiLndyaXRlVUludDMyQkUoYnVmLCBzaWcub3JpZ2luYWxUVEwsIG9mZnNldClcbiAgICBvZmZzZXQgKz0gNFxuICAgIGIud3JpdGVVSW50MzJCRShidWYsIHNpZy5leHBpcmF0aW9uLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IDRcbiAgICBiLndyaXRlVUludDMyQkUoYnVmLCBzaWcuaW5jZXB0aW9uLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IDRcbiAgICBiLndyaXRlVUludDE2QkUoYnVmLCBzaWcua2V5VGFnLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IDJcbiAgICBuYW1lLmVuY29kZShzaWcuc2lnbmVyc05hbWUsIGJ1Ziwgb2Zmc2V0KVxuICAgIG9mZnNldCArPSBuYW1lLmVuY29kZS5ieXRlc1xuICAgIGIuY29weShzaWduYXR1cmUsIGJ1Ziwgb2Zmc2V0LCAwLCBzaWduYXR1cmUubGVuZ3RoKVxuICAgIG9mZnNldCArPSBzaWduYXR1cmUubGVuZ3RoXG5cbiAgICBycnJzaWcuZW5jb2RlLmJ5dGVzID0gb2Zmc2V0IC0gb2xkT2Zmc2V0XG4gICAgYi53cml0ZVVJbnQxNkJFKGJ1ZiwgcnJyc2lnLmVuY29kZS5ieXRlcyAtIDIsIG9sZE9mZnNldClcbiAgICByZXR1cm4gYnVmXG4gIH0sXG4gIGRlY29kZSAoYnVmLCBvZmZzZXQpIHtcbiAgICBpZiAoIW9mZnNldCkgb2Zmc2V0ID0gMFxuICAgIGNvbnN0IG9sZE9mZnNldCA9IG9mZnNldFxuXG4gICAgY29uc3Qgc2lnID0ge31cbiAgICBjb25zdCBsZW5ndGggPSBiLnJlYWRVSW50MTZCRShidWYsIG9mZnNldClcbiAgICBvZmZzZXQgKz0gMlxuICAgIHNpZy50eXBlQ292ZXJlZCA9IHR5cGVzLnRvU3RyaW5nKGIucmVhZFVJbnQxNkJFKGJ1Ziwgb2Zmc2V0KSlcbiAgICBvZmZzZXQgKz0gMlxuICAgIHNpZy5hbGdvcml0aG0gPSBidWZbb2Zmc2V0XVxuICAgIG9mZnNldCArPSAxXG4gICAgc2lnLmxhYmVscyA9IGJ1ZltvZmZzZXRdXG4gICAgb2Zmc2V0ICs9IDFcbiAgICBzaWcub3JpZ2luYWxUVEwgPSBiLnJlYWRVSW50MzJCRShidWYsIG9mZnNldClcbiAgICBvZmZzZXQgKz0gNFxuICAgIHNpZy5leHBpcmF0aW9uID0gYi5yZWFkVUludDMyQkUoYnVmLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IDRcbiAgICBzaWcuaW5jZXB0aW9uID0gYi5yZWFkVUludDMyQkUoYnVmLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IDRcbiAgICBzaWcua2V5VGFnID0gYi5yZWFkVUludDE2QkUoYnVmLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IDJcbiAgICBzaWcuc2lnbmVyc05hbWUgPSBuYW1lLmRlY29kZShidWYsIG9mZnNldClcbiAgICBvZmZzZXQgKz0gbmFtZS5kZWNvZGUuYnl0ZXNcbiAgICBzaWcuc2lnbmF0dXJlID0gYnVmLnNsaWNlKG9mZnNldCwgb2xkT2Zmc2V0ICsgbGVuZ3RoICsgMilcbiAgICBvZmZzZXQgKz0gc2lnLnNpZ25hdHVyZS5sZW5ndGhcbiAgICBycnJzaWcuZGVjb2RlLmJ5dGVzID0gb2Zmc2V0IC0gb2xkT2Zmc2V0XG4gICAgcmV0dXJuIHNpZ1xuICB9LFxuICBlbmNvZGluZ0xlbmd0aCAoc2lnKSB7XG4gICAgcmV0dXJuIDIwICtcbiAgICAgIG5hbWUuZW5jb2RpbmdMZW5ndGgoc2lnLnNpZ25lcnNOYW1lKSArXG4gICAgICBiLmJ5dGVsZW5ndGgoc2lnLnNpZ25hdHVyZSlcbiAgfVxufSlcbmNvbnN0IHJycCA9IGNvZGVjKHtcbiAgZW5jb2RlIChkYXRhLCBidWYsIG9mZnNldCkge1xuICAgIGlmICghYnVmKSBidWYgPSBuZXcgVWludDhBcnJheShycnAuZW5jb2RpbmdMZW5ndGgoZGF0YSkpXG4gICAgaWYgKCFvZmZzZXQpIG9mZnNldCA9IDBcbiAgICBjb25zdCBvbGRPZmZzZXQgPSBvZmZzZXRcblxuICAgIG9mZnNldCArPSAyIC8vIExlYXZlIHNwYWNlIGZvciBsZW5ndGhcbiAgICBuYW1lLmVuY29kZShkYXRhLm1ib3ggfHwgJy4nLCBidWYsIG9mZnNldClcbiAgICBvZmZzZXQgKz0gbmFtZS5lbmNvZGUuYnl0ZXNcbiAgICBuYW1lLmVuY29kZShkYXRhLnR4dCB8fCAnLicsIGJ1Ziwgb2Zmc2V0KVxuICAgIG9mZnNldCArPSBuYW1lLmVuY29kZS5ieXRlc1xuICAgIHJycC5lbmNvZGUuYnl0ZXMgPSBvZmZzZXQgLSBvbGRPZmZzZXRcbiAgICBiLndyaXRlVUludDE2QkUoYnVmLCBycnAuZW5jb2RlLmJ5dGVzIC0gMiwgb2xkT2Zmc2V0KVxuICAgIHJldHVybiBidWZcbiAgfSxcbiAgZGVjb2RlIChidWYsIG9mZnNldCkge1xuICAgIGlmICghb2Zmc2V0KSBvZmZzZXQgPSAwXG4gICAgY29uc3Qgb2xkT2Zmc2V0ID0gb2Zmc2V0XG5cbiAgICBjb25zdCBkYXRhID0ge31cbiAgICBvZmZzZXQgKz0gMlxuICAgIGRhdGEubWJveCA9IG5hbWUuZGVjb2RlKGJ1Ziwgb2Zmc2V0KSB8fCAnLidcbiAgICBvZmZzZXQgKz0gbmFtZS5kZWNvZGUuYnl0ZXNcbiAgICBkYXRhLnR4dCA9IG5hbWUuZGVjb2RlKGJ1Ziwgb2Zmc2V0KSB8fCAnLidcbiAgICBvZmZzZXQgKz0gbmFtZS5kZWNvZGUuYnl0ZXNcbiAgICBycnAuZGVjb2RlLmJ5dGVzID0gb2Zmc2V0IC0gb2xkT2Zmc2V0XG4gICAgcmV0dXJuIGRhdGFcbiAgfSxcbiAgZW5jb2RpbmdMZW5ndGggKGRhdGEpIHtcbiAgICByZXR1cm4gMiArIG5hbWUuZW5jb2RpbmdMZW5ndGgoZGF0YS5tYm94IHx8ICcuJykgKyBuYW1lLmVuY29kaW5nTGVuZ3RoKGRhdGEudHh0IHx8ICcuJylcbiAgfVxufSlcblxuY29uc3QgdHlwZWJpdG1hcCA9IGNvZGVjKHtcbiAgZW5jb2RlICh0eXBlbGlzdCwgYnVmLCBvZmZzZXQpIHtcbiAgICBpZiAoIWJ1ZikgYnVmID0gbmV3IFVpbnQ4QXJyYXkodHlwZWJpdG1hcC5lbmNvZGluZ0xlbmd0aCh0eXBlbGlzdCkpXG4gICAgaWYgKCFvZmZzZXQpIG9mZnNldCA9IDBcbiAgICBjb25zdCBvbGRPZmZzZXQgPSBvZmZzZXRcblxuICAgIGNvbnN0IHR5cGVzQnlXaW5kb3cgPSBbXVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZWxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHR5cGVpZCA9IHR5cGVzLnRvVHlwZSh0eXBlbGlzdFtpXSlcbiAgICAgIGlmICh0eXBlc0J5V2luZG93W3R5cGVpZCA+PiA4XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHR5cGVzQnlXaW5kb3dbdHlwZWlkID4+IDhdID0gW11cbiAgICAgIH1cbiAgICAgIHR5cGVzQnlXaW5kb3dbdHlwZWlkID4+IDhdWyh0eXBlaWQgPj4gMykgJiAweDFGXSB8PSAxIDw8ICg3IC0gKHR5cGVpZCAmIDB4NykpXG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0eXBlc0J5V2luZG93Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodHlwZXNCeVdpbmRvd1tpXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IHdpbmRvd0J1ZiA9IGIuZnJvbSh0eXBlc0J5V2luZG93W2ldKVxuICAgICAgICBidWZbb2Zmc2V0XSA9IGlcbiAgICAgICAgb2Zmc2V0ICs9IDFcbiAgICAgICAgYnVmW29mZnNldF0gPSB3aW5kb3dCdWYubGVuZ3RoXG4gICAgICAgIG9mZnNldCArPSAxXG4gICAgICAgIGIuY29weSh3aW5kb3dCdWYsIGJ1Ziwgb2Zmc2V0LCAwLCB3aW5kb3dCdWYubGVuZ3RoKVxuICAgICAgICBvZmZzZXQgKz0gd2luZG93QnVmLmxlbmd0aFxuICAgICAgfVxuICAgIH1cblxuICAgIHR5cGViaXRtYXAuZW5jb2RlLmJ5dGVzID0gb2Zmc2V0IC0gb2xkT2Zmc2V0XG4gICAgcmV0dXJuIGJ1ZlxuICB9LFxuICBkZWNvZGUgKGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgICBpZiAoIW9mZnNldCkgb2Zmc2V0ID0gMFxuICAgIGNvbnN0IG9sZE9mZnNldCA9IG9mZnNldFxuXG4gICAgY29uc3QgdHlwZWxpc3QgPSBbXVxuICAgIHdoaWxlIChvZmZzZXQgLSBvbGRPZmZzZXQgPCBsZW5ndGgpIHtcbiAgICAgIGNvbnN0IHdpbmRvdyA9IGJ1ZltvZmZzZXRdXG4gICAgICBvZmZzZXQgKz0gMVxuICAgICAgY29uc3Qgd2luZG93TGVuZ3RoID0gYnVmW29mZnNldF1cbiAgICAgIG9mZnNldCArPSAxXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdpbmRvd0xlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGIgPSBidWZbb2Zmc2V0ICsgaV1cbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCA4OyBqKyspIHtcbiAgICAgICAgICBpZiAoYiAmICgxIDw8ICg3IC0gaikpKSB7XG4gICAgICAgICAgICBjb25zdCB0eXBlaWQgPSB0eXBlcy50b1N0cmluZygod2luZG93IDw8IDgpIHwgKGkgPDwgMykgfCBqKVxuICAgICAgICAgICAgdHlwZWxpc3QucHVzaCh0eXBlaWQpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBvZmZzZXQgKz0gd2luZG93TGVuZ3RoXG4gICAgfVxuXG4gICAgdHlwZWJpdG1hcC5kZWNvZGUuYnl0ZXMgPSBvZmZzZXQgLSBvbGRPZmZzZXRcbiAgICByZXR1cm4gdHlwZWxpc3RcbiAgfSxcbiAgZW5jb2RpbmdMZW5ndGggKHR5cGVsaXN0KSB7XG4gICAgY29uc3QgZXh0ZW50cyA9IFtdXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0eXBlbGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdHlwZWlkID0gdHlwZXMudG9UeXBlKHR5cGVsaXN0W2ldKVxuICAgICAgZXh0ZW50c1t0eXBlaWQgPj4gOF0gPSBNYXRoLm1heChleHRlbnRzW3R5cGVpZCA+PiA4XSB8fCAwLCB0eXBlaWQgJiAweEZGKVxuICAgIH1cblxuICAgIGxldCBsZW4gPSAwXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBleHRlbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoZXh0ZW50c1tpXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxlbiArPSAyICsgTWF0aC5jZWlsKChleHRlbnRzW2ldICsgMSkgLyA4KVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsZW5cbiAgfVxufSlcblxuY29uc3Qgcm5zZWMgPSBjb2RlYyh7XG4gIGVuY29kZSAocmVjb3JkLCBidWYsIG9mZnNldCkge1xuICAgIGlmICghYnVmKSBidWYgPSBuZXcgVWludDhBcnJheShybnNlYy5lbmNvZGluZ0xlbmd0aChyZWNvcmQpKVxuICAgIGlmICghb2Zmc2V0KSBvZmZzZXQgPSAwXG4gICAgY29uc3Qgb2xkT2Zmc2V0ID0gb2Zmc2V0XG5cbiAgICBvZmZzZXQgKz0gMiAvLyBMZWF2ZSBzcGFjZSBmb3IgbGVuZ3RoXG4gICAgbmFtZS5lbmNvZGUocmVjb3JkLm5leHREb21haW4sIGJ1Ziwgb2Zmc2V0KVxuICAgIG9mZnNldCArPSBuYW1lLmVuY29kZS5ieXRlc1xuICAgIHR5cGViaXRtYXAuZW5jb2RlKHJlY29yZC5ycnR5cGVzLCBidWYsIG9mZnNldClcbiAgICBvZmZzZXQgKz0gdHlwZWJpdG1hcC5lbmNvZGUuYnl0ZXNcblxuICAgIHJuc2VjLmVuY29kZS5ieXRlcyA9IG9mZnNldCAtIG9sZE9mZnNldFxuICAgIGIud3JpdGVVSW50MTZCRShidWYsIHJuc2VjLmVuY29kZS5ieXRlcyAtIDIsIG9sZE9mZnNldClcbiAgICByZXR1cm4gYnVmXG4gIH0sXG4gIGRlY29kZSAoYnVmLCBvZmZzZXQpIHtcbiAgICBpZiAoIW9mZnNldCkgb2Zmc2V0ID0gMFxuICAgIGNvbnN0IG9sZE9mZnNldCA9IG9mZnNldFxuXG4gICAgY29uc3QgcmVjb3JkID0ge31cbiAgICBjb25zdCBsZW5ndGggPSBiLnJlYWRVSW50MTZCRShidWYsIG9mZnNldClcbiAgICBvZmZzZXQgKz0gMlxuICAgIHJlY29yZC5uZXh0RG9tYWluID0gbmFtZS5kZWNvZGUoYnVmLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IG5hbWUuZGVjb2RlLmJ5dGVzXG4gICAgcmVjb3JkLnJydHlwZXMgPSB0eXBlYml0bWFwLmRlY29kZShidWYsIG9mZnNldCwgbGVuZ3RoIC0gKG9mZnNldCAtIG9sZE9mZnNldCkpXG4gICAgb2Zmc2V0ICs9IHR5cGViaXRtYXAuZGVjb2RlLmJ5dGVzXG5cbiAgICBybnNlYy5kZWNvZGUuYnl0ZXMgPSBvZmZzZXQgLSBvbGRPZmZzZXRcbiAgICByZXR1cm4gcmVjb3JkXG4gIH0sXG4gIGVuY29kaW5nTGVuZ3RoIChyZWNvcmQpIHtcbiAgICByZXR1cm4gMiArXG4gICAgICBuYW1lLmVuY29kaW5nTGVuZ3RoKHJlY29yZC5uZXh0RG9tYWluKSArXG4gICAgICB0eXBlYml0bWFwLmVuY29kaW5nTGVuZ3RoKHJlY29yZC5ycnR5cGVzKVxuICB9XG59KVxuXG5jb25zdCBybnNlYzMgPSBjb2RlYyh7XG4gIGVuY29kZSAocmVjb3JkLCBidWYsIG9mZnNldCkge1xuICAgIGlmICghYnVmKSBidWYgPSBuZXcgVWludDhBcnJheShybnNlYzMuZW5jb2RpbmdMZW5ndGgocmVjb3JkKSlcbiAgICBpZiAoIW9mZnNldCkgb2Zmc2V0ID0gMFxuICAgIGNvbnN0IG9sZE9mZnNldCA9IG9mZnNldFxuXG4gICAgY29uc3Qgc2FsdCA9IHJlY29yZC5zYWx0XG4gICAgaWYgKCFiLmlzVThBcnIoc2FsdCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignc2FsdCBtdXN0IGJlIGEgQnVmZmVyJylcbiAgICB9XG5cbiAgICBjb25zdCBuZXh0RG9tYWluID0gcmVjb3JkLm5leHREb21haW5cbiAgICBpZiAoIWIuaXNVOEFycihuZXh0RG9tYWluKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCduZXh0RG9tYWluIG11c3QgYmUgYSBCdWZmZXInKVxuICAgIH1cblxuICAgIG9mZnNldCArPSAyIC8vIExlYXZlIHNwYWNlIGZvciBsZW5ndGhcbiAgICBidWZbb2Zmc2V0XSA9IHJlY29yZC5hbGdvcml0aG1cbiAgICBvZmZzZXQgKz0gMVxuICAgIGJ1ZltvZmZzZXRdID0gcmVjb3JkLmZsYWdzXG4gICAgb2Zmc2V0ICs9IDFcbiAgICBiLndyaXRlVUludDE2QkUoYnVmLCByZWNvcmQuaXRlcmF0aW9ucywgb2Zmc2V0KVxuICAgIG9mZnNldCArPSAyXG4gICAgYnVmW29mZnNldF0gPSBzYWx0Lmxlbmd0aFxuICAgIG9mZnNldCArPSAxXG4gICAgYi5jb3B5KHNhbHQsIGJ1Ziwgb2Zmc2V0LCAwLCBzYWx0Lmxlbmd0aClcbiAgICBvZmZzZXQgKz0gc2FsdC5sZW5ndGhcbiAgICBidWZbb2Zmc2V0XSA9IG5leHREb21haW4ubGVuZ3RoXG4gICAgb2Zmc2V0ICs9IDFcbiAgICBiLmNvcHkobmV4dERvbWFpbiwgYnVmLCBvZmZzZXQsIDAsIG5leHREb21haW4ubGVuZ3RoKVxuICAgIG9mZnNldCArPSBuZXh0RG9tYWluLmxlbmd0aFxuICAgIHR5cGViaXRtYXAuZW5jb2RlKHJlY29yZC5ycnR5cGVzLCBidWYsIG9mZnNldClcbiAgICBvZmZzZXQgKz0gdHlwZWJpdG1hcC5lbmNvZGUuYnl0ZXNcblxuICAgIHJuc2VjMy5lbmNvZGUuYnl0ZXMgPSBvZmZzZXQgLSBvbGRPZmZzZXRcbiAgICBiLndyaXRlVUludDE2QkUoYnVmLCBybnNlYzMuZW5jb2RlLmJ5dGVzIC0gMiwgb2xkT2Zmc2V0KVxuICAgIHJldHVybiBidWZcbiAgfSxcbiAgZGVjb2RlIChidWYsIG9mZnNldCkge1xuICAgIGlmICghb2Zmc2V0KSBvZmZzZXQgPSAwXG4gICAgY29uc3Qgb2xkT2Zmc2V0ID0gb2Zmc2V0XG5cbiAgICBjb25zdCByZWNvcmQgPSB7fVxuICAgIGNvbnN0IGxlbmd0aCA9IGIucmVhZFVJbnQxNkJFKGJ1Ziwgb2Zmc2V0KVxuICAgIG9mZnNldCArPSAyXG4gICAgcmVjb3JkLmFsZ29yaXRobSA9IGJ1ZltvZmZzZXRdXG4gICAgb2Zmc2V0ICs9IDFcbiAgICByZWNvcmQuZmxhZ3MgPSBidWZbb2Zmc2V0XVxuICAgIG9mZnNldCArPSAxXG4gICAgcmVjb3JkLml0ZXJhdGlvbnMgPSBiLnJlYWRVSW50MTZCRShidWYsIG9mZnNldClcbiAgICBvZmZzZXQgKz0gMlxuICAgIGNvbnN0IHNhbHRMZW5ndGggPSBidWZbb2Zmc2V0XVxuICAgIG9mZnNldCArPSAxXG4gICAgcmVjb3JkLnNhbHQgPSBidWYuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBzYWx0TGVuZ3RoKVxuICAgIG9mZnNldCArPSBzYWx0TGVuZ3RoXG4gICAgY29uc3QgaGFzaExlbmd0aCA9IGJ1ZltvZmZzZXRdXG4gICAgb2Zmc2V0ICs9IDFcbiAgICByZWNvcmQubmV4dERvbWFpbiA9IGJ1Zi5zbGljZShvZmZzZXQsIG9mZnNldCArIGhhc2hMZW5ndGgpXG4gICAgb2Zmc2V0ICs9IGhhc2hMZW5ndGhcbiAgICByZWNvcmQucnJ0eXBlcyA9IHR5cGViaXRtYXAuZGVjb2RlKGJ1Ziwgb2Zmc2V0LCBsZW5ndGggLSAob2Zmc2V0IC0gb2xkT2Zmc2V0KSlcbiAgICBvZmZzZXQgKz0gdHlwZWJpdG1hcC5kZWNvZGUuYnl0ZXNcblxuICAgIHJuc2VjMy5kZWNvZGUuYnl0ZXMgPSBvZmZzZXQgLSBvbGRPZmZzZXRcbiAgICByZXR1cm4gcmVjb3JkXG4gIH0sXG4gIGVuY29kaW5nTGVuZ3RoIChyZWNvcmQpIHtcbiAgICByZXR1cm4gOCArXG4gICAgICByZWNvcmQuc2FsdC5sZW5ndGggK1xuICAgICAgcmVjb3JkLm5leHREb21haW4ubGVuZ3RoICtcbiAgICAgIHR5cGViaXRtYXAuZW5jb2RpbmdMZW5ndGgocmVjb3JkLnJydHlwZXMpXG4gIH1cbn0pXG5cbmNvbnN0IHJkcyA9IGNvZGVjKHtcbiAgZW5jb2RlIChkaWdlc3QsIGJ1Ziwgb2Zmc2V0KSB7XG4gICAgaWYgKCFidWYpIGJ1ZiA9IG5ldyBVaW50OEFycmF5KHJkcy5lbmNvZGluZ0xlbmd0aChkaWdlc3QpKVxuICAgIGlmICghb2Zmc2V0KSBvZmZzZXQgPSAwXG4gICAgY29uc3Qgb2xkT2Zmc2V0ID0gb2Zmc2V0XG5cbiAgICBjb25zdCBkaWdlc3RkYXRhID0gZGlnZXN0LmRpZ2VzdFxuICAgIGlmICghYi5pc1U4QXJyKGRpZ2VzdGRhdGEpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RpZ2VzdCBtdXN0IGJlIGEgQnVmZmVyJylcbiAgICB9XG5cbiAgICBvZmZzZXQgKz0gMiAvLyBMZWF2ZSBzcGFjZSBmb3IgbGVuZ3RoXG4gICAgYi53cml0ZVVJbnQxNkJFKGJ1ZiwgZGlnZXN0LmtleVRhZywgb2Zmc2V0KVxuICAgIG9mZnNldCArPSAyXG4gICAgYnVmW29mZnNldF0gPSBkaWdlc3QuYWxnb3JpdGhtXG4gICAgb2Zmc2V0ICs9IDFcbiAgICBidWZbb2Zmc2V0XSA9IGRpZ2VzdC5kaWdlc3RUeXBlXG4gICAgb2Zmc2V0ICs9IDFcbiAgICBiLmNvcHkoZGlnZXN0ZGF0YSwgYnVmLCBvZmZzZXQsIDAsIGRpZ2VzdGRhdGEubGVuZ3RoKVxuICAgIG9mZnNldCArPSBkaWdlc3RkYXRhLmxlbmd0aFxuXG4gICAgcmRzLmVuY29kZS5ieXRlcyA9IG9mZnNldCAtIG9sZE9mZnNldFxuICAgIGIud3JpdGVVSW50MTZCRShidWYsIHJkcy5lbmNvZGUuYnl0ZXMgLSAyLCBvbGRPZmZzZXQpXG4gICAgcmV0dXJuIGJ1ZlxuICB9LFxuICBkZWNvZGUgKGJ1Ziwgb2Zmc2V0KSB7XG4gICAgaWYgKCFvZmZzZXQpIG9mZnNldCA9IDBcbiAgICBjb25zdCBvbGRPZmZzZXQgPSBvZmZzZXRcblxuICAgIGNvbnN0IGRpZ2VzdCA9IHt9XG4gICAgY29uc3QgbGVuZ3RoID0gYi5yZWFkVUludDE2QkUoYnVmLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IDJcbiAgICBkaWdlc3Qua2V5VGFnID0gYi5yZWFkVUludDE2QkUoYnVmLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IDJcbiAgICBkaWdlc3QuYWxnb3JpdGhtID0gYnVmW29mZnNldF1cbiAgICBvZmZzZXQgKz0gMVxuICAgIGRpZ2VzdC5kaWdlc3RUeXBlID0gYnVmW29mZnNldF1cbiAgICBvZmZzZXQgKz0gMVxuICAgIGRpZ2VzdC5kaWdlc3QgPSBidWYuc2xpY2Uob2Zmc2V0LCBvbGRPZmZzZXQgKyBsZW5ndGggKyAyKVxuICAgIG9mZnNldCArPSBkaWdlc3QuZGlnZXN0Lmxlbmd0aFxuICAgIHJkcy5kZWNvZGUuYnl0ZXMgPSBvZmZzZXQgLSBvbGRPZmZzZXRcbiAgICByZXR1cm4gZGlnZXN0XG4gIH0sXG4gIGVuY29kaW5nTGVuZ3RoIChkaWdlc3QpIHtcbiAgICByZXR1cm4gNiArIGIuYnl0ZWxlbmd0aChkaWdlc3QuZGlnZXN0KVxuICB9XG59KVxuXG5mdW5jdGlvbiByZW5jICh0eXBlKSB7XG4gIHN3aXRjaCAodHlwZS50b1VwcGVyQ2FzZSgpKSB7XG4gICAgY2FzZSAnQSc6IHJldHVybiByYVxuICAgIGNhc2UgJ1BUUic6IHJldHVybiBycHRyXG4gICAgY2FzZSAnQ05BTUUnOiByZXR1cm4gcnB0clxuICAgIGNhc2UgJ0ROQU1FJzogcmV0dXJuIHJwdHJcbiAgICBjYXNlICdUWFQnOiByZXR1cm4gcnR4dFxuICAgIGNhc2UgJ05VTEwnOiByZXR1cm4gcm51bGxcbiAgICBjYXNlICdBQUFBJzogcmV0dXJuIHJhYWFhXG4gICAgY2FzZSAnU1JWJzogcmV0dXJuIHJzcnZcbiAgICBjYXNlICdISU5GTyc6IHJldHVybiByaGluZm9cbiAgICBjYXNlICdDQUEnOiByZXR1cm4gcmNhYVxuICAgIGNhc2UgJ05TJzogcmV0dXJuIHJuc1xuICAgIGNhc2UgJ1NPQSc6IHJldHVybiByc29hXG4gICAgY2FzZSAnTVgnOiByZXR1cm4gcm14XG4gICAgY2FzZSAnT1BUJzogcmV0dXJuIHJvcHRcbiAgICBjYXNlICdETlNLRVknOiByZXR1cm4gcmRuc2tleVxuICAgIGNhc2UgJ1JSU0lHJzogcmV0dXJuIHJycnNpZ1xuICAgIGNhc2UgJ1JQJzogcmV0dXJuIHJycFxuICAgIGNhc2UgJ05TRUMnOiByZXR1cm4gcm5zZWNcbiAgICBjYXNlICdOU0VDMyc6IHJldHVybiBybnNlYzNcbiAgICBjYXNlICdEUyc6IHJldHVybiByZHNcbiAgfVxuICByZXR1cm4gcnVua25vd25cbn1cblxuZXhwb3J0IGNvbnN0IGFuc3dlciA9IGNvZGVjKHtcbiAgZW5jb2RlIChhLCBidWYsIG9mZnNldCkge1xuICAgIGlmICghYnVmKSBidWYgPSBuZXcgVWludDhBcnJheShhbnN3ZXIuZW5jb2RpbmdMZW5ndGgoYSkpXG4gICAgaWYgKCFvZmZzZXQpIG9mZnNldCA9IDBcblxuICAgIGNvbnN0IG9sZE9mZnNldCA9IG9mZnNldFxuXG4gICAgbmFtZS5lbmNvZGUoYS5uYW1lLCBidWYsIG9mZnNldClcbiAgICBvZmZzZXQgKz0gbmFtZS5lbmNvZGUuYnl0ZXNcblxuICAgIGIud3JpdGVVSW50MTZCRShidWYsIHR5cGVzLnRvVHlwZShhLnR5cGUpLCBvZmZzZXQpXG5cbiAgICBpZiAoYS50eXBlLnRvVXBwZXJDYXNlKCkgPT09ICdPUFQnKSB7XG4gICAgICBpZiAoYS5uYW1lICE9PSAnLicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdPUFQgbmFtZSBtdXN0IGJlIHJvb3QuJylcbiAgICAgIH1cbiAgICAgIGIud3JpdGVVSW50MTZCRShidWYsIGEudWRwUGF5bG9hZFNpemUgfHwgNDA5Niwgb2Zmc2V0ICsgMilcbiAgICAgIGJ1ZltvZmZzZXQgKyA0XSA9IGEuZXh0ZW5kZWRSY29kZSB8fCAwXG4gICAgICBidWZbb2Zmc2V0ICsgNV0gPSBhLmVkbnNWZXJzaW9uIHx8IDBcbiAgICAgIGIud3JpdGVVSW50MTZCRShidWYsIGEuZmxhZ3MgfHwgMCwgb2Zmc2V0ICsgNilcblxuICAgICAgb2Zmc2V0ICs9IDhcbiAgICAgIHJvcHQuZW5jb2RlKGEub3B0aW9ucyB8fCBbXSwgYnVmLCBvZmZzZXQpXG4gICAgICBvZmZzZXQgKz0gcm9wdC5lbmNvZGUuYnl0ZXNcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGtsYXNzID0gY2xhc3Nlcy50b0NsYXNzKGEuY2xhc3MgPT09IHVuZGVmaW5lZCA/ICdJTicgOiBhLmNsYXNzKVxuICAgICAgaWYgKGEuZmx1c2gpIGtsYXNzIHw9IEZMVVNIX01BU0sgLy8gdGhlIDFzdCBiaXQgb2YgdGhlIGNsYXNzIGlzIHRoZSBmbHVzaCBiaXRcbiAgICAgIGIud3JpdGVVSW50MTZCRShidWYsIGtsYXNzLCBvZmZzZXQgKyAyKVxuICAgICAgYi53cml0ZVVJbnQzMkJFKGJ1ZiwgYS50dGwgfHwgMCwgb2Zmc2V0ICsgNClcblxuICAgICAgb2Zmc2V0ICs9IDhcbiAgICAgIGNvbnN0IGVuYyA9IHJlbmMoYS50eXBlKVxuICAgICAgZW5jLmVuY29kZShhLmRhdGEsIGJ1Ziwgb2Zmc2V0KVxuICAgICAgb2Zmc2V0ICs9IGVuYy5lbmNvZGUuYnl0ZXNcbiAgICB9XG5cbiAgICBhbnN3ZXIuZW5jb2RlLmJ5dGVzID0gb2Zmc2V0IC0gb2xkT2Zmc2V0XG4gICAgcmV0dXJuIGJ1ZlxuICB9LFxuICBkZWNvZGUgKGJ1Ziwgb2Zmc2V0KSB7XG4gICAgaWYgKCFvZmZzZXQpIG9mZnNldCA9IDBcblxuICAgIGNvbnN0IGEgPSB7fVxuICAgIGNvbnN0IG9sZE9mZnNldCA9IG9mZnNldFxuXG4gICAgYS5uYW1lID0gbmFtZS5kZWNvZGUoYnVmLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IG5hbWUuZGVjb2RlLmJ5dGVzXG4gICAgYS50eXBlID0gdHlwZXMudG9TdHJpbmcoYi5yZWFkVUludDE2QkUoYnVmLCBvZmZzZXQpKVxuICAgIGlmIChhLnR5cGUgPT09ICdPUFQnKSB7XG4gICAgICBhLnVkcFBheWxvYWRTaXplID0gYi5yZWFkVUludDE2QkUoYnVmLCBvZmZzZXQgKyAyKVxuICAgICAgYS5leHRlbmRlZFJjb2RlID0gYnVmW29mZnNldCArIDRdXG4gICAgICBhLmVkbnNWZXJzaW9uID0gYnVmW29mZnNldCArIDVdXG4gICAgICBhLmZsYWdzID0gYi5yZWFkVUludDE2QkUoYnVmLCBvZmZzZXQgKyA2KVxuICAgICAgYS5mbGFnX2RvID0gKChhLmZsYWdzID4+IDE1KSAmIDB4MSkgPT09IDFcbiAgICAgIGEub3B0aW9ucyA9IHJvcHQuZGVjb2RlKGJ1Ziwgb2Zmc2V0ICsgOClcbiAgICAgIG9mZnNldCArPSA4ICsgcm9wdC5kZWNvZGUuYnl0ZXNcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qga2xhc3MgPSBiLnJlYWRVSW50MTZCRShidWYsIG9mZnNldCArIDIpXG4gICAgICBhLnR0bCA9IGIucmVhZFVJbnQzMkJFKGJ1Ziwgb2Zmc2V0ICsgNClcblxuICAgICAgYS5jbGFzcyA9IGNsYXNzZXMudG9TdHJpbmcoa2xhc3MgJiBOT1RfRkxVU0hfTUFTSylcbiAgICAgIGEuZmx1c2ggPSAhIShrbGFzcyAmIEZMVVNIX01BU0spXG5cbiAgICAgIGNvbnN0IGVuYyA9IHJlbmMoYS50eXBlKVxuICAgICAgYS5kYXRhID0gZW5jLmRlY29kZShidWYsIG9mZnNldCArIDgpXG4gICAgICBvZmZzZXQgKz0gOCArIGVuYy5kZWNvZGUuYnl0ZXNcbiAgICB9XG5cbiAgICBhbnN3ZXIuZGVjb2RlLmJ5dGVzID0gb2Zmc2V0IC0gb2xkT2Zmc2V0XG4gICAgcmV0dXJuIGFcbiAgfSxcbiAgZW5jb2RpbmdMZW5ndGggKGEpIHtcbiAgICBjb25zdCBkYXRhID0gKGEuZGF0YSAhPT0gbnVsbCAmJiBhLmRhdGEgIT09IHVuZGVmaW5lZCkgPyBhLmRhdGEgOiBhLm9wdGlvbnNcbiAgICByZXR1cm4gbmFtZS5lbmNvZGluZ0xlbmd0aChhLm5hbWUpICsgOCArIHJlbmMoYS50eXBlKS5lbmNvZGluZ0xlbmd0aChkYXRhKVxuICB9XG59KVxuXG5leHBvcnQgY29uc3QgcXVlc3Rpb24gPSBjb2RlYyh7XG4gIGVuY29kZSAocSwgYnVmLCBvZmZzZXQpIHtcbiAgICBpZiAoIWJ1ZikgYnVmID0gbmV3IFVpbnQ4QXJyYXkocXVlc3Rpb24uZW5jb2RpbmdMZW5ndGgocSkpXG4gICAgaWYgKCFvZmZzZXQpIG9mZnNldCA9IDBcblxuICAgIGNvbnN0IG9sZE9mZnNldCA9IG9mZnNldFxuXG4gICAgbmFtZS5lbmNvZGUocS5uYW1lLCBidWYsIG9mZnNldClcbiAgICBvZmZzZXQgKz0gbmFtZS5lbmNvZGUuYnl0ZXNcblxuICAgIGIud3JpdGVVSW50MTZCRShidWYsIHR5cGVzLnRvVHlwZShxLnR5cGUpLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IDJcblxuICAgIGIud3JpdGVVSW50MTZCRShidWYsIGNsYXNzZXMudG9DbGFzcyhxLmNsYXNzID09PSB1bmRlZmluZWQgPyAnSU4nIDogcS5jbGFzcyksIG9mZnNldClcbiAgICBvZmZzZXQgKz0gMlxuXG4gICAgcXVlc3Rpb24uZW5jb2RlLmJ5dGVzID0gb2Zmc2V0IC0gb2xkT2Zmc2V0XG4gICAgcmV0dXJuIHFcbiAgfSxcbiAgZGVjb2RlIChidWYsIG9mZnNldCkge1xuICAgIGlmICghb2Zmc2V0KSBvZmZzZXQgPSAwXG5cbiAgICBjb25zdCBvbGRPZmZzZXQgPSBvZmZzZXRcbiAgICBjb25zdCBxID0ge31cblxuICAgIHEubmFtZSA9IG5hbWUuZGVjb2RlKGJ1Ziwgb2Zmc2V0KVxuICAgIG9mZnNldCArPSBuYW1lLmRlY29kZS5ieXRlc1xuXG4gICAgcS50eXBlID0gdHlwZXMudG9TdHJpbmcoYi5yZWFkVUludDE2QkUoYnVmLCBvZmZzZXQpKVxuICAgIG9mZnNldCArPSAyXG5cbiAgICBxLmNsYXNzID0gY2xhc3Nlcy50b1N0cmluZyhiLnJlYWRVSW50MTZCRShidWYsIG9mZnNldCkpXG4gICAgb2Zmc2V0ICs9IDJcblxuICAgIGNvbnN0IHF1ID0gISEocS5jbGFzcyAmIFFVX01BU0spXG4gICAgaWYgKHF1KSBxLmNsYXNzICY9IE5PVF9RVV9NQVNLXG5cbiAgICBxdWVzdGlvbi5kZWNvZGUuYnl0ZXMgPSBvZmZzZXQgLSBvbGRPZmZzZXRcbiAgICByZXR1cm4gcVxuICB9LFxuICBlbmNvZGluZ0xlbmd0aCAocSkge1xuICAgIHJldHVybiBuYW1lLmVuY29kaW5nTGVuZ3RoKHEubmFtZSkgKyA0XG4gIH1cbn0pXG5cbmV4cG9ydCB7XG4gIHJzb2EgYXMgc29hLFxuICBydHh0IGFzIHR4dCxcbiAgcm51bGwgYXMgbnVsbCxcbiAgcnVua25vd24gYXMgdW5rbm93bixcbiAgcm5zIGFzIG5zLFxuICByaGluZm8gYXMgaGluZm8sXG4gIHJwdHIgYXMgcHRyLFxuICBycHRyIGFzIGNuYW1lLFxuICBycHRyIGFzIGRuYW1lLFxuICByc3J2IGFzIHNydixcbiAgcmNhYSBhcyBjYWEsXG4gIHJteCBhcyBteCxcbiAgcmEgYXMgYSxcbiAgcmFhYWEgYXMgYWFhYSxcbiAgcm9wdGlvbiBhcyBvcHRpb24sXG4gIHJvcHQgYXMgb3B0LFxuICByZG5za2V5IGFzIGRuc2tleSxcbiAgcnJyc2lnIGFzIHJyc2lnLFxuICBycnAgYXMgcnAsXG4gIHJuc2VjIGFzIG5zZWMsXG4gIHJuc2VjMyBhcyBuc2VjMyxcbiAgcmRzIGFzIGRzLFxuICByZW5jIGFzIGVuY1xufVxuXG5leHBvcnQgY29uc3QgQVVUSE9SSVRBVElWRV9BTlNXRVIgPSAxIDw8IDEwXG5leHBvcnQgY29uc3QgVFJVTkNBVEVEX1JFU1BPTlNFID0gMSA8PCA5XG5leHBvcnQgY29uc3QgUkVDVVJTSU9OX0RFU0lSRUQgPSAxIDw8IDhcbmV4cG9ydCBjb25zdCBSRUNVUlNJT05fQVZBSUxBQkxFID0gMSA8PCA3XG5leHBvcnQgY29uc3QgQVVUSEVOVElDX0RBVEEgPSAxIDw8IDVcbmV4cG9ydCBjb25zdCBDSEVDS0lOR19ESVNBQkxFRCA9IDEgPDwgNFxuZXhwb3J0IGNvbnN0IEROU1NFQ19PSyA9IDEgPDwgMTVcblxuZXhwb3J0IGNvbnN0IHBhY2tldCA9IHtcbiAgZW5jb2RlOiBmdW5jdGlvbiAocmVzdWx0LCBidWYsIG9mZnNldCkge1xuICAgIGNvbnN0IGFsbG9jaW5nID0gIWJ1ZlxuXG4gICAgaWYgKGFsbG9jaW5nKSBidWYgPSBuZXcgVWludDhBcnJheShlbmNvZGluZ0xlbmd0aChyZXN1bHQpKVxuICAgIGlmICghb2Zmc2V0KSBvZmZzZXQgPSAwXG5cbiAgICBjb25zdCBvbGRPZmZzZXQgPSBvZmZzZXRcblxuICAgIGlmICghcmVzdWx0LnF1ZXN0aW9ucykgcmVzdWx0LnF1ZXN0aW9ucyA9IFtdXG4gICAgaWYgKCFyZXN1bHQuYW5zd2VycykgcmVzdWx0LmFuc3dlcnMgPSBbXVxuICAgIGlmICghcmVzdWx0LmF1dGhvcml0aWVzKSByZXN1bHQuYXV0aG9yaXRpZXMgPSBbXVxuICAgIGlmICghcmVzdWx0LmFkZGl0aW9uYWxzKSByZXN1bHQuYWRkaXRpb25hbHMgPSBbXVxuXG4gICAgaGVhZGVyLmVuY29kZShyZXN1bHQsIGJ1Ziwgb2Zmc2V0KVxuICAgIG9mZnNldCArPSBoZWFkZXIuZW5jb2RlLmJ5dGVzXG5cbiAgICBvZmZzZXQgPSBlbmNvZGVMaXN0KHJlc3VsdC5xdWVzdGlvbnMsIHF1ZXN0aW9uLCBidWYsIG9mZnNldClcbiAgICBvZmZzZXQgPSBlbmNvZGVMaXN0KHJlc3VsdC5hbnN3ZXJzLCBhbnN3ZXIsIGJ1Ziwgb2Zmc2V0KVxuICAgIG9mZnNldCA9IGVuY29kZUxpc3QocmVzdWx0LmF1dGhvcml0aWVzLCBhbnN3ZXIsIGJ1Ziwgb2Zmc2V0KVxuICAgIG9mZnNldCA9IGVuY29kZUxpc3QocmVzdWx0LmFkZGl0aW9uYWxzLCBhbnN3ZXIsIGJ1Ziwgb2Zmc2V0KVxuXG4gICAgcGFja2V0LmVuY29kZS5ieXRlcyA9IG9mZnNldCAtIG9sZE9mZnNldFxuXG4gICAgLy8ganVzdCBhIHF1aWNrIHNhbml0eSBjaGVja1xuICAgIGlmIChhbGxvY2luZyAmJiBlbmNvZGUuYnl0ZXMgIT09IGJ1Zi5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBidWYuc2xpY2UoMCwgZW5jb2RlLmJ5dGVzKVxuICAgIH1cblxuICAgIHJldHVybiBidWZcbiAgfSxcbiAgZGVjb2RlOiBmdW5jdGlvbiAoYnVmLCBvZmZzZXQpIHtcbiAgICBpZiAoIW9mZnNldCkgb2Zmc2V0ID0gMFxuXG4gICAgY29uc3Qgb2xkT2Zmc2V0ID0gb2Zmc2V0XG4gICAgY29uc3QgcmVzdWx0ID0gaGVhZGVyLmRlY29kZShidWYsIG9mZnNldClcbiAgICBvZmZzZXQgKz0gaGVhZGVyLmRlY29kZS5ieXRlc1xuXG4gICAgb2Zmc2V0ID0gZGVjb2RlTGlzdChyZXN1bHQucXVlc3Rpb25zLCBxdWVzdGlvbiwgYnVmLCBvZmZzZXQpXG4gICAgb2Zmc2V0ID0gZGVjb2RlTGlzdChyZXN1bHQuYW5zd2VycywgYW5zd2VyLCBidWYsIG9mZnNldClcbiAgICBvZmZzZXQgPSBkZWNvZGVMaXN0KHJlc3VsdC5hdXRob3JpdGllcywgYW5zd2VyLCBidWYsIG9mZnNldClcbiAgICBvZmZzZXQgPSBkZWNvZGVMaXN0KHJlc3VsdC5hZGRpdGlvbmFscywgYW5zd2VyLCBidWYsIG9mZnNldClcblxuICAgIHBhY2tldC5kZWNvZGUuYnl0ZXMgPSBvZmZzZXQgLSBvbGRPZmZzZXRcblxuICAgIHJldHVybiByZXN1bHRcbiAgfSxcbiAgZW5jb2RpbmdMZW5ndGg6IGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICByZXR1cm4gaGVhZGVyLmVuY29kaW5nTGVuZ3RoKHJlc3VsdCkgK1xuICAgICAgZW5jb2RpbmdMZW5ndGhMaXN0KHJlc3VsdC5xdWVzdGlvbnMgfHwgW10sIHF1ZXN0aW9uKSArXG4gICAgICBlbmNvZGluZ0xlbmd0aExpc3QocmVzdWx0LmFuc3dlcnMgfHwgW10sIGFuc3dlcikgK1xuICAgICAgZW5jb2RpbmdMZW5ndGhMaXN0KHJlc3VsdC5hdXRob3JpdGllcyB8fCBbXSwgYW5zd2VyKSArXG4gICAgICBlbmNvZGluZ0xlbmd0aExpc3QocmVzdWx0LmFkZGl0aW9uYWxzIHx8IFtdLCBhbnN3ZXIpXG4gIH1cbn1cbnBhY2tldC5lbmNvZGUuYnl0ZXMgPSAwXG5wYWNrZXQuZGVjb2RlLmJ5dGVzID0gMFxuXG5mdW5jdGlvbiBzYW5pdGl6ZVNpbmdsZSAoaW5wdXQsIHR5cGUpIHtcbiAgaWYgKGlucHV0LnF1ZXN0aW9ucykge1xuICAgIHRocm93IG5ldyBFcnJvcignT25seSBvbmUgLnF1ZXN0aW9uIG9iamVjdCBleHBlY3RlZCBpbnN0ZWFkIG9mIGEgLnF1ZXN0aW9ucyBhcnJheSEnKVxuICB9XG4gIGNvbnN0IHNhbml0aXplZCA9IE9iamVjdC5hc3NpZ24oe1xuICAgIHR5cGVcbiAgfSwgaW5wdXQpXG4gIGlmIChzYW5pdGl6ZWQucXVlc3Rpb24pIHtcbiAgICBzYW5pdGl6ZWQucXVlc3Rpb25zID0gW3Nhbml0aXplZC5xdWVzdGlvbl1cbiAgICBkZWxldGUgc2FuaXRpemVkLnF1ZXN0aW9uXG4gIH1cbiAgcmV0dXJuIHNhbml0aXplZFxufVxuXG5leHBvcnQgY29uc3QgcXVlcnkgPSB7XG4gIGVuY29kZTogZnVuY3Rpb24gKHJlc3VsdCwgYnVmLCBvZmZzZXQpIHtcbiAgICBidWYgPSBwYWNrZXQuZW5jb2RlKHNhbml0aXplU2luZ2xlKHJlc3VsdCwgJ3F1ZXJ5JyksIGJ1Ziwgb2Zmc2V0KVxuICAgIHF1ZXJ5LmVuY29kZS5ieXRlcyA9IHBhY2tldC5lbmNvZGUuYnl0ZXNcbiAgICByZXR1cm4gYnVmXG4gIH0sXG4gIGRlY29kZTogZnVuY3Rpb24gKGJ1Ziwgb2Zmc2V0KSB7XG4gICAgY29uc3QgcmVzID0gcGFja2V0LmRlY29kZShidWYsIG9mZnNldClcbiAgICBxdWVyeS5kZWNvZGUuYnl0ZXMgPSBwYWNrZXQuZGVjb2RlLmJ5dGVzXG4gICAgaWYgKHJlcy5xdWVzdGlvbnMpIHtcbiAgICAgIHJlcy5xdWVzdGlvbiA9IHJlcy5xdWVzdGlvbnNbMF1cbiAgICAgIGRlbGV0ZSByZXMucXVlc3Rpb25zXG4gICAgfVxuICAgIHJldHVybiByZXNcbiAgfSxcbiAgZW5jb2RpbmdMZW5ndGg6IGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICByZXR1cm4gcGFja2V0LmVuY29kaW5nTGVuZ3RoKHNhbml0aXplU2luZ2xlKHJlc3VsdCwgJ3F1ZXJ5JykpXG4gIH1cbn1cbnF1ZXJ5LmVuY29kZS5ieXRlcyA9IDBcbnF1ZXJ5LmRlY29kZS5ieXRlcyA9IDBcblxuZXhwb3J0IGNvbnN0IHJlc3BvbnNlID0ge1xuICBlbmNvZGU6IGZ1bmN0aW9uIChyZXN1bHQsIGJ1Ziwgb2Zmc2V0KSB7XG4gICAgYnVmID0gcGFja2V0LmVuY29kZShzYW5pdGl6ZVNpbmdsZShyZXN1bHQsICdyZXNwb25zZScpLCBidWYsIG9mZnNldClcbiAgICByZXNwb25zZS5lbmNvZGUuYnl0ZXMgPSBwYWNrZXQuZW5jb2RlLmJ5dGVzXG4gICAgcmV0dXJuIGJ1ZlxuICB9LFxuICBkZWNvZGU6IGZ1bmN0aW9uIChidWYsIG9mZnNldCkge1xuICAgIGNvbnN0IHJlcyA9IHBhY2tldC5kZWNvZGUoYnVmLCBvZmZzZXQpXG4gICAgcmVzcG9uc2UuZGVjb2RlLmJ5dGVzID0gcGFja2V0LmRlY29kZS5ieXRlc1xuICAgIGlmIChyZXMucXVlc3Rpb25zKSB7XG4gICAgICByZXMucXVlc3Rpb24gPSByZXMucXVlc3Rpb25zWzBdXG4gICAgICBkZWxldGUgcmVzLnF1ZXN0aW9uc1xuICAgIH1cbiAgICByZXR1cm4gcmVzXG4gIH0sXG4gIGVuY29kaW5nTGVuZ3RoOiBmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgcmV0dXJuIHBhY2tldC5lbmNvZGluZ0xlbmd0aChzYW5pdGl6ZVNpbmdsZShyZXN1bHQsICdyZXNwb25zZScpKVxuICB9XG59XG5yZXNwb25zZS5lbmNvZGUuYnl0ZXMgPSAwXG5yZXNwb25zZS5kZWNvZGUuYnl0ZXMgPSAwXG5cbmV4cG9ydCBjb25zdCBlbmNvZGUgPSBwYWNrZXQuZW5jb2RlXG5leHBvcnQgY29uc3QgZGVjb2RlID0gcGFja2V0LmRlY29kZVxuZXhwb3J0IGNvbnN0IGVuY29kaW5nTGVuZ3RoID0gcGFja2V0LmVuY29kaW5nTGVuZ3RoXG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJlYW1FbmNvZGUgKHJlc3VsdCkge1xuICBjb25zdCBidWYgPSBlbmNvZGUocmVzdWx0KVxuICBjb25zdCBjb21iaW5lID0gbmV3IFVpbnQ4QXJyYXkoMiArIGJ1Zi5ieXRlTGVuZ3RoKVxuICBiLndyaXRlVUludDE2QkUoY29tYmluZSwgYnVmLmJ5dGVMZW5ndGgpXG4gIGIuY29weShidWYsIGNvbWJpbmUsIDIsIDAsIGJ1Zi5sZW5ndGgpXG4gIHN0cmVhbUVuY29kZS5ieXRlcyA9IGNvbWJpbmUuYnl0ZUxlbmd0aFxuICByZXR1cm4gY29tYmluZVxufVxuc3RyZWFtRW5jb2RlLmJ5dGVzID0gMFxuXG5leHBvcnQgZnVuY3Rpb24gc3RyZWFtRGVjb2RlIChzYnVmKSB7XG4gIGNvbnN0IGxlbiA9IGIucmVhZFVJbnQxNkJFKHNidWYsIDApXG4gIGlmIChzYnVmLmJ5dGVMZW5ndGggPCBsZW4gKyAyKSB7XG4gICAgLy8gbm90IGVub3VnaCBkYXRhXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBjb25zdCByZXN1bHQgPSBkZWNvZGUoc2J1Zi5zbGljZSgyKSlcbiAgc3RyZWFtRGVjb2RlLmJ5dGVzID0gZGVjb2RlLmJ5dGVzXG4gIHJldHVybiByZXN1bHRcbn1cbnN0cmVhbURlY29kZS5ieXRlcyA9IDBcblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kaW5nTGVuZ3RoTGlzdCAobGlzdCwgZW5jKSB7XG4gIGxldCBsZW4gPSAwXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykgbGVuICs9IGVuYy5lbmNvZGluZ0xlbmd0aChsaXN0W2ldKVxuICByZXR1cm4gbGVuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVMaXN0IChsaXN0LCBlbmMsIGJ1Ziwgb2Zmc2V0KSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIGVuYy5lbmNvZGUobGlzdFtpXSwgYnVmLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IGVuYy5lbmNvZGUuYnl0ZXNcbiAgfVxuICByZXR1cm4gb2Zmc2V0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVMaXN0IChsaXN0LCBlbmMsIGJ1Ziwgb2Zmc2V0KSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIGxpc3RbaV0gPSBlbmMuZGVjb2RlKGJ1Ziwgb2Zmc2V0KVxuICAgIG9mZnNldCArPSBlbmMuZGVjb2RlLmJ5dGVzXG4gIH1cbiAgcmV0dXJuIG9mZnNldFxufVxuIl0sIm5hbWVzIjpbImlwIiwidHlwZXMiLCJyY29kZXMiLCJvcGNvZGVzIiwiY2xhc3NlcyIsIm9wdGlvbmNvZGVzIiwiYiIsImRlY29kZSIsInRvVXRmOCIsIlFVRVJZX0ZMQUciLCJSRVNQT05TRV9GTEFHIiwiRkxVU0hfTUFTSyIsIk5PVF9GTFVTSF9NQVNLIiwiUVVfTUFTSyIsIk5PVF9RVV9NQVNLIiwiY29kZWMiLCJieXRlcyIsImVuY29kZSIsImVuY29kaW5nTGVuZ3RoIiwibmFtZSIsInN0ciIsImJ1ZiIsIm9mZnNldCIsIlVpbnQ4QXJyYXkiLCJvbGRPZmZzZXQiLCJuIiwicmVwbGFjZSIsImxlbmd0aCIsImxpc3QiLCJzcGxpdCIsImkiLCJsZW4iLCJ3cml0ZSIsInRvdGFsTGVuZ3RoIiwiY29uc3VtZWRCeXRlcyIsImp1bXBlZCIsIkVycm9yIiwicHVzaCIsImp1bXBPZmZzZXQiLCJyZWFkVUludDE2QkUiLCJqb2luIiwiYnl0ZWxlbmd0aCIsInN0cmluZyIsInMiLCJoZWFkZXIiLCJoIiwiZmxhZ3MiLCJ0eXBlIiwid3JpdGVVSW50MTZCRSIsImlkIiwicXVlc3Rpb25zIiwiYW5zd2VycyIsImF1dGhvcml0aWVzIiwiYWRkaXRpb25hbHMiLCJmbGFnX3FyIiwib3Bjb2RlIiwidG9TdHJpbmciLCJmbGFnX2FhIiwiZmxhZ190YyIsImZsYWdfcmQiLCJmbGFnX3JhIiwiZmxhZ196IiwiZmxhZ19hZCIsImZsYWdfY2QiLCJyY29kZSIsIkFycmF5IiwicnVua25vd24iLCJkYXRhIiwiZExlbiIsImNvcHkiLCJzbGljZSIsInJucyIsImRkIiwicnNvYSIsIm1uYW1lIiwicm5hbWUiLCJ3cml0ZVVJbnQzMkJFIiwic2VyaWFsIiwicmVmcmVzaCIsInJldHJ5IiwiZXhwaXJlIiwibWluaW11bSIsInJlYWRVSW50MzJCRSIsInJ0eHQiLCJpc0FycmF5IiwiZnJvbSIsImlzVThBcnIiLCJmb3JFYWNoIiwiZCIsInJlbWFpbmluZyIsInJudWxsIiwicmhpbmZvIiwiY3B1Iiwib3MiLCJycHRyIiwicnNydiIsInByaW9yaXR5Iiwid2VpZ2h0IiwicG9ydCIsInRhcmdldCIsInJjYWEiLCJpc3N1ZXJDcml0aWNhbCIsIklTU1VFUl9DUklUSUNBTCIsInRhZyIsInZhbHVlIiwicm14IiwicHJlZmVyZW5jZSIsImV4Y2hhbmdlIiwicmEiLCJob3N0IiwidjQiLCJyYWFhYSIsInY2IiwiYWxsb2MiLCJzaXplIiwicm9wdGlvbiIsIm9wdGlvbiIsImNvZGUiLCJ0b0NvZGUiLCJzcGwiLCJzb3VyY2VQcmVmaXhMZW5ndGgiLCJmYW0iLCJmYW1pbHkiLCJmYW1pbHlPZiIsImlwQnVmIiwiaXBMZW4iLCJNYXRoIiwiY2VpbCIsInNjb3BlUHJlZml4TGVuZ3RoIiwidGltZW91dCIsImZpbGwiLCJ0YWdzTGVuIiwidGFncyIsInBhZGRlZCIsInJvcHQiLCJvcHRpb25zIiwicmRsZW4iLCJlbmNvZGluZ0xlbmd0aExpc3QiLCJlbmNvZGVMaXN0IiwibyIsInJkbnNrZXkiLCJrZXkiLCJrZXlkYXRhIiwiUFJPVE9DT0xfRE5TU0VDIiwiYWxnb3JpdGhtIiwiWk9ORV9LRVkiLCJTRUNVUkVfRU5UUllQT0lOVCIsInJycnNpZyIsInNpZyIsInNpZ25hdHVyZSIsInRvVHlwZSIsInR5cGVDb3ZlcmVkIiwibGFiZWxzIiwib3JpZ2luYWxUVEwiLCJleHBpcmF0aW9uIiwiaW5jZXB0aW9uIiwia2V5VGFnIiwic2lnbmVyc05hbWUiLCJycnAiLCJtYm94IiwidHh0IiwidHlwZWJpdG1hcCIsInR5cGVsaXN0IiwidHlwZXNCeVdpbmRvdyIsInR5cGVpZCIsInVuZGVmaW5lZCIsIndpbmRvd0J1ZiIsIndpbmRvdyIsIndpbmRvd0xlbmd0aCIsImoiLCJleHRlbnRzIiwibWF4Iiwicm5zZWMiLCJyZWNvcmQiLCJuZXh0RG9tYWluIiwicnJ0eXBlcyIsInJuc2VjMyIsInNhbHQiLCJpdGVyYXRpb25zIiwic2FsdExlbmd0aCIsImhhc2hMZW5ndGgiLCJyZHMiLCJkaWdlc3QiLCJkaWdlc3RkYXRhIiwiZGlnZXN0VHlwZSIsInJlbmMiLCJ0b1VwcGVyQ2FzZSIsImFuc3dlciIsImEiLCJ1ZHBQYXlsb2FkU2l6ZSIsImV4dGVuZGVkUmNvZGUiLCJlZG5zVmVyc2lvbiIsImtsYXNzIiwidG9DbGFzcyIsImNsYXNzIiwiZmx1c2giLCJ0dGwiLCJlbmMiLCJmbGFnX2RvIiwicXVlc3Rpb24iLCJxIiwicXUiLCJzb2EiLCJudWxsIiwidW5rbm93biIsIm5zIiwiaGluZm8iLCJwdHIiLCJjbmFtZSIsImRuYW1lIiwic3J2IiwiY2FhIiwibXgiLCJhYWFhIiwib3B0IiwiZG5za2V5IiwicnJzaWciLCJycCIsIm5zZWMiLCJuc2VjMyIsImRzIiwiQVVUSE9SSVRBVElWRV9BTlNXRVIiLCJUUlVOQ0FURURfUkVTUE9OU0UiLCJSRUNVUlNJT05fREVTSVJFRCIsIlJFQ1VSU0lPTl9BVkFJTEFCTEUiLCJBVVRIRU5USUNfREFUQSIsIkNIRUNLSU5HX0RJU0FCTEVEIiwiRE5TU0VDX09LIiwicGFja2V0IiwicmVzdWx0IiwiYWxsb2NpbmciLCJkZWNvZGVMaXN0Iiwic2FuaXRpemVTaW5nbGUiLCJpbnB1dCIsInNhbml0aXplZCIsIk9iamVjdCIsImFzc2lnbiIsInF1ZXJ5IiwicmVzIiwicmVzcG9uc2UiLCJzdHJlYW1FbmNvZGUiLCJjb21iaW5lIiwiYnl0ZUxlbmd0aCIsInN0cmVhbURlY29kZSIsInNidWYiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@leichtgewicht/dns-packet/index.mjs\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/@leichtgewicht/dns-packet/opcodes.mjs":
|
|
/*!************************************************************!*\
|
|
!*** ./node_modules/@leichtgewicht/dns-packet/opcodes.mjs ***!
|
|
\************************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ toOpcode: () => (/* binding */ toOpcode),\n/* harmony export */ toString: () => (/* binding */ toString)\n/* harmony export */ });\n/*\n * Traditional DNS header OPCODEs (4-bits) defined by IANA in\n * https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-5\n */ function toString(opcode) {\n switch(opcode){\n case 0:\n return \"QUERY\";\n case 1:\n return \"IQUERY\";\n case 2:\n return \"STATUS\";\n case 3:\n return \"OPCODE_3\";\n case 4:\n return \"NOTIFY\";\n case 5:\n return \"UPDATE\";\n case 6:\n return \"OPCODE_6\";\n case 7:\n return \"OPCODE_7\";\n case 8:\n return \"OPCODE_8\";\n case 9:\n return \"OPCODE_9\";\n case 10:\n return \"OPCODE_10\";\n case 11:\n return \"OPCODE_11\";\n case 12:\n return \"OPCODE_12\";\n case 13:\n return \"OPCODE_13\";\n case 14:\n return \"OPCODE_14\";\n case 15:\n return \"OPCODE_15\";\n }\n return \"OPCODE_\" + opcode;\n}\nfunction toOpcode(code) {\n switch(code.toUpperCase()){\n case \"QUERY\":\n return 0;\n case \"IQUERY\":\n return 1;\n case \"STATUS\":\n return 2;\n case \"OPCODE_3\":\n return 3;\n case \"NOTIFY\":\n return 4;\n case \"UPDATE\":\n return 5;\n case \"OPCODE_6\":\n return 6;\n case \"OPCODE_7\":\n return 7;\n case \"OPCODE_8\":\n return 8;\n case \"OPCODE_9\":\n return 9;\n case \"OPCODE_10\":\n return 10;\n case \"OPCODE_11\":\n return 11;\n case \"OPCODE_12\":\n return 12;\n case \"OPCODE_13\":\n return 13;\n case \"OPCODE_14\":\n return 14;\n case \"OPCODE_15\":\n return 15;\n }\n return 0;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQGxlaWNodGdld2ljaHQvZG5zLXBhY2tldC9vcGNvZGVzLm1qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Q0FHQyxHQUVNLFNBQVNBLFNBQVVDLE1BQU07SUFDOUIsT0FBUUE7UUFDTixLQUFLO1lBQUcsT0FBTztRQUNmLEtBQUs7WUFBRyxPQUFPO1FBQ2YsS0FBSztZQUFHLE9BQU87UUFDZixLQUFLO1lBQUcsT0FBTztRQUNmLEtBQUs7WUFBRyxPQUFPO1FBQ2YsS0FBSztZQUFHLE9BQU87UUFDZixLQUFLO1lBQUcsT0FBTztRQUNmLEtBQUs7WUFBRyxPQUFPO1FBQ2YsS0FBSztZQUFHLE9BQU87UUFDZixLQUFLO1lBQUcsT0FBTztRQUNmLEtBQUs7WUFBSSxPQUFPO1FBQ2hCLEtBQUs7WUFBSSxPQUFPO1FBQ2hCLEtBQUs7WUFBSSxPQUFPO1FBQ2hCLEtBQUs7WUFBSSxPQUFPO1FBQ2hCLEtBQUs7WUFBSSxPQUFPO1FBQ2hCLEtBQUs7WUFBSSxPQUFPO0lBQ2xCO0lBQ0EsT0FBTyxZQUFZQTtBQUNyQjtBQUVPLFNBQVNDLFNBQVVDLElBQUk7SUFDNUIsT0FBUUEsS0FBS0MsV0FBVztRQUN0QixLQUFLO1lBQVMsT0FBTztRQUNyQixLQUFLO1lBQVUsT0FBTztRQUN0QixLQUFLO1lBQVUsT0FBTztRQUN0QixLQUFLO1lBQVksT0FBTztRQUN4QixLQUFLO1lBQVUsT0FBTztRQUN0QixLQUFLO1lBQVUsT0FBTztRQUN0QixLQUFLO1lBQVksT0FBTztRQUN4QixLQUFLO1lBQVksT0FBTztRQUN4QixLQUFLO1lBQVksT0FBTztRQUN4QixLQUFLO1lBQVksT0FBTztRQUN4QixLQUFLO1lBQWEsT0FBTztRQUN6QixLQUFLO1lBQWEsT0FBTztRQUN6QixLQUFLO1lBQWEsT0FBTztRQUN6QixLQUFLO1lBQWEsT0FBTztRQUN6QixLQUFLO1lBQWEsT0FBTztRQUN6QixLQUFLO1lBQWEsT0FBTztJQUMzQjtJQUNBLE9BQU87QUFDVCIsInNvdXJjZXMiOlsid2VicGFjazovL2ZsdXNoLW5vdGVzLy4vbm9kZV9tb2R1bGVzL0BsZWljaHRnZXdpY2h0L2Rucy1wYWNrZXQvb3Bjb2Rlcy5tanM/YTcwMCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogVHJhZGl0aW9uYWwgRE5TIGhlYWRlciBPUENPREVzICg0LWJpdHMpIGRlZmluZWQgYnkgSUFOQSBpblxuICogaHR0cHM6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvZG5zLXBhcmFtZXRlcnMvZG5zLXBhcmFtZXRlcnMueGh0bWwjZG5zLXBhcmFtZXRlcnMtNVxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiB0b1N0cmluZyAob3Bjb2RlKSB7XG4gIHN3aXRjaCAob3Bjb2RlKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gJ1FVRVJZJ1xuICAgIGNhc2UgMTogcmV0dXJuICdJUVVFUlknXG4gICAgY2FzZSAyOiByZXR1cm4gJ1NUQVRVUydcbiAgICBjYXNlIDM6IHJldHVybiAnT1BDT0RFXzMnXG4gICAgY2FzZSA0OiByZXR1cm4gJ05PVElGWSdcbiAgICBjYXNlIDU6IHJldHVybiAnVVBEQVRFJ1xuICAgIGNhc2UgNjogcmV0dXJuICdPUENPREVfNidcbiAgICBjYXNlIDc6IHJldHVybiAnT1BDT0RFXzcnXG4gICAgY2FzZSA4OiByZXR1cm4gJ09QQ09ERV84J1xuICAgIGNhc2UgOTogcmV0dXJuICdPUENPREVfOSdcbiAgICBjYXNlIDEwOiByZXR1cm4gJ09QQ09ERV8xMCdcbiAgICBjYXNlIDExOiByZXR1cm4gJ09QQ09ERV8xMSdcbiAgICBjYXNlIDEyOiByZXR1cm4gJ09QQ09ERV8xMidcbiAgICBjYXNlIDEzOiByZXR1cm4gJ09QQ09ERV8xMydcbiAgICBjYXNlIDE0OiByZXR1cm4gJ09QQ09ERV8xNCdcbiAgICBjYXNlIDE1OiByZXR1cm4gJ09QQ09ERV8xNSdcbiAgfVxuICByZXR1cm4gJ09QQ09ERV8nICsgb3Bjb2RlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b09wY29kZSAoY29kZSkge1xuICBzd2l0Y2ggKGNvZGUudG9VcHBlckNhc2UoKSkge1xuICAgIGNhc2UgJ1FVRVJZJzogcmV0dXJuIDBcbiAgICBjYXNlICdJUVVFUlknOiByZXR1cm4gMVxuICAgIGNhc2UgJ1NUQVRVUyc6IHJldHVybiAyXG4gICAgY2FzZSAnT1BDT0RFXzMnOiByZXR1cm4gM1xuICAgIGNhc2UgJ05PVElGWSc6IHJldHVybiA0XG4gICAgY2FzZSAnVVBEQVRFJzogcmV0dXJuIDVcbiAgICBjYXNlICdPUENPREVfNic6IHJldHVybiA2XG4gICAgY2FzZSAnT1BDT0RFXzcnOiByZXR1cm4gN1xuICAgIGNhc2UgJ09QQ09ERV84JzogcmV0dXJuIDhcbiAgICBjYXNlICdPUENPREVfOSc6IHJldHVybiA5XG4gICAgY2FzZSAnT1BDT0RFXzEwJzogcmV0dXJuIDEwXG4gICAgY2FzZSAnT1BDT0RFXzExJzogcmV0dXJuIDExXG4gICAgY2FzZSAnT1BDT0RFXzEyJzogcmV0dXJuIDEyXG4gICAgY2FzZSAnT1BDT0RFXzEzJzogcmV0dXJuIDEzXG4gICAgY2FzZSAnT1BDT0RFXzE0JzogcmV0dXJuIDE0XG4gICAgY2FzZSAnT1BDT0RFXzE1JzogcmV0dXJuIDE1XG4gIH1cbiAgcmV0dXJuIDBcbn1cbiJdLCJuYW1lcyI6WyJ0b1N0cmluZyIsIm9wY29kZSIsInRvT3Bjb2RlIiwiY29kZSIsInRvVXBwZXJDYXNlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@leichtgewicht/dns-packet/opcodes.mjs\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/@leichtgewicht/dns-packet/optioncodes.mjs":
|
|
/*!****************************************************************!*\
|
|
!*** ./node_modules/@leichtgewicht/dns-packet/optioncodes.mjs ***!
|
|
\****************************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ toCode: () => (/* binding */ toCode),\n/* harmony export */ toString: () => (/* binding */ toString)\n/* harmony export */ });\nfunction toString(type) {\n switch(type){\n // list at\n // https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-11\n case 1:\n return \"LLQ\";\n case 2:\n return \"UL\";\n case 3:\n return \"NSID\";\n case 5:\n return \"DAU\";\n case 6:\n return \"DHU\";\n case 7:\n return \"N3U\";\n case 8:\n return \"CLIENT_SUBNET\";\n case 9:\n return \"EXPIRE\";\n case 10:\n return \"COOKIE\";\n case 11:\n return \"TCP_KEEPALIVE\";\n case 12:\n return \"PADDING\";\n case 13:\n return \"CHAIN\";\n case 14:\n return \"KEY_TAG\";\n case 26946:\n return \"DEVICEID\";\n }\n if (type < 0) {\n return null;\n }\n return `OPTION_${type}`;\n}\nfunction toCode(name) {\n if (typeof name === \"number\") {\n return name;\n }\n if (!name) {\n return -1;\n }\n switch(name.toUpperCase()){\n case \"OPTION_0\":\n return 0;\n case \"LLQ\":\n return 1;\n case \"UL\":\n return 2;\n case \"NSID\":\n return 3;\n case \"OPTION_4\":\n return 4;\n case \"DAU\":\n return 5;\n case \"DHU\":\n return 6;\n case \"N3U\":\n return 7;\n case \"CLIENT_SUBNET\":\n return 8;\n case \"EXPIRE\":\n return 9;\n case \"COOKIE\":\n return 10;\n case \"TCP_KEEPALIVE\":\n return 11;\n case \"PADDING\":\n return 12;\n case \"CHAIN\":\n return 13;\n case \"KEY_TAG\":\n return 14;\n case \"DEVICEID\":\n return 26946;\n case \"OPTION_65535\":\n return 65535;\n }\n const m = name.match(/_(\\d+)$/);\n if (m) {\n return parseInt(m[1], 10);\n }\n return -1;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQGxlaWNodGdld2ljaHQvZG5zLXBhY2tldC9vcHRpb25jb2Rlcy5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxTQUFTQSxTQUFVQyxJQUFJO0lBQzVCLE9BQVFBO1FBQ04sVUFBVTtRQUNWLHlGQUF5RjtRQUN6RixLQUFLO1lBQUcsT0FBTztRQUNmLEtBQUs7WUFBRyxPQUFPO1FBQ2YsS0FBSztZQUFHLE9BQU87UUFDZixLQUFLO1lBQUcsT0FBTztRQUNmLEtBQUs7WUFBRyxPQUFPO1FBQ2YsS0FBSztZQUFHLE9BQU87UUFDZixLQUFLO1lBQUcsT0FBTztRQUNmLEtBQUs7WUFBRyxPQUFPO1FBQ2YsS0FBSztZQUFJLE9BQU87UUFDaEIsS0FBSztZQUFJLE9BQU87UUFDaEIsS0FBSztZQUFJLE9BQU87UUFDaEIsS0FBSztZQUFJLE9BQU87UUFDaEIsS0FBSztZQUFJLE9BQU87UUFDaEIsS0FBSztZQUFPLE9BQU87SUFDckI7SUFDQSxJQUFJQSxPQUFPLEdBQUc7UUFDWixPQUFPO0lBQ1Q7SUFDQSxPQUFPLENBQUMsT0FBTyxFQUFFQSxLQUFLLENBQUM7QUFDekI7QUFFTyxTQUFTQyxPQUFRQyxJQUFJO0lBQzFCLElBQUksT0FBT0EsU0FBUyxVQUFVO1FBQzVCLE9BQU9BO0lBQ1Q7SUFDQSxJQUFJLENBQUNBLE1BQU07UUFDVCxPQUFPLENBQUM7SUFDVjtJQUNBLE9BQVFBLEtBQUtDLFdBQVc7UUFDdEIsS0FBSztZQUFZLE9BQU87UUFDeEIsS0FBSztZQUFPLE9BQU87UUFDbkIsS0FBSztZQUFNLE9BQU87UUFDbEIsS0FBSztZQUFRLE9BQU87UUFDcEIsS0FBSztZQUFZLE9BQU87UUFDeEIsS0FBSztZQUFPLE9BQU87UUFDbkIsS0FBSztZQUFPLE9BQU87UUFDbkIsS0FBSztZQUFPLE9BQU87UUFDbkIsS0FBSztZQUFpQixPQUFPO1FBQzdCLEtBQUs7WUFBVSxPQUFPO1FBQ3RCLEtBQUs7WUFBVSxPQUFPO1FBQ3RCLEtBQUs7WUFBaUIsT0FBTztRQUM3QixLQUFLO1lBQVcsT0FBTztRQUN2QixLQUFLO1lBQVMsT0FBTztRQUNyQixLQUFLO1lBQVcsT0FBTztRQUN2QixLQUFLO1lBQVksT0FBTztRQUN4QixLQUFLO1lBQWdCLE9BQU87SUFDOUI7SUFDQSxNQUFNQyxJQUFJRixLQUFLRyxLQUFLLENBQUM7SUFDckIsSUFBSUQsR0FBRztRQUNMLE9BQU9FLFNBQVNGLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDeEI7SUFDQSxPQUFPLENBQUM7QUFDViIsInNvdXJjZXMiOlsid2VicGFjazovL2ZsdXNoLW5vdGVzLy4vbm9kZV9tb2R1bGVzL0BsZWljaHRnZXdpY2h0L2Rucy1wYWNrZXQvb3B0aW9uY29kZXMubWpzPzJjMGEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHRvU3RyaW5nICh0eXBlKSB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIC8vIGxpc3QgYXRcbiAgICAvLyBodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9kbnMtcGFyYW1ldGVycy9kbnMtcGFyYW1ldGVycy54aHRtbCNkbnMtcGFyYW1ldGVycy0xMVxuICAgIGNhc2UgMTogcmV0dXJuICdMTFEnXG4gICAgY2FzZSAyOiByZXR1cm4gJ1VMJ1xuICAgIGNhc2UgMzogcmV0dXJuICdOU0lEJ1xuICAgIGNhc2UgNTogcmV0dXJuICdEQVUnXG4gICAgY2FzZSA2OiByZXR1cm4gJ0RIVSdcbiAgICBjYXNlIDc6IHJldHVybiAnTjNVJ1xuICAgIGNhc2UgODogcmV0dXJuICdDTElFTlRfU1VCTkVUJ1xuICAgIGNhc2UgOTogcmV0dXJuICdFWFBJUkUnXG4gICAgY2FzZSAxMDogcmV0dXJuICdDT09LSUUnXG4gICAgY2FzZSAxMTogcmV0dXJuICdUQ1BfS0VFUEFMSVZFJ1xuICAgIGNhc2UgMTI6IHJldHVybiAnUEFERElORydcbiAgICBjYXNlIDEzOiByZXR1cm4gJ0NIQUlOJ1xuICAgIGNhc2UgMTQ6IHJldHVybiAnS0VZX1RBRydcbiAgICBjYXNlIDI2OTQ2OiByZXR1cm4gJ0RFVklDRUlEJ1xuICB9XG4gIGlmICh0eXBlIDwgMCkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgcmV0dXJuIGBPUFRJT05fJHt0eXBlfWBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvQ29kZSAobmFtZSkge1xuICBpZiAodHlwZW9mIG5hbWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIG5hbWVcbiAgfVxuICBpZiAoIW5hbWUpIHtcbiAgICByZXR1cm4gLTFcbiAgfVxuICBzd2l0Y2ggKG5hbWUudG9VcHBlckNhc2UoKSkge1xuICAgIGNhc2UgJ09QVElPTl8wJzogcmV0dXJuIDBcbiAgICBjYXNlICdMTFEnOiByZXR1cm4gMVxuICAgIGNhc2UgJ1VMJzogcmV0dXJuIDJcbiAgICBjYXNlICdOU0lEJzogcmV0dXJuIDNcbiAgICBjYXNlICdPUFRJT05fNCc6IHJldHVybiA0XG4gICAgY2FzZSAnREFVJzogcmV0dXJuIDVcbiAgICBjYXNlICdESFUnOiByZXR1cm4gNlxuICAgIGNhc2UgJ04zVSc6IHJldHVybiA3XG4gICAgY2FzZSAnQ0xJRU5UX1NVQk5FVCc6IHJldHVybiA4XG4gICAgY2FzZSAnRVhQSVJFJzogcmV0dXJuIDlcbiAgICBjYXNlICdDT09LSUUnOiByZXR1cm4gMTBcbiAgICBjYXNlICdUQ1BfS0VFUEFMSVZFJzogcmV0dXJuIDExXG4gICAgY2FzZSAnUEFERElORyc6IHJldHVybiAxMlxuICAgIGNhc2UgJ0NIQUlOJzogcmV0dXJuIDEzXG4gICAgY2FzZSAnS0VZX1RBRyc6IHJldHVybiAxNFxuICAgIGNhc2UgJ0RFVklDRUlEJzogcmV0dXJuIDI2OTQ2XG4gICAgY2FzZSAnT1BUSU9OXzY1NTM1JzogcmV0dXJuIDY1NTM1XG4gIH1cbiAgY29uc3QgbSA9IG5hbWUubWF0Y2goL18oXFxkKykkLylcbiAgaWYgKG0pIHtcbiAgICByZXR1cm4gcGFyc2VJbnQobVsxXSwgMTApXG4gIH1cbiAgcmV0dXJuIC0xXG59XG4iXSwibmFtZXMiOlsidG9TdHJpbmciLCJ0eXBlIiwidG9Db2RlIiwibmFtZSIsInRvVXBwZXJDYXNlIiwibSIsIm1hdGNoIiwicGFyc2VJbnQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@leichtgewicht/dns-packet/optioncodes.mjs\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/@leichtgewicht/dns-packet/rcodes.mjs":
|
|
/*!***********************************************************!*\
|
|
!*** ./node_modules/@leichtgewicht/dns-packet/rcodes.mjs ***!
|
|
\***********************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ toRcode: () => (/* binding */ toRcode),\n/* harmony export */ toString: () => (/* binding */ toString)\n/* harmony export */ });\n/*\n * Traditional DNS header RCODEs (4-bits) defined by IANA in\n * https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml\n */ function toString(rcode) {\n switch(rcode){\n case 0:\n return \"NOERROR\";\n case 1:\n return \"FORMERR\";\n case 2:\n return \"SERVFAIL\";\n case 3:\n return \"NXDOMAIN\";\n case 4:\n return \"NOTIMP\";\n case 5:\n return \"REFUSED\";\n case 6:\n return \"YXDOMAIN\";\n case 7:\n return \"YXRRSET\";\n case 8:\n return \"NXRRSET\";\n case 9:\n return \"NOTAUTH\";\n case 10:\n return \"NOTZONE\";\n case 11:\n return \"RCODE_11\";\n case 12:\n return \"RCODE_12\";\n case 13:\n return \"RCODE_13\";\n case 14:\n return \"RCODE_14\";\n case 15:\n return \"RCODE_15\";\n }\n return \"RCODE_\" + rcode;\n}\nfunction toRcode(code) {\n switch(code.toUpperCase()){\n case \"NOERROR\":\n return 0;\n case \"FORMERR\":\n return 1;\n case \"SERVFAIL\":\n return 2;\n case \"NXDOMAIN\":\n return 3;\n case \"NOTIMP\":\n return 4;\n case \"REFUSED\":\n return 5;\n case \"YXDOMAIN\":\n return 6;\n case \"YXRRSET\":\n return 7;\n case \"NXRRSET\":\n return 8;\n case \"NOTAUTH\":\n return 9;\n case \"NOTZONE\":\n return 10;\n case \"RCODE_11\":\n return 11;\n case \"RCODE_12\":\n return 12;\n case \"RCODE_13\":\n return 13;\n case \"RCODE_14\":\n return 14;\n case \"RCODE_15\":\n return 15;\n }\n return 0;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQGxlaWNodGdld2ljaHQvZG5zLXBhY2tldC9yY29kZXMubWpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7OztDQUdDLEdBRU0sU0FBU0EsU0FBVUMsS0FBSztJQUM3QixPQUFRQTtRQUNOLEtBQUs7WUFBRyxPQUFPO1FBQ2YsS0FBSztZQUFHLE9BQU87UUFDZixLQUFLO1lBQUcsT0FBTztRQUNmLEtBQUs7WUFBRyxPQUFPO1FBQ2YsS0FBSztZQUFHLE9BQU87UUFDZixLQUFLO1lBQUcsT0FBTztRQUNmLEtBQUs7WUFBRyxPQUFPO1FBQ2YsS0FBSztZQUFHLE9BQU87UUFDZixLQUFLO1lBQUcsT0FBTztRQUNmLEtBQUs7WUFBRyxPQUFPO1FBQ2YsS0FBSztZQUFJLE9BQU87UUFDaEIsS0FBSztZQUFJLE9BQU87UUFDaEIsS0FBSztZQUFJLE9BQU87UUFDaEIsS0FBSztZQUFJLE9BQU87UUFDaEIsS0FBSztZQUFJLE9BQU87UUFDaEIsS0FBSztZQUFJLE9BQU87SUFDbEI7SUFDQSxPQUFPLFdBQVdBO0FBQ3BCO0FBRU8sU0FBU0MsUUFBU0MsSUFBSTtJQUMzQixPQUFRQSxLQUFLQyxXQUFXO1FBQ3RCLEtBQUs7WUFBVyxPQUFPO1FBQ3ZCLEtBQUs7WUFBVyxPQUFPO1FBQ3ZCLEtBQUs7WUFBWSxPQUFPO1FBQ3hCLEtBQUs7WUFBWSxPQUFPO1FBQ3hCLEtBQUs7WUFBVSxPQUFPO1FBQ3RCLEtBQUs7WUFBVyxPQUFPO1FBQ3ZCLEtBQUs7WUFBWSxPQUFPO1FBQ3hCLEtBQUs7WUFBVyxPQUFPO1FBQ3ZCLEtBQUs7WUFBVyxPQUFPO1FBQ3ZCLEtBQUs7WUFBVyxPQUFPO1FBQ3ZCLEtBQUs7WUFBVyxPQUFPO1FBQ3ZCLEtBQUs7WUFBWSxPQUFPO1FBQ3hCLEtBQUs7WUFBWSxPQUFPO1FBQ3hCLEtBQUs7WUFBWSxPQUFPO1FBQ3hCLEtBQUs7WUFBWSxPQUFPO1FBQ3hCLEtBQUs7WUFBWSxPQUFPO0lBQzFCO0lBQ0EsT0FBTztBQUNUIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZmx1c2gtbm90ZXMvLi9ub2RlX21vZHVsZXMvQGxlaWNodGdld2ljaHQvZG5zLXBhY2tldC9yY29kZXMubWpzPzFjMzMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFRyYWRpdGlvbmFsIEROUyBoZWFkZXIgUkNPREVzICg0LWJpdHMpIGRlZmluZWQgYnkgSUFOQSBpblxuICogaHR0cHM6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvZG5zLXBhcmFtZXRlcnMvZG5zLXBhcmFtZXRlcnMueGh0bWxcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gdG9TdHJpbmcgKHJjb2RlKSB7XG4gIHN3aXRjaCAocmNvZGUpIHtcbiAgICBjYXNlIDA6IHJldHVybiAnTk9FUlJPUidcbiAgICBjYXNlIDE6IHJldHVybiAnRk9STUVSUidcbiAgICBjYXNlIDI6IHJldHVybiAnU0VSVkZBSUwnXG4gICAgY2FzZSAzOiByZXR1cm4gJ05YRE9NQUlOJ1xuICAgIGNhc2UgNDogcmV0dXJuICdOT1RJTVAnXG4gICAgY2FzZSA1OiByZXR1cm4gJ1JFRlVTRUQnXG4gICAgY2FzZSA2OiByZXR1cm4gJ1lYRE9NQUlOJ1xuICAgIGNhc2UgNzogcmV0dXJuICdZWFJSU0VUJ1xuICAgIGNhc2UgODogcmV0dXJuICdOWFJSU0VUJ1xuICAgIGNhc2UgOTogcmV0dXJuICdOT1RBVVRIJ1xuICAgIGNhc2UgMTA6IHJldHVybiAnTk9UWk9ORSdcbiAgICBjYXNlIDExOiByZXR1cm4gJ1JDT0RFXzExJ1xuICAgIGNhc2UgMTI6IHJldHVybiAnUkNPREVfMTInXG4gICAgY2FzZSAxMzogcmV0dXJuICdSQ09ERV8xMydcbiAgICBjYXNlIDE0OiByZXR1cm4gJ1JDT0RFXzE0J1xuICAgIGNhc2UgMTU6IHJldHVybiAnUkNPREVfMTUnXG4gIH1cbiAgcmV0dXJuICdSQ09ERV8nICsgcmNvZGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvUmNvZGUgKGNvZGUpIHtcbiAgc3dpdGNoIChjb2RlLnRvVXBwZXJDYXNlKCkpIHtcbiAgICBjYXNlICdOT0VSUk9SJzogcmV0dXJuIDBcbiAgICBjYXNlICdGT1JNRVJSJzogcmV0dXJuIDFcbiAgICBjYXNlICdTRVJWRkFJTCc6IHJldHVybiAyXG4gICAgY2FzZSAnTlhET01BSU4nOiByZXR1cm4gM1xuICAgIGNhc2UgJ05PVElNUCc6IHJldHVybiA0XG4gICAgY2FzZSAnUkVGVVNFRCc6IHJldHVybiA1XG4gICAgY2FzZSAnWVhET01BSU4nOiByZXR1cm4gNlxuICAgIGNhc2UgJ1lYUlJTRVQnOiByZXR1cm4gN1xuICAgIGNhc2UgJ05YUlJTRVQnOiByZXR1cm4gOFxuICAgIGNhc2UgJ05PVEFVVEgnOiByZXR1cm4gOVxuICAgIGNhc2UgJ05PVFpPTkUnOiByZXR1cm4gMTBcbiAgICBjYXNlICdSQ09ERV8xMSc6IHJldHVybiAxMVxuICAgIGNhc2UgJ1JDT0RFXzEyJzogcmV0dXJuIDEyXG4gICAgY2FzZSAnUkNPREVfMTMnOiByZXR1cm4gMTNcbiAgICBjYXNlICdSQ09ERV8xNCc6IHJldHVybiAxNFxuICAgIGNhc2UgJ1JDT0RFXzE1JzogcmV0dXJuIDE1XG4gIH1cbiAgcmV0dXJuIDBcbn1cbiJdLCJuYW1lcyI6WyJ0b1N0cmluZyIsInJjb2RlIiwidG9SY29kZSIsImNvZGUiLCJ0b1VwcGVyQ2FzZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@leichtgewicht/dns-packet/rcodes.mjs\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/@leichtgewicht/dns-packet/types.mjs":
|
|
/*!**********************************************************!*\
|
|
!*** ./node_modules/@leichtgewicht/dns-packet/types.mjs ***!
|
|
\**********************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ toString: () => (/* binding */ toString),\n/* harmony export */ toType: () => (/* binding */ toType)\n/* harmony export */ });\nfunction toString(type) {\n switch(type){\n case 1:\n return \"A\";\n case 10:\n return \"NULL\";\n case 28:\n return \"AAAA\";\n case 18:\n return \"AFSDB\";\n case 42:\n return \"APL\";\n case 257:\n return \"CAA\";\n case 60:\n return \"CDNSKEY\";\n case 59:\n return \"CDS\";\n case 37:\n return \"CERT\";\n case 5:\n return \"CNAME\";\n case 49:\n return \"DHCID\";\n case 32769:\n return \"DLV\";\n case 39:\n return \"DNAME\";\n case 48:\n return \"DNSKEY\";\n case 43:\n return \"DS\";\n case 55:\n return \"HIP\";\n case 13:\n return \"HINFO\";\n case 45:\n return \"IPSECKEY\";\n case 25:\n return \"KEY\";\n case 36:\n return \"KX\";\n case 29:\n return \"LOC\";\n case 15:\n return \"MX\";\n case 35:\n return \"NAPTR\";\n case 2:\n return \"NS\";\n case 47:\n return \"NSEC\";\n case 50:\n return \"NSEC3\";\n case 51:\n return \"NSEC3PARAM\";\n case 12:\n return \"PTR\";\n case 46:\n return \"RRSIG\";\n case 17:\n return \"RP\";\n case 24:\n return \"SIG\";\n case 6:\n return \"SOA\";\n case 99:\n return \"SPF\";\n case 33:\n return \"SRV\";\n case 44:\n return \"SSHFP\";\n case 32768:\n return \"TA\";\n case 249:\n return \"TKEY\";\n case 52:\n return \"TLSA\";\n case 250:\n return \"TSIG\";\n case 16:\n return \"TXT\";\n case 252:\n return \"AXFR\";\n case 251:\n return \"IXFR\";\n case 41:\n return \"OPT\";\n case 255:\n return \"ANY\";\n }\n return \"UNKNOWN_\" + type;\n}\nfunction toType(name) {\n switch(name.toUpperCase()){\n case \"A\":\n return 1;\n case \"NULL\":\n return 10;\n case \"AAAA\":\n return 28;\n case \"AFSDB\":\n return 18;\n case \"APL\":\n return 42;\n case \"CAA\":\n return 257;\n case \"CDNSKEY\":\n return 60;\n case \"CDS\":\n return 59;\n case \"CERT\":\n return 37;\n case \"CNAME\":\n return 5;\n case \"DHCID\":\n return 49;\n case \"DLV\":\n return 32769;\n case \"DNAME\":\n return 39;\n case \"DNSKEY\":\n return 48;\n case \"DS\":\n return 43;\n case \"HIP\":\n return 55;\n case \"HINFO\":\n return 13;\n case \"IPSECKEY\":\n return 45;\n case \"KEY\":\n return 25;\n case \"KX\":\n return 36;\n case \"LOC\":\n return 29;\n case \"MX\":\n return 15;\n case \"NAPTR\":\n return 35;\n case \"NS\":\n return 2;\n case \"NSEC\":\n return 47;\n case \"NSEC3\":\n return 50;\n case \"NSEC3PARAM\":\n return 51;\n case \"PTR\":\n return 12;\n case \"RRSIG\":\n return 46;\n case \"RP\":\n return 17;\n case \"SIG\":\n return 24;\n case \"SOA\":\n return 6;\n case \"SPF\":\n return 99;\n case \"SRV\":\n return 33;\n case \"SSHFP\":\n return 44;\n case \"TA\":\n return 32768;\n case \"TKEY\":\n return 249;\n case \"TLSA\":\n return 52;\n case \"TSIG\":\n return 250;\n case \"TXT\":\n return 16;\n case \"AXFR\":\n return 252;\n case \"IXFR\":\n return 251;\n case \"OPT\":\n return 41;\n case \"ANY\":\n return 255;\n case \"*\":\n return 255;\n }\n if (name.toUpperCase().startsWith(\"UNKNOWN_\")) return parseInt(name.slice(8));\n return 0;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQGxlaWNodGdld2ljaHQvZG5zLXBhY2tldC90eXBlcy5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxTQUFTQSxTQUFVQyxJQUFJO0lBQzVCLE9BQVFBO1FBQ04sS0FBSztZQUFHLE9BQU87UUFDZixLQUFLO1lBQUksT0FBTztRQUNoQixLQUFLO1lBQUksT0FBTztRQUNoQixLQUFLO1lBQUksT0FBTztRQUNoQixLQUFLO1lBQUksT0FBTztRQUNoQixLQUFLO1lBQUssT0FBTztRQUNqQixLQUFLO1lBQUksT0FBTztRQUNoQixLQUFLO1lBQUksT0FBTztRQUNoQixLQUFLO1lBQUksT0FBTztRQUNoQixLQUFLO1lBQUcsT0FBTztRQUNmLEtBQUs7WUFBSSxPQUFPO1FBQ2hCLEtBQUs7WUFBTyxPQUFPO1FBQ25CLEtBQUs7WUFBSSxPQUFPO1FBQ2hCLEtBQUs7WUFBSSxPQUFPO1FBQ2hCLEtBQUs7WUFBSSxPQUFPO1FBQ2hCLEtBQUs7WUFBSSxPQUFPO1FBQ2hCLEtBQUs7WUFBSSxPQUFPO1FBQ2hCLEtBQUs7WUFBSSxPQUFPO1FBQ2hCLEtBQUs7WUFBSSxPQUFPO1FBQ2hCLEtBQUs7WUFBSSxPQUFPO1FBQ2hCLEtBQUs7WUFBSSxPQUFPO1FBQ2hCLEtBQUs7WUFBSSxPQUFPO1FBQ2hCLEtBQUs7WUFBSSxPQUFPO1FBQ2hCLEtBQUs7WUFBRyxPQUFPO1FBQ2YsS0FBSztZQUFJLE9BQU87UUFDaEIsS0FBSztZQUFJLE9BQU87UUFDaEIsS0FBSztZQUFJLE9BQU87UUFDaEIsS0FBSztZQUFJLE9BQU87UUFDaEIsS0FBSztZQUFJLE9BQU87UUFDaEIsS0FBSztZQUFJLE9BQU87UUFDaEIsS0FBSztZQUFJLE9BQU87UUFDaEIsS0FBSztZQUFHLE9BQU87UUFDZixLQUFLO1lBQUksT0FBTztRQUNoQixLQUFLO1lBQUksT0FBTztRQUNoQixLQUFLO1lBQUksT0FBTztRQUNoQixLQUFLO1lBQU8sT0FBTztRQUNuQixLQUFLO1lBQUssT0FBTztRQUNqQixLQUFLO1lBQUksT0FBTztRQUNoQixLQUFLO1lBQUssT0FBTztRQUNqQixLQUFLO1lBQUksT0FBTztRQUNoQixLQUFLO1lBQUssT0FBTztRQUNqQixLQUFLO1lBQUssT0FBTztRQUNqQixLQUFLO1lBQUksT0FBTztRQUNoQixLQUFLO1lBQUssT0FBTztJQUNuQjtJQUNBLE9BQU8sYUFBYUE7QUFDdEI7QUFFTyxTQUFTQyxPQUFRQyxJQUFJO0lBQzFCLE9BQVFBLEtBQUtDLFdBQVc7UUFDdEIsS0FBSztZQUFLLE9BQU87UUFDakIsS0FBSztZQUFRLE9BQU87UUFDcEIsS0FBSztZQUFRLE9BQU87UUFDcEIsS0FBSztZQUFTLE9BQU87UUFDckIsS0FBSztZQUFPLE9BQU87UUFDbkIsS0FBSztZQUFPLE9BQU87UUFDbkIsS0FBSztZQUFXLE9BQU87UUFDdkIsS0FBSztZQUFPLE9BQU87UUFDbkIsS0FBSztZQUFRLE9BQU87UUFDcEIsS0FBSztZQUFTLE9BQU87UUFDckIsS0FBSztZQUFTLE9BQU87UUFDckIsS0FBSztZQUFPLE9BQU87UUFDbkIsS0FBSztZQUFTLE9BQU87UUFDckIsS0FBSztZQUFVLE9BQU87UUFDdEIsS0FBSztZQUFNLE9BQU87UUFDbEIsS0FBSztZQUFPLE9BQU87UUFDbkIsS0FBSztZQUFTLE9BQU87UUFDckIsS0FBSztZQUFZLE9BQU87UUFDeEIsS0FBSztZQUFPLE9BQU87UUFDbkIsS0FBSztZQUFNLE9BQU87UUFDbEIsS0FBSztZQUFPLE9BQU87UUFDbkIsS0FBSztZQUFNLE9BQU87UUFDbEIsS0FBSztZQUFTLE9BQU87UUFDckIsS0FBSztZQUFNLE9BQU87UUFDbEIsS0FBSztZQUFRLE9BQU87UUFDcEIsS0FBSztZQUFTLE9BQU87UUFDckIsS0FBSztZQUFjLE9BQU87UUFDMUIsS0FBSztZQUFPLE9BQU87UUFDbkIsS0FBSztZQUFTLE9BQU87UUFDckIsS0FBSztZQUFNLE9BQU87UUFDbEIsS0FBSztZQUFPLE9BQU87UUFDbkIsS0FBSztZQUFPLE9BQU87UUFDbkIsS0FBSztZQUFPLE9BQU87UUFDbkIsS0FBSztZQUFPLE9BQU87UUFDbkIsS0FBSztZQUFTLE9BQU87UUFDckIsS0FBSztZQUFNLE9BQU87UUFDbEIsS0FBSztZQUFRLE9BQU87UUFDcEIsS0FBSztZQUFRLE9BQU87UUFDcEIsS0FBSztZQUFRLE9BQU87UUFDcEIsS0FBSztZQUFPLE9BQU87UUFDbkIsS0FBSztZQUFRLE9BQU87UUFDcEIsS0FBSztZQUFRLE9BQU87UUFDcEIsS0FBSztZQUFPLE9BQU87UUFDbkIsS0FBSztZQUFPLE9BQU87UUFDbkIsS0FBSztZQUFLLE9BQU87SUFDbkI7SUFDQSxJQUFJRCxLQUFLQyxXQUFXLEdBQUdDLFVBQVUsQ0FBQyxhQUFhLE9BQU9DLFNBQVNILEtBQUtJLEtBQUssQ0FBQztJQUMxRSxPQUFPO0FBQ1QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9mbHVzaC1ub3Rlcy8uL25vZGVfbW9kdWxlcy9AbGVpY2h0Z2V3aWNodC9kbnMtcGFja2V0L3R5cGVzLm1qcz83OTJiIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiB0b1N0cmluZyAodHlwZSkge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIDE6IHJldHVybiAnQSdcbiAgICBjYXNlIDEwOiByZXR1cm4gJ05VTEwnXG4gICAgY2FzZSAyODogcmV0dXJuICdBQUFBJ1xuICAgIGNhc2UgMTg6IHJldHVybiAnQUZTREInXG4gICAgY2FzZSA0MjogcmV0dXJuICdBUEwnXG4gICAgY2FzZSAyNTc6IHJldHVybiAnQ0FBJ1xuICAgIGNhc2UgNjA6IHJldHVybiAnQ0ROU0tFWSdcbiAgICBjYXNlIDU5OiByZXR1cm4gJ0NEUydcbiAgICBjYXNlIDM3OiByZXR1cm4gJ0NFUlQnXG4gICAgY2FzZSA1OiByZXR1cm4gJ0NOQU1FJ1xuICAgIGNhc2UgNDk6IHJldHVybiAnREhDSUQnXG4gICAgY2FzZSAzMjc2OTogcmV0dXJuICdETFYnXG4gICAgY2FzZSAzOTogcmV0dXJuICdETkFNRSdcbiAgICBjYXNlIDQ4OiByZXR1cm4gJ0ROU0tFWSdcbiAgICBjYXNlIDQzOiByZXR1cm4gJ0RTJ1xuICAgIGNhc2UgNTU6IHJldHVybiAnSElQJ1xuICAgIGNhc2UgMTM6IHJldHVybiAnSElORk8nXG4gICAgY2FzZSA0NTogcmV0dXJuICdJUFNFQ0tFWSdcbiAgICBjYXNlIDI1OiByZXR1cm4gJ0tFWSdcbiAgICBjYXNlIDM2OiByZXR1cm4gJ0tYJ1xuICAgIGNhc2UgMjk6IHJldHVybiAnTE9DJ1xuICAgIGNhc2UgMTU6IHJldHVybiAnTVgnXG4gICAgY2FzZSAzNTogcmV0dXJuICdOQVBUUidcbiAgICBjYXNlIDI6IHJldHVybiAnTlMnXG4gICAgY2FzZSA0NzogcmV0dXJuICdOU0VDJ1xuICAgIGNhc2UgNTA6IHJldHVybiAnTlNFQzMnXG4gICAgY2FzZSA1MTogcmV0dXJuICdOU0VDM1BBUkFNJ1xuICAgIGNhc2UgMTI6IHJldHVybiAnUFRSJ1xuICAgIGNhc2UgNDY6IHJldHVybiAnUlJTSUcnXG4gICAgY2FzZSAxNzogcmV0dXJuICdSUCdcbiAgICBjYXNlIDI0OiByZXR1cm4gJ1NJRydcbiAgICBjYXNlIDY6IHJldHVybiAnU09BJ1xuICAgIGNhc2UgOTk6IHJldHVybiAnU1BGJ1xuICAgIGNhc2UgMzM6IHJldHVybiAnU1JWJ1xuICAgIGNhc2UgNDQ6IHJldHVybiAnU1NIRlAnXG4gICAgY2FzZSAzMjc2ODogcmV0dXJuICdUQSdcbiAgICBjYXNlIDI0OTogcmV0dXJuICdUS0VZJ1xuICAgIGNhc2UgNTI6IHJldHVybiAnVExTQSdcbiAgICBjYXNlIDI1MDogcmV0dXJuICdUU0lHJ1xuICAgIGNhc2UgMTY6IHJldHVybiAnVFhUJ1xuICAgIGNhc2UgMjUyOiByZXR1cm4gJ0FYRlInXG4gICAgY2FzZSAyNTE6IHJldHVybiAnSVhGUidcbiAgICBjYXNlIDQxOiByZXR1cm4gJ09QVCdcbiAgICBjYXNlIDI1NTogcmV0dXJuICdBTlknXG4gIH1cbiAgcmV0dXJuICdVTktOT1dOXycgKyB0eXBlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1R5cGUgKG5hbWUpIHtcbiAgc3dpdGNoIChuYW1lLnRvVXBwZXJDYXNlKCkpIHtcbiAgICBjYXNlICdBJzogcmV0dXJuIDFcbiAgICBjYXNlICdOVUxMJzogcmV0dXJuIDEwXG4gICAgY2FzZSAnQUFBQSc6IHJldHVybiAyOFxuICAgIGNhc2UgJ0FGU0RCJzogcmV0dXJuIDE4XG4gICAgY2FzZSAnQVBMJzogcmV0dXJuIDQyXG4gICAgY2FzZSAnQ0FBJzogcmV0dXJuIDI1N1xuICAgIGNhc2UgJ0NETlNLRVknOiByZXR1cm4gNjBcbiAgICBjYXNlICdDRFMnOiByZXR1cm4gNTlcbiAgICBjYXNlICdDRVJUJzogcmV0dXJuIDM3XG4gICAgY2FzZSAnQ05BTUUnOiByZXR1cm4gNVxuICAgIGNhc2UgJ0RIQ0lEJzogcmV0dXJuIDQ5XG4gICAgY2FzZSAnRExWJzogcmV0dXJuIDMyNzY5XG4gICAgY2FzZSAnRE5BTUUnOiByZXR1cm4gMzlcbiAgICBjYXNlICdETlNLRVknOiByZXR1cm4gNDhcbiAgICBjYXNlICdEUyc6IHJldHVybiA0M1xuICAgIGNhc2UgJ0hJUCc6IHJldHVybiA1NVxuICAgIGNhc2UgJ0hJTkZPJzogcmV0dXJuIDEzXG4gICAgY2FzZSAnSVBTRUNLRVknOiByZXR1cm4gNDVcbiAgICBjYXNlICdLRVknOiByZXR1cm4gMjVcbiAgICBjYXNlICdLWCc6IHJldHVybiAzNlxuICAgIGNhc2UgJ0xPQyc6IHJldHVybiAyOVxuICAgIGNhc2UgJ01YJzogcmV0dXJuIDE1XG4gICAgY2FzZSAnTkFQVFInOiByZXR1cm4gMzVcbiAgICBjYXNlICdOUyc6IHJldHVybiAyXG4gICAgY2FzZSAnTlNFQyc6IHJldHVybiA0N1xuICAgIGNhc2UgJ05TRUMzJzogcmV0dXJuIDUwXG4gICAgY2FzZSAnTlNFQzNQQVJBTSc6IHJldHVybiA1MVxuICAgIGNhc2UgJ1BUUic6IHJldHVybiAxMlxuICAgIGNhc2UgJ1JSU0lHJzogcmV0dXJuIDQ2XG4gICAgY2FzZSAnUlAnOiByZXR1cm4gMTdcbiAgICBjYXNlICdTSUcnOiByZXR1cm4gMjRcbiAgICBjYXNlICdTT0EnOiByZXR1cm4gNlxuICAgIGNhc2UgJ1NQRic6IHJldHVybiA5OVxuICAgIGNhc2UgJ1NSVic6IHJldHVybiAzM1xuICAgIGNhc2UgJ1NTSEZQJzogcmV0dXJuIDQ0XG4gICAgY2FzZSAnVEEnOiByZXR1cm4gMzI3NjhcbiAgICBjYXNlICdUS0VZJzogcmV0dXJuIDI0OVxuICAgIGNhc2UgJ1RMU0EnOiByZXR1cm4gNTJcbiAgICBjYXNlICdUU0lHJzogcmV0dXJuIDI1MFxuICAgIGNhc2UgJ1RYVCc6IHJldHVybiAxNlxuICAgIGNhc2UgJ0FYRlInOiByZXR1cm4gMjUyXG4gICAgY2FzZSAnSVhGUic6IHJldHVybiAyNTFcbiAgICBjYXNlICdPUFQnOiByZXR1cm4gNDFcbiAgICBjYXNlICdBTlknOiByZXR1cm4gMjU1XG4gICAgY2FzZSAnKic6IHJldHVybiAyNTVcbiAgfVxuICBpZiAobmFtZS50b1VwcGVyQ2FzZSgpLnN0YXJ0c1dpdGgoJ1VOS05PV05fJykpIHJldHVybiBwYXJzZUludChuYW1lLnNsaWNlKDgpKVxuICByZXR1cm4gMFxufVxuIl0sIm5hbWVzIjpbInRvU3RyaW5nIiwidHlwZSIsInRvVHlwZSIsIm5hbWUiLCJ0b1VwcGVyQ2FzZSIsInN0YXJ0c1dpdGgiLCJwYXJzZUludCIsInNsaWNlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@leichtgewicht/dns-packet/types.mjs\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/@leichtgewicht/dns-socket/index.mjs":
|
|
/*!**********************************************************!*\
|
|
!*** ./node_modules/@leichtgewicht/dns-socket/index.mjs ***!
|
|
\**********************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DNSSocket: () => (/* binding */ DNSSocket)\n/* harmony export */ });\n/* harmony import */ var dgram__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dgram */ \"dgram\");\n/* harmony import */ var _leichtgewicht_dns_packet__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @leichtgewicht/dns-packet */ \"(ssr)/./node_modules/@leichtgewicht/dns-packet/index.mjs\");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! events */ \"events\");\n/* harmony import */ var buffer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! buffer */ \"buffer\");\n\n\n\n\nclass DNSSocket extends events__WEBPACK_IMPORTED_MODULE_2__.EventEmitter {\n constructor(opts = {}){\n super();\n this.retries = opts.retries !== undefined ? opts.retries : 5;\n this.timeout = opts.timeout || 7500;\n this.timeoutChecks = opts.timeoutChecks || this.timeout / 10;\n this.destroyed = false;\n this.inflight = 0;\n this.raw = opts.raw === true;\n this.maxQueries = opts.maxQueries || 10000;\n this.maxRedirects = opts.maxRedirects || 0;\n this.socket = opts.socket || dgram__WEBPACK_IMPORTED_MODULE_0__.createSocket(\"udp4\");\n this._id = Math.ceil(Math.random() * this.maxQueries);\n this._queries = new Array(this.maxQueries).fill(null);\n this._interval = null;\n this.socket.on(\"error\", (err)=>{\n if (err.code === \"EACCES\" || err.code === \"EADDRINUSE\") {\n this.emit(\"error\", err);\n } else {\n this.emit(\"warning\", err);\n }\n });\n this.socket.on(\"message\", (message, rinfo)=>{\n this._onmessage(message, rinfo);\n });\n const onlistening = ()=>{\n this._interval = setInterval(()=>this._ontimeoutCheck(), this.timeoutChecks);\n this.emit(\"listening\");\n };\n if (isListening(this.socket)) onlistening();\n else this.socket.on(\"listening\", onlistening);\n this.socket.on(\"close\", ()=>this.emit(\"close\"));\n }\n address() {\n return this.socket.address();\n }\n bind(...args) {\n const onlistening = args.length > 0 && args[args.length - 1];\n if (typeof onlistening === \"function\") {\n this.once(\"listening\", onlistening);\n this.socket.bind(...args.slice(0, -1));\n } else {\n this.socket.bind(...args);\n }\n }\n destroy(onclose) {\n if (onclose) {\n this.once(\"close\", onclose);\n }\n if (this.destroyed) {\n return;\n }\n this.destroyed = true;\n clearInterval(this._interval);\n this.socket.close();\n for(let i = 0; i < this.maxQueries; i++){\n const q = this._queries[i];\n if (q) {\n q.callback(new Error(\"Socket destroyed\"));\n this._queries[i] = null;\n }\n }\n this.inflight = 0;\n }\n _ontimeoutCheck() {\n const now = Date.now();\n for(let i = 0; i < this.maxQueries; i++){\n const q = this._queries[i];\n if (!q || now - q.firstTry < (q.tries + 1) * this.timeout) {\n continue;\n }\n if (q.tries > this.retries) {\n this._queries[i] = null;\n this.inflight--;\n this.emit(\"timeout\", q.query, q.port, q.host);\n q.callback(new Error(\"Query timed out\"));\n continue;\n }\n q.tries++;\n this.socket.send(q.buffer, 0, q.buffer.length, q.port, Array.isArray(q.host) ? q.host[Math.floor(q.host.length * Math.random())] : q.host || \"127.0.0.1\");\n }\n }\n _shouldRedirect(q, result) {\n // no redirects, no query, more than 1 questions, has any A record answer\n if (this.maxRedirects <= 0 || !q || q.query.questions.length !== 1 || result.answers.filter((e)=>e.type === \"A\").length > 0) {\n return false;\n }\n // no more redirects left\n if (q.redirects > this.maxRedirects) {\n return false;\n }\n const cnameresults = result.answers.filter((e)=>e.type === \"CNAME\");\n if (cnameresults.length === 0) {\n return false;\n }\n const id = this._getNextEmptyId();\n if (id === -1) {\n q.callback(new Error(\"Query array is full!\"));\n return true;\n }\n // replace current query with a new one\n q.query = {\n id: id + 1,\n flags: _leichtgewicht_dns_packet__WEBPACK_IMPORTED_MODULE_1__.RECURSION_DESIRED,\n questions: [\n {\n type: \"A\",\n name: cnameresults[0].data\n }\n ]\n };\n q.redirects++;\n q.firstTry = Date.now();\n q.tries = 0;\n q.buffer = buffer__WEBPACK_IMPORTED_MODULE_3__.Buffer.alloc(_leichtgewicht_dns_packet__WEBPACK_IMPORTED_MODULE_1__.encodingLength(q.query));\n _leichtgewicht_dns_packet__WEBPACK_IMPORTED_MODULE_1__.encode(q.query, q.buffer);\n this._queries[id] = q;\n this.socket.send(q.buffer, 0, q.buffer.length, q.port, Array.isArray(q.host) ? q.host[Math.floor(q.host.length * Math.random())] : q.host || \"127.0.0.1\");\n return true;\n }\n _onmessage(buffer, rinfo) {\n let message;\n try {\n message = _leichtgewicht_dns_packet__WEBPACK_IMPORTED_MODULE_1__.decode(buffer);\n } catch (err) {\n this.emit(\"warning\", err);\n return;\n }\n if (message.type === \"response\" && message.id) {\n const q = this._queries[message.id - 1];\n if (q) {\n this._queries[message.id - 1] = null;\n this.inflight--;\n if (!this._shouldRedirect(q, message)) {\n q.callback(null, message);\n }\n }\n }\n this.emit(message.type, message, rinfo.port, rinfo.address);\n }\n unref() {\n this.socket.unref();\n }\n ref() {\n this.socket.ref();\n }\n response(query, response, port, host) {\n if (this.destroyed) {\n return;\n }\n response.type = \"response\";\n response.id = query.id;\n const buffer = buffer__WEBPACK_IMPORTED_MODULE_3__.Buffer.alloc(_leichtgewicht_dns_packet__WEBPACK_IMPORTED_MODULE_1__.encodingLength(response));\n _leichtgewicht_dns_packet__WEBPACK_IMPORTED_MODULE_1__.encode(response, buffer);\n this.socket.send(buffer, 0, buffer.length, port, host);\n }\n cancel(id) {\n const q = this._queries[id];\n if (!q) return;\n this._queries[id] = null;\n this.inflight--;\n q.callback(new Error(\"Query cancelled\"));\n }\n setRetries(id, retries) {\n const q = this._queries[id];\n if (!q) return;\n q.firstTry = q.firstTry - this.timeout * (retries - q.retries);\n q.retries = this.retries - retries;\n }\n _getNextEmptyId() {\n // try to find the next unused id\n let id = -1;\n for(let idtries = this.maxQueries; idtries > 0; idtries--){\n const normalizedId = (this._id + idtries) % this.maxQueries;\n if (this._queries[normalizedId] === null) {\n id = normalizedId;\n this._id = (normalizedId + 1) % this.maxQueries;\n break;\n }\n }\n return id;\n }\n query(query, port, host, cb) {\n if (this.destroyed) {\n cb(new Error(\"Socket destroyed\"));\n return 0;\n }\n this.inflight++;\n query.type = \"query\";\n query.flags = typeof query.flags === \"number\" ? query.flags : DNSSocket.RECURSION_DESIRED;\n const id = this._getNextEmptyId();\n if (id === -1) {\n cb(new Error(\"Query array is full!\"));\n return 0;\n }\n query.id = id + 1;\n const buffer = buffer__WEBPACK_IMPORTED_MODULE_3__.Buffer.alloc(_leichtgewicht_dns_packet__WEBPACK_IMPORTED_MODULE_1__.encodingLength(query));\n _leichtgewicht_dns_packet__WEBPACK_IMPORTED_MODULE_1__.encode(query, buffer);\n this._queries[id] = {\n callback: cb || noop,\n redirects: 0,\n firstTry: Date.now(),\n query,\n tries: 0,\n buffer,\n port,\n host\n };\n this.socket.send(buffer, 0, buffer.length, port, Array.isArray(host) ? host[Math.floor(host.length * Math.random())] : host || \"127.0.0.1\");\n return id;\n }\n}\nDNSSocket.RECURSION_DESIRED = DNSSocket.prototype.RECURSION_DESIRED = _leichtgewicht_dns_packet__WEBPACK_IMPORTED_MODULE_1__.RECURSION_DESIRED;\nDNSSocket.RECURSION_AVAILABLE = DNSSocket.prototype.RECURSION_AVAILABLE = _leichtgewicht_dns_packet__WEBPACK_IMPORTED_MODULE_1__.RECURSION_AVAILABLE;\nDNSSocket.TRUNCATED_RESPONSE = DNSSocket.prototype.TRUNCATED_RESPONSE = _leichtgewicht_dns_packet__WEBPACK_IMPORTED_MODULE_1__.TRUNCATED_RESPONSE;\nDNSSocket.AUTHORITATIVE_ANSWER = DNSSocket.prototype.AUTHORITATIVE_ANSWER = _leichtgewicht_dns_packet__WEBPACK_IMPORTED_MODULE_1__.AUTHORITATIVE_ANSWER;\nDNSSocket.AUTHENTIC_DATA = DNSSocket.prototype.AUTHENTIC_DATA = _leichtgewicht_dns_packet__WEBPACK_IMPORTED_MODULE_1__.AUTHENTIC_DATA;\nDNSSocket.CHECKING_DISABLED = DNSSocket.prototype.CHECKING_DISABLED = _leichtgewicht_dns_packet__WEBPACK_IMPORTED_MODULE_1__.CHECKING_DISABLED;\nfunction noop() {}\nfunction isListening(socket) {\n try {\n return socket.address().port !== 0;\n } catch (err) {\n return false;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQGxlaWNodGdld2ljaHQvZG5zLXNvY2tldC9pbmRleC5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBeUI7QUFDMEI7QUFDZDtBQUNOO0FBRXhCLE1BQU1JLGtCQUFrQkYsZ0RBQVlBO0lBQ3pDRyxZQUFhQyxPQUFPLENBQUMsQ0FBQyxDQUFFO1FBQ3RCLEtBQUs7UUFFTCxJQUFJLENBQUNDLE9BQU8sR0FBR0QsS0FBS0MsT0FBTyxLQUFLQyxZQUFZRixLQUFLQyxPQUFPLEdBQUc7UUFDM0QsSUFBSSxDQUFDRSxPQUFPLEdBQUdILEtBQUtHLE9BQU8sSUFBSTtRQUMvQixJQUFJLENBQUNDLGFBQWEsR0FBR0osS0FBS0ksYUFBYSxJQUFLLElBQUksQ0FBQ0QsT0FBTyxHQUFHO1FBQzNELElBQUksQ0FBQ0UsU0FBUyxHQUFHO1FBQ2pCLElBQUksQ0FBQ0MsUUFBUSxHQUFHO1FBQ2hCLElBQUksQ0FBQ0MsR0FBRyxHQUFHUCxLQUFLTyxHQUFHLEtBQUs7UUFDeEIsSUFBSSxDQUFDQyxVQUFVLEdBQUdSLEtBQUtRLFVBQVUsSUFBSTtRQUNyQyxJQUFJLENBQUNDLFlBQVksR0FBR1QsS0FBS1MsWUFBWSxJQUFJO1FBQ3pDLElBQUksQ0FBQ0MsTUFBTSxHQUFHVixLQUFLVSxNQUFNLElBQUloQiwrQ0FBa0IsQ0FBQztRQUNoRCxJQUFJLENBQUNrQixHQUFHLEdBQUdDLEtBQUtDLElBQUksQ0FBQ0QsS0FBS0UsTUFBTSxLQUFLLElBQUksQ0FBQ1AsVUFBVTtRQUNwRCxJQUFJLENBQUNRLFFBQVEsR0FBRyxJQUFJQyxNQUFNLElBQUksQ0FBQ1QsVUFBVSxFQUFFVSxJQUFJLENBQUM7UUFDaEQsSUFBSSxDQUFDQyxTQUFTLEdBQUc7UUFFakIsSUFBSSxDQUFDVCxNQUFNLENBQUNVLEVBQUUsQ0FBQyxTQUFTQyxDQUFBQTtZQUN0QixJQUFJQSxJQUFJQyxJQUFJLEtBQUssWUFBWUQsSUFBSUMsSUFBSSxLQUFLLGNBQWM7Z0JBQ3RELElB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T0EsT0FBT3FCLE9BQU8sR0FBR21CLElBQUksS0FBSztJQUNuQyxFQUFFLE9BQU83QixLQUFLO1FBQ1osT0FBTztJQUNUO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9mbHVzaC1ub3Rlcy8uL25vZGVfbW9kdWxlcy9AbGVpY2h0Z2V3aWNodC9kbnMtc29ja2V0L2luZGV4Lm1qcz84NTVlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZ3JhbSBmcm9tICdkZ3JhbSdcbmltcG9ydCAqIGFzIHBhY2tldCBmcm9tICdAbGVpY2h0Z2V3aWNodC9kbnMtcGFja2V0J1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJ1xuaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSAnYnVmZmVyJ1xuXG5leHBvcnQgY2xhc3MgRE5TU29ja2V0IGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgY29uc3RydWN0b3IgKG9wdHMgPSB7fSkge1xuICAgIHN1cGVyKClcblxuICAgIHRoaXMucmV0cmllcyA9IG9wdHMucmV0cmllcyAhPT0gdW5kZWZpbmVkID8gb3B0cy5yZXRyaWVzIDogNVxuICAgIHRoaXMudGltZW91dCA9IG9wdHMudGltZW91dCB8fCA3NTAwXG4gICAgdGhpcy50aW1lb3V0Q2hlY2tzID0gb3B0cy50aW1lb3V0Q2hlY2tzIHx8ICh0aGlzLnRpbWVvdXQgLyAxMClcbiAgICB0aGlzLmRlc3Ryb3llZCA9IGZhbHNlXG4gICAgdGhpcy5pbmZsaWdodCA9IDBcbiAgICB0aGlzLnJhdyA9IG9wdHMucmF3ID09PSB0cnVlXG4gICAgdGhpcy5tYXhRdWVyaWVzID0gb3B0cy5tYXhRdWVyaWVzIHx8IDEwMDAwXG4gICAgdGhpcy5tYXhSZWRpcmVjdHMgPSBvcHRzLm1heFJlZGlyZWN0cyB8fCAwXG4gICAgdGhpcy5zb2NrZXQgPSBvcHRzLnNvY2tldCB8fCBkZ3JhbS5jcmVhdGVTb2NrZXQoJ3VkcDQnKVxuICAgIHRoaXMuX2lkID0gTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiB0aGlzLm1heFF1ZXJpZXMpXG4gICAgdGhpcy5fcXVlcmllcyA9IG5ldyBBcnJheSh0aGlzLm1heFF1ZXJpZXMpLmZpbGwobnVsbClcbiAgICB0aGlzLl9pbnRlcnZhbCA9IG51bGxcblxuICAgIHRoaXMuc29ja2V0Lm9uKCdlcnJvcicsIGVyciA9PiB7XG4gICAgICBpZiAoZXJyLmNvZGUgPT09ICdFQUNDRVMnIHx8IGVyci5jb2RlID09PSAnRUFERFJJTlVTRScpIHtcbiAgICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIGVycilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZW1pdCgnd2FybmluZycsIGVycilcbiAgICAgIH1cbiAgICB9KVxuICAgIHRoaXMuc29ja2V0Lm9uKCdtZXNzYWdlJywgKG1lc3NhZ2UsIHJpbmZvKSA9PiB7XG4gICAgICB0aGlzLl9vbm1lc3NhZ2UobWVzc2FnZSwgcmluZm8pXG4gICAgfSlcblxuICAgIGNvbnN0IG9ubGlzdGVuaW5nID0gKCkgPT4ge1xuICAgICAgdGhpcy5faW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB0aGlzLl9vbnRpbWVvdXRDaGVjaygpLCB0aGlzLnRpbWVvdXRDaGVja3MpXG4gICAgICB0aGlzLmVtaXQoJ2xpc3RlbmluZycpXG4gICAgfVxuXG4gICAgaWYgKGlzTGlzdGVuaW5nKHRoaXMuc29ja2V0KSkgb25saXN0ZW5pbmcoKVxuICAgIGVsc2UgdGhpcy5zb2NrZXQub24oJ2xpc3RlbmluZycsIG9ubGlzdGVuaW5nKVxuICAgIHRoaXMuc29ja2V0Lm9uKFxuICAgICAgJ2Nsb3NlJyxcbiAgICAgICgpID0+IHRoaXMuZW1pdCgnY2xvc2UnKVxuICAgIClcbiAgfVxuXG4gIGFkZHJlc3MgKCkge1xuICAgIHJldHVybiB0aGlzLnNvY2tldC5hZGRyZXNzKClcbiAgfVxuXG4gIGJpbmQgKC4uLmFyZ3MpIHtcbiAgICBjb25zdCBvbmxpc3RlbmluZyA9IGFyZ3MubGVuZ3RoID4gMCAmJiBhcmdzW2FyZ3MubGVuZ3RoIC0gMV1cbiAgICBpZiAodHlwZW9mIG9ubGlzdGVuaW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLm9uY2UoJ2xpc3RlbmluZycsIG9ubGlzdGVuaW5nKVxuICAgICAgdGhpcy5zb2NrZXQuYmluZCguLi5hcmdzLnNsaWNlKDAsIC0xKSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zb2NrZXQuYmluZCguLi5hcmdzKVxuICAgIH1cbiAgfVxuXG4gIGRlc3Ryb3kgKG9uY2xvc2UpIHtcbiAgICBpZiAob25jbG9zZSkge1xuICAgICAgdGhpcy5vbmNlKCdjbG9zZScsIG9uY2xvc2UpXG4gICAgfVxuICAgIGlmICh0aGlzLmRlc3Ryb3llZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZVxuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5faW50ZXJ2YWwpXG4gICAgdGhpcy5zb2NrZXQuY2xvc2UoKVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm1heFF1ZXJpZXM7IGkrKykge1xuICAgICAgY29uc3QgcSA9IHRoaXMuX3F1ZXJpZXNbaV1cbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEuY2FsbGJhY2sobmV3IEVycm9yKCdTb2NrZXQgZGVzdHJveWVkJykpXG4gICAgICAgIHRoaXMuX3F1ZXJpZXNbaV0gPSBudWxsXG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuaW5mbGlnaHQgPSAwXG4gIH1cblxuICBfb250aW1lb3V0Q2hlY2sgKCkge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KClcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubWF4UXVlcmllczsgaSsrKSB7XG4gICAgICBjb25zdCBxID0gdGhpcy5fcXVlcmllc1tpXVxuXG4gICAgICBpZiAoKCFxKSB8fCAobm93IC0gcS5maXJzdFRyeSA8IChxLnRyaWVzICsgMSkgKiB0aGlzLnRpbWVvdXQpKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChxLnRyaWVzID4gdGhpcy5yZXRyaWVzKSB7XG4gICAgICAgIHRoaXMuX3F1ZXJpZXNbaV0gPSBudWxsXG4gICAgICAgIHRoaXMuaW5mbGlnaHQtLVxuICAgICAgICB0aGlzLmVtaXQoJ3RpbWVvdXQnLCBxLnF1ZXJ5LCBxLnBvcnQsIHEuaG9zdClcbiAgICAgICAgcS5jYWxsYmFjayhuZXcgRXJyb3IoJ1F1ZXJ5IHRpbWVkIG91dCcpKVxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgcS50cmllcysrXG4gICAgICB0aGlzLnNvY2tldC5zZW5kKHEuYnVmZmVyLCAwLCBxLmJ1ZmZlci5sZW5ndGgsIHEucG9ydCwgQXJyYXkuaXNBcnJheShxLmhvc3QpID8gcS5ob3N0W01hdGguZmxvb3IocS5ob3N0Lmxlbmd0aCAqIE1hdGgucmFuZG9tKCkpXSA6IHEuaG9zdCB8fCAnMTI3LjAuMC4xJylcbiAgICB9XG4gIH1cblxuICBfc2hvdWxkUmVkaXJlY3QgKHEsIHJlc3VsdCkge1xuICAgIC8vIG5vIHJlZGlyZWN0cywgbm8gcXVlcnksIG1vcmUgdGhhbiAxIHF1ZXN0aW9ucywgaGFzIGFueSBBIHJlY29yZCBhbnN3ZXJcbiAgICBpZiAodGhpcy5tYXhSZWRpcmVjdHMgPD0gMCB8fCAoIXEpIHx8IChxLnF1ZXJ5LnF1ZXN0aW9ucy5sZW5ndGggIT09IDEpIHx8IHJlc3VsdC5hbnN3ZXJzLmZpbHRlcihlID0+IGUudHlwZSA9PT0gJ0EnKS5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICAvLyBubyBtb3JlIHJlZGlyZWN0cyBsZWZ0XG4gICAgaWYgKHEucmVkaXJlY3RzID4gdGhpcy5tYXhSZWRpcmVjdHMpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIGNvbnN0IGNuYW1lcmVzdWx0cyA9IHJlc3VsdC5hbnN3ZXJzLmZpbHRlcihlID0+IGUudHlwZSA9PT0gJ0NOQU1FJylcbiAgICBpZiAoY25hbWVyZXN1bHRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgY29uc3QgaWQgPSB0aGlzLl9nZXROZXh0RW1wdHlJZCgpXG4gICAgaWYgKGlkID09PSAtMSkge1xuICAgICAgcS5jYWxsYmFjayhuZXcgRXJyb3IoJ1F1ZXJ5IGFycmF5IGlzIGZ1bGwhJykpXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIC8vIHJlcGxhY2UgY3VycmVudCBxdWVyeSB3aXRoIGEgbmV3IG9uZVxuICAgIHEucXVlcnkgPSB7XG4gICAgICBpZDogaWQgKyAxLFxuICAgICAgZmxhZ3M6IHBhY2tldC5SRUNVUlNJT05fREVTSVJFRCxcbiAgICAgIHF1ZXN0aW9uczogW3tcbiAgICAgICAgdHlwZTogJ0EnLFxuICAgICAgICBuYW1lOiBjbmFtZXJlc3VsdHNbMF0uZGF0YVxuICAgICAgfV1cbiAgICB9XG4gICAgcS5yZWRpcmVjdHMrK1xuICAgIHEuZmlyc3RUcnkgPSBEYXRlLm5vdygpXG4gICAgcS50cmllcyA9IDBcbiAgICBxLmJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyhwYWNrZXQuZW5jb2RpbmdMZW5ndGgocS5xdWVyeSkpXG4gICAgcGFja2V0LmVuY29kZShxLnF1ZXJ5LCBxLmJ1ZmZlcilcbiAgICB0aGlzLl9xdWVyaWVzW2lkXSA9IHFcbiAgICB0aGlzLnNvY2tldC5zZW5kKHEuYnVmZmVyLCAwLCBxLmJ1ZmZlci5sZW5ndGgsIHEucG9ydCwgQXJyYXkuaXNBcnJheShxLmhvc3QpID8gcS5ob3N0W01hdGguZmxvb3IocS5ob3N0Lmxlbmd0aCAqIE1hdGgucmFuZG9tKCkpXSA6IHEuaG9zdCB8fCAnMTI3LjAuMC4xJylcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgX29ubWVzc2FnZSAoYnVmZmVyLCByaW5mbykge1xuICAgIGxldCBtZXNzYWdlXG5cbiAgICB0cnkge1xuICAgICAgbWVzc2FnZSA9IHBhY2tldC5kZWNvZGUoYnVmZmVyKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5lbWl0KCd3YXJuaW5nJywgZXJyKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gJ3Jlc3BvbnNlJyAmJiBtZXNzYWdlLmlkKSB7XG4gICAgICBjb25zdCBxID0gdGhpcy5fcXVlcmllc1ttZXNzYWdlLmlkIC0gMV1cbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHRoaXMuX3F1ZXJpZXNbbWVzc2FnZS5pZCAtIDFdID0gbnVsbFxuICAgICAgICB0aGlzLmluZmxpZ2h0LS1cblxuICAgICAgICBpZiAoIXRoaXMuX3Nob3VsZFJlZGlyZWN0KHEsIG1lc3NhZ2UpKSB7XG4gICAgICAgICAgcS5jYWxsYmFjayhudWxsLCBtZXNzYWdlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0KG1lc3NhZ2UudHlwZSwgbWVzc2FnZSwgcmluZm8ucG9ydCwgcmluZm8uYWRkcmVzcylcbiAgfVxuXG4gIHVucmVmICgpIHtcbiAgICB0aGlzLnNvY2tldC51bnJlZigpXG4gIH1cblxuICByZWYgKCkge1xuICAgIHRoaXMuc29ja2V0LnJlZigpXG4gIH1cblxuICByZXNwb25zZSAocXVlcnksIHJlc3BvbnNlLCBwb3J0LCBob3N0KSB7XG4gICAgaWYgKHRoaXMuZGVzdHJveWVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICByZXNwb25zZS50eXBlID0gJ3Jlc3BvbnNlJ1xuICAgIHJlc3BvbnNlLmlkID0gcXVlcnkuaWRcbiAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuYWxsb2MocGFja2V0LmVuY29kaW5nTGVuZ3RoKHJlc3BvbnNlKSlcbiAgICBwYWNrZXQuZW5jb2RlKHJlc3BvbnNlLCBidWZmZXIpXG4gICAgdGhpcy5zb2NrZXQuc2VuZChidWZmZXIsIDAsIGJ1ZmZlci5sZW5ndGgsIHBvcnQsIGhvc3QpXG4gIH1cblxuICBjYW5jZWwgKGlkKSB7XG4gICAgY29uc3QgcSA9IHRoaXMuX3F1ZXJpZXNbaWRdXG4gICAgaWYgKCFxKSByZXR1cm5cblxuICAgIHRoaXMuX3F1ZXJpZXNbaWRdID0gbnVsbFxuICAgIHRoaXMuaW5mbGlnaHQtLVxuICAgIHEuY2FsbGJhY2sobmV3IEVycm9yKCdRdWVyeSBjYW5jZWxsZWQnKSlcbiAgfVxuXG4gIHNldFJldHJpZXMgKGlkLCByZXRyaWVzKSB7XG4gICAgY29uc3QgcSA9IHRoaXMuX3F1ZXJpZXNbaWRdXG4gICAgaWYgKCFxKSByZXR1cm5cbiAgICBxLmZpcnN0VHJ5ID0gcS5maXJzdFRyeSAtIHRoaXMudGltZW91dCAqIChyZXRyaWVzIC0gcS5yZXRyaWVzKVxuICAgIHEucmV0cmllcyA9IHRoaXMucmV0cmllcyAtIHJldHJpZXNcbiAgfVxuXG4gIF9nZXROZXh0RW1wdHlJZCAoKSB7XG4gICAgLy8gdHJ5IHRvIGZpbmQgdGhlIG5leHQgdW51c2VkIGlkXG4gICAgbGV0IGlkID0gLTFcbiAgICBmb3IgKGxldCBpZHRyaWVzID0gdGhpcy5tYXhRdWVyaWVzOyBpZHRyaWVzID4gMDsgaWR0cmllcy0tKSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkSWQgPSAodGhpcy5faWQgKyBpZHRyaWVzKSAlIHRoaXMubWF4UXVlcmllc1xuICAgICAgaWYgKHRoaXMuX3F1ZXJpZXNbbm9ybWFsaXplZElkXSA9PT0gbnVsbCkge1xuICAgICAgICBpZCA9IG5vcm1hbGl6ZWRJZFxuICAgICAgICB0aGlzLl9pZCA9IChub3JtYWxpemVkSWQgKyAxKSAlIHRoaXMubWF4UXVlcmllc1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaWRcbiAgfVxuXG4gIHF1ZXJ5IChxdWVyeSwgcG9ydCwgaG9zdCwgY2IpIHtcbiAgICBpZiAodGhpcy5kZXN0cm95ZWQpIHtcbiAgICAgIGNiKG5ldyBFcnJvcignU29ja2V0IGRlc3Ryb3llZCcpKVxuICAgICAgcmV0dXJuIDBcbiAgICB9XG5cbiAgICB0aGlzLmluZmxpZ2h0KytcbiAgICBxdWVyeS50eXBlID0gJ3F1ZXJ5J1xuICAgIHF1ZXJ5LmZsYWdzID0gdHlwZW9mIHF1ZXJ5LmZsYWdzID09PSAnbnVtYmVyJyA/IHF1ZXJ5LmZsYWdzIDogRE5TU29ja2V0LlJFQ1VSU0lPTl9ERVNJUkVEXG5cbiAgICBjb25zdCBpZCA9IHRoaXMuX2dldE5leHRFbXB0eUlkKClcbiAgICBpZiAoaWQgPT09IC0xKSB7XG4gICAgICBjYihuZXcgRXJyb3IoJ1F1ZXJ5IGFycmF5IGlzIGZ1bGwhJykpXG4gICAgICByZXR1cm4gMFxuICAgIH1cblxuICAgIHF1ZXJ5LmlkID0gaWQgKyAxXG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKHBhY2tldC5lbmNvZGluZ0xlbmd0aChxdWVyeSkpXG4gICAgcGFja2V0LmVuY29kZShxdWVyeSwgYnVmZmVyKVxuXG4gICAgdGhpcy5fcXVlcmllc1tpZF0gPSB7XG4gICAgICBjYWxsYmFjazogY2IgfHwgbm9vcCxcbiAgICAgIHJlZGlyZWN0czogMCxcbiAgICAgIGZpcnN0VHJ5OiBEYXRlLm5vdygpLFxuICAgICAgcXVlcnksXG4gICAgICB0cmllczogMCxcbiAgICAgIGJ1ZmZlcixcbiAgICAgIHBvcnQsXG4gICAgICBob3N0XG4gICAgfVxuICAgIHRoaXMuc29ja2V0LnNlbmQoYnVmZmVyLCAwLCBidWZmZXIubGVuZ3RoLCBwb3J0LCBBcnJheS5pc0FycmF5KGhvc3QpID8gaG9zdFtNYXRoLmZsb29yKGhvc3QubGVuZ3RoICogTWF0aC5yYW5kb20oKSldIDogaG9zdCB8fCAnMTI3LjAuMC4xJylcbiAgICByZXR1cm4gaWRcbiAgfVxufVxuXG5ETlNTb2NrZXQuUkVDVVJTSU9OX0RFU0lSRUQgPSBETlNTb2NrZXQucHJvdG90eXBlLlJFQ1VSU0lPTl9ERVNJUkVEID0gcGFja2V0LlJFQ1VSU0lPTl9ERVNJUkVEXG5ETlNTb2NrZXQuUkVDVVJTSU9OX0FWQUlMQUJMRSA9IEROU1NvY2tldC5wcm90b3R5cGUuUkVDVVJTSU9OX0FWQUlMQUJMRSA9IHBhY2tldC5SRUNVUlNJT05fQVZBSUxBQkxFXG5ETlNTb2NrZXQuVFJVTkNBVEVEX1JFU1BPTlNFID0gRE5TU29ja2V0LnByb3RvdHlwZS5UUlVOQ0FURURfUkVTUE9OU0UgPSBwYWNrZXQuVFJVTkNBVEVEX1JFU1BPTlNFXG5ETlNTb2NrZXQuQVVUSE9SSVRBVElWRV9BTlNXRVIgPSBETlNTb2NrZXQucHJvdG90eXBlLkFVVEhPUklUQVRJVkVfQU5TV0VSID0gcGFja2V0LkFVVEhPUklUQVRJVkVfQU5TV0VSXG5ETlNTb2NrZXQuQVVUSEVOVElDX0RBVEEgPSBETlNTb2NrZXQucHJvdG90eXBlLkFVVEhFTlRJQ19EQVRBID0gcGFja2V0LkFVVEhFTlRJQ19EQVRBXG5ETlNTb2NrZXQuQ0hFQ0tJTkdfRElTQUJMRUQgPSBETlNTb2NrZXQucHJvdG90eXBlLkNIRUNLSU5HX0RJU0FCTEVEID0gcGFja2V0LkNIRUNLSU5HX0RJU0FCTEVEXG5cbmZ1bmN0aW9uIG5vb3AgKCkge1xufVxuXG5mdW5jdGlvbiBpc0xpc3RlbmluZyAoc29ja2V0KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHNvY2tldC5hZGRyZXNzKCkucG9ydCAhPT0gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuIl0sIm5hbWVzIjpbImRncmFtIiwicGFja2V0IiwiRXZlbnRFbWl0dGVyIiwiQnVmZmVyIiwiRE5TU29ja2V0IiwiY29uc3RydWN0b3IiLCJvcHRzIiwicmV0cmllcyIsInVuZGVmaW5lZCIsInRpbWVvdXQiLCJ0aW1lb3V0Q2hlY2tzIiwiZGVzdHJveWVkIiwiaW5mbGlnaHQiLCJyYXciLCJtYXhRdWVyaWVzIiwibWF4UmVkaXJlY3RzIiwic29ja2V0IiwiY3JlYXRlU29ja2V0IiwiX2lkIiwiTWF0aCIsImNlaWwiLCJyYW5kb20iLCJfcXVlcmllcyIsIkFycmF5IiwiZmlsbCIsIl9pbnRlcnZhbCIsIm9uIiwiZXJyIiwiY29kZSIsImVtaXQiLCJtZXNzYWdlIiwicmluZm8iLCJfb25tZXNzYWdlIiwib25saXN0ZW5pbmciLCJzZXRJbnRlcnZhbCIsIl9vbnRpbWVvdXRDaGVjayIsImlzTGlzdGVuaW5nIiwiYWRkcmVzcyIsImJpbmQiLCJhcmdzIiwibGVuZ3RoIiwib25jZSIsInNsaWNlIiwiZGVzdHJveSIsIm9uY2xvc2UiLCJjbGVhckludGVydmFsIiwiY2xvc2UiLCJpIiwicSIsImNhbGxiYWNrIiwiRXJyb3IiLCJub3ciLCJEYXRlIiwiZmlyc3RUcnkiLCJ0cmllcyIsInF1ZXJ5IiwicG9ydCIsImhvc3QiLCJzZW5kIiwiYnVmZmVyIiwiaXNBcnJheSIsImZsb29yIiwiX3Nob3VsZFJlZGlyZWN0IiwicmVzdWx0IiwicXVlc3Rpb25zIiwiYW5zd2VycyIsImZpbHRlciIsImUiLCJ0eXBlIiwicmVkaXJlY3RzIiwiY25hbWVyZXN1bHRzIiwiaWQiLCJfZ2V0TmV4dEVtcHR5SWQiLCJmbGFncyIsIlJFQ1VSU0lPTl9ERVNJUkVEIiwibmFtZSIsImRhdGEiLCJhbGxvYyIsImVuY29kaW5nTGVuZ3RoIiwiZW5jb2RlIiwiZGVjb2RlIiwidW5yZWYiLCJyZWYiLCJyZXNwb25zZSIsImNhbmNlbCIsInNldFJldHJpZXMiLCJpZHRyaWVzIiwibm9ybWFsaXplZElkIiwiY2IiLCJub29wIiwicHJvdG90eXBlIiwiUkVDVVJTSU9OX0FWQUlMQUJMRSIsIlRSVU5DQVRFRF9SRVNQT05TRSIsIkFVVEhPUklUQVRJVkVfQU5TV0VSIiwiQVVUSEVOVElDX0RBVEEiLCJDSEVDS0lOR19ESVNBQkxFRCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@leichtgewicht/dns-socket/index.mjs\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/@leichtgewicht/ip-codec/index.mjs":
|
|
/*!********************************************************!*\
|
|
!*** ./node_modules/@leichtgewicht/ip-codec/index.mjs ***!
|
|
\********************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ decode: () => (/* binding */ decode),\n/* harmony export */ encode: () => (/* binding */ encode),\n/* harmony export */ familyOf: () => (/* binding */ familyOf),\n/* harmony export */ name: () => (/* binding */ name),\n/* harmony export */ sizeOf: () => (/* binding */ sizeOf),\n/* harmony export */ v4: () => (/* binding */ v4),\n/* harmony export */ v6: () => (/* binding */ v6)\n/* harmony export */ });\nconst v4Regex = /^(\\d{1,3}\\.){3,3}\\d{1,3}$/;\nconst v4Size = 4;\nconst v6Regex = /^(::)?(((\\d{1,3}\\.){3}(\\d{1,3}){1})?([0-9a-f]){0,4}:{0,2}){1,8}(::)?$/i;\nconst v6Size = 16;\nconst v4 = {\n name: \"v4\",\n size: v4Size,\n isFormat: (ip)=>v4Regex.test(ip),\n encode (ip, buff, offset) {\n offset = ~~offset;\n buff = buff || new Uint8Array(offset + v4Size);\n const max = ip.length;\n let n = 0;\n for(let i = 0; i < max;){\n const c = ip.charCodeAt(i++);\n if (c === 46) {\n buff[offset++] = n;\n n = 0;\n } else {\n n = n * 10 + (c - 48);\n }\n }\n buff[offset] = n;\n return buff;\n },\n decode (buff, offset) {\n offset = ~~offset;\n return `${buff[offset++]}.${buff[offset++]}.${buff[offset++]}.${buff[offset]}`;\n }\n};\nconst v6 = {\n name: \"v6\",\n size: v6Size,\n isFormat: (ip)=>ip.length > 0 && v6Regex.test(ip),\n encode (ip, buff, offset) {\n offset = ~~offset;\n let end = offset + v6Size;\n let fill = -1;\n let hexN = 0;\n let decN = 0;\n let prevColon = true;\n let useDec = false;\n buff = buff || new Uint8Array(offset + v6Size);\n // Note: This algorithm needs to check if the offset\n // could exceed the buffer boundaries as it supports\n // non-standard compliant encodings that may go beyond\n // the boundary limits. if (offset < end) checks should\n // not be necessary...\n for(let i = 0; i < ip.length; i++){\n let c = ip.charCodeAt(i);\n if (c === 58) {\n if (prevColon) {\n if (fill !== -1) {\n // Not Standard! (standard doesn't allow multiple ::)\n // We need to treat\n if (offset < end) buff[offset] = 0;\n if (offset < end - 1) buff[offset + 1] = 0;\n offset += 2;\n } else if (offset < end) {\n // :: in the middle\n fill = offset;\n }\n } else {\n // : ends the previous number\n if (useDec === true) {\n // Non-standard! (ipv4 should be at end only)\n // A ipv4 address should not be found anywhere else but at\n // the end. This codec also support putting characters\n // after the ipv4 address..\n if (offset < end) buff[offset] = decN;\n offset++;\n } else {\n if (offset < end) buff[offset] = hexN >> 8;\n if (offset < end - 1) buff[offset + 1] = hexN & 0xff;\n offset += 2;\n }\n hexN = 0;\n decN = 0;\n }\n prevColon = true;\n useDec = false;\n } else if (c === 46) {\n if (offset < end) buff[offset] = decN;\n offset++;\n decN = 0;\n hexN = 0;\n prevColon = false;\n useDec = true;\n } else {\n prevColon = false;\n if (c >= 97) {\n c -= 87 // a-f ... 97~102 -87 => 10~15\n ;\n } else if (c >= 65) {\n c -= 55 // A-F ... 65~70 -55 => 10~15\n ;\n } else {\n c -= 48 // 0-9 ... starting from charCode 48\n ;\n decN = decN * 10 + c;\n }\n // We don't know yet if its a dec or hex number\n hexN = (hexN << 4) + c;\n }\n }\n if (prevColon === false) {\n // Commiting last number\n if (useDec === true) {\n if (offset < end) buff[offset] = decN;\n offset++;\n } else {\n if (offset < end) buff[offset] = hexN >> 8;\n if (offset < end - 1) buff[offset + 1] = hexN & 0xff;\n offset += 2;\n }\n } else if (fill === 0) {\n // Not Standard! (standard doesn't allow multiple ::)\n // This means that a : was found at the start AND end which means the\n // end needs to be treated as 0 entry...\n if (offset < end) buff[offset] = 0;\n if (offset < end - 1) buff[offset + 1] = 0;\n offset += 2;\n } else if (fill !== -1) {\n // Non-standard! (standard doens't allow multiple ::)\n // Here we find that there has been a :: somewhere in the middle\n // and the end. To treat the end with priority we need to move all\n // written data two bytes to the right.\n offset += 2;\n for(let i = Math.min(offset - 1, end - 1); i >= fill + 2; i--){\n buff[i] = buff[i - 2];\n }\n buff[fill] = 0;\n buff[fill + 1] = 0;\n fill = offset;\n }\n if (fill !== offset && fill !== -1) {\n // Move the written numbers to the end while filling the everything\n // \"fill\" to the bytes with zeros.\n if (offset > end - 2) {\n // Non Standard support, when the cursor exceeds bounds.\n offset = end - 2;\n }\n while(end > fill){\n buff[--end] = offset < end && offset > fill ? buff[--offset] : 0;\n }\n } else {\n // Fill the rest with zeros\n while(offset < end){\n buff[offset++] = 0;\n }\n }\n return buff;\n },\n decode (buff, offset) {\n offset = ~~offset;\n let result = \"\";\n for(let i = 0; i < v6Size; i += 2){\n if (i !== 0) {\n result += \":\";\n }\n result += (buff[offset + i] << 8 | buff[offset + i + 1]).toString(16);\n }\n return result.replace(/(^|:)0(:0)*:0(:|$)/, \"$1::$3\").replace(/:{3,4}/, \"::\");\n }\n};\nconst name = \"ip\";\nfunction sizeOf(ip) {\n if (v4.isFormat(ip)) return v4.size;\n if (v6.isFormat(ip)) return v6.size;\n throw Error(`Invalid ip address: ${ip}`);\n}\nfunction familyOf(string) {\n return sizeOf(string) === v4.size ? 1 : 2;\n}\nfunction encode(ip, buff, offset) {\n offset = ~~offset;\n const size = sizeOf(ip);\n if (typeof buff === \"function\") {\n buff = buff(offset + size);\n }\n if (size === v4.size) {\n return v4.encode(ip, buff, offset);\n }\n return v6.encode(ip, buff, offset);\n}\nfunction decode(buff, offset, length) {\n offset = ~~offset;\n length = length || buff.length - offset;\n if (length === v4.size) {\n return v4.decode(buff, offset, length);\n }\n if (length === v6.size) {\n return v6.decode(buff, offset, length);\n }\n throw Error(`Invalid buffer size needs to be ${v4.size} for v4 or ${v6.size} for v6.`);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQGxlaWNodGdld2ljaHQvaXAtY29kZWMvaW5kZXgubWpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxNQUFNQSxVQUFVO0FBQ2hCLE1BQU1DLFNBQVM7QUFDZixNQUFNQyxVQUFVO0FBQ2hCLE1BQU1DLFNBQVM7QUFFUixNQUFNQyxLQUFLO0lBQ2hCQyxNQUFNO0lBQ05DLE1BQU1MO0lBQ05NLFVBQVVDLENBQUFBLEtBQU1SLFFBQVFTLElBQUksQ0FBQ0Q7SUFDN0JFLFFBQVFGLEVBQUUsRUFBRUcsSUFBSSxFQUFFQyxNQUFNO1FBQ3RCQSxTQUFTLENBQUMsQ0FBQ0E7UUFDWEQsT0FBT0EsUUFBUSxJQUFJRSxXQUFXRCxTQUFTWDtRQUN2QyxNQUFNYSxNQUFNTixHQUFHTyxNQUFNO1FBQ3JCLElBQUlDLElBQUk7UUFDUixJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSUgsS0FBTTtZQUN4QixNQUFNSSxJQUFJVixHQUFHVyxVQUFVLENBQUNGO1lBQ3hCLElBQUlDLE1BQU0sSUFBSTtnQkFDWlAsSUFBSSxDQUFDQyxTQUFTLEdBQUdJO2dCQUNqQkEsSUFBSTtZQUNOLE9BQU87Z0JBQ0xBLElBQUlBLElBQUksS0FBTUUsQ0FBQUEsSUFBSSxFQUFDO1lBQ3JCO1FBQ0Y7UUFDQVAsSUFBSSxDQUFDQyxPQUFPLEdBQUdJO1FBQ2YsT0FBT0w7SUFDVDtJQUNBUyxRQUFRVCxJQUFJLEVBQUVDLE1BQU07UUFDbEJBLFNBQVMsQ0FBQyxDQUFDQTtRQUNYLE9BQU8sQ0FBQyxFQUFFRCxJQUFJLENBQUNDLFNBQVMsQ0FBQyxDQUFDLEVBQUVELElBQUksQ0FBQ0MsU0FBUyxDQUFDLENBQUMsRUFBRUQsSUFBSSxDQUFDQyxTQUFTLENBQUMsQ0FBQyxFQUFFRCxJQUFJLENBQUNDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hGO0FBQ0YsRUFBQztBQUVNLE1BQU1TLEtBQUs7SUFDaEJoQixNQUFNO0lBQ05DLE1BQU1IO0lBQ05JLFVBQVVDLENBQUFB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dEIsT0FBT2UsR0FBR0QsTUFBTSxDQUFDVCxNQUFNQyxRQUFRRztJQUNqQztJQUNBLE1BQU1tQixNQUFNLENBQUMsZ0NBQWdDLEVBQUU5QixHQUFHRSxJQUFJLENBQUMsV0FBVyxFQUFFZSxHQUFHZixJQUFJLENBQUMsUUFBUSxDQUFDO0FBQ3ZGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZmx1c2gtbm90ZXMvLi9ub2RlX21vZHVsZXMvQGxlaWNodGdld2ljaHQvaXAtY29kZWMvaW5kZXgubWpzP2Y5M2MiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgdjRSZWdleCA9IC9eKFxcZHsxLDN9XFwuKXszLDN9XFxkezEsM30kL1xuY29uc3QgdjRTaXplID0gNFxuY29uc3QgdjZSZWdleCA9IC9eKDo6KT8oKChcXGR7MSwzfVxcLil7M30oXFxkezEsM30pezF9KT8oWzAtOWEtZl0pezAsNH06ezAsMn0pezEsOH0oOjopPyQvaVxuY29uc3QgdjZTaXplID0gMTZcblxuZXhwb3J0IGNvbnN0IHY0ID0ge1xuICBuYW1lOiAndjQnLFxuICBzaXplOiB2NFNpemUsXG4gIGlzRm9ybWF0OiBpcCA9PiB2NFJlZ2V4LnRlc3QoaXApLFxuICBlbmNvZGUgKGlwLCBidWZmLCBvZmZzZXQpIHtcbiAgICBvZmZzZXQgPSB+fm9mZnNldFxuICAgIGJ1ZmYgPSBidWZmIHx8IG5ldyBVaW50OEFycmF5KG9mZnNldCArIHY0U2l6ZSlcbiAgICBjb25zdCBtYXggPSBpcC5sZW5ndGhcbiAgICBsZXQgbiA9IDBcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1heDspIHtcbiAgICAgIGNvbnN0IGMgPSBpcC5jaGFyQ29kZUF0KGkrKylcbiAgICAgIGlmIChjID09PSA0NikgeyAvLyBcIi5cIlxuICAgICAgICBidWZmW29mZnNldCsrXSA9IG5cbiAgICAgICAgbiA9IDBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG4gPSBuICogMTAgKyAoYyAtIDQ4KVxuICAgICAgfVxuICAgIH1cbiAgICBidWZmW29mZnNldF0gPSBuXG4gICAgcmV0dXJuIGJ1ZmZcbiAgfSxcbiAgZGVjb2RlIChidWZmLCBvZmZzZXQpIHtcbiAgICBvZmZzZXQgPSB+fm9mZnNldFxuICAgIHJldHVybiBgJHtidWZmW29mZnNldCsrXX0uJHtidWZmW29mZnNldCsrXX0uJHtidWZmW29mZnNldCsrXX0uJHtidWZmW29mZnNldF19YFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCB2NiA9IHtcbiAgbmFtZTogJ3Y2JyxcbiAgc2l6ZTogdjZTaXplLFxuICBpc0Zvcm1hdDogaXAgPT4gaXAubGVuZ3RoID4gMCAmJiB2NlJlZ2V4LnRlc3QoaXApLFxuICBlbmNvZGUgKGlwLCBidWZmLCBvZmZzZXQpIHtcbiAgICBvZmZzZXQgPSB+fm9mZnNldFxuICAgIGxldCBlbmQgPSBvZmZzZXQgKyB2NlNpemVcbiAgICBsZXQgZmlsbCA9IC0xXG4gICAgbGV0IGhleE4gPSAwXG4gICAgbGV0IGRlY04gPSAwXG4gICAgbGV0IHByZXZDb2xvbiA9IHRydWVcbiAgICBsZXQgdXNlRGVjID0gZmFsc2VcbiAgICBidWZmID0gYnVmZiB8fCBuZXcgVWludDhBcnJheShvZmZzZXQgKyB2NlNpemUpXG4gICAgLy8gTm90ZTogVGhpcyBhbGdvcml0aG0gbmVlZHMgdG8gY2hlY2sgaWYgdGhlIG9mZnNldFxuICAgIC8vIGNvdWxkIGV4Y2VlZCB0aGUgYnVmZmVyIGJvdW5kYXJpZXMgYXMgaXQgc3VwcG9ydHNcbiAgICAvLyBub24tc3RhbmRhcmQgY29tcGxpYW50IGVuY29kaW5ncyB0aGF0IG1heSBnbyBiZXlvbmRcbiAgICAvLyB0aGUgYm91bmRhcnkgbGltaXRzLiBpZiAob2Zmc2V0IDwgZW5kKSBjaGVja3Mgc2hvdWxkXG4gICAgLy8gbm90IGJlIG5lY2Vzc2FyeS4uLlxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXAubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBjID0gaXAuY2hhckNvZGVBdChpKVxuICAgICAgaWYgKGMgPT09IDU4KSB7IC8vIDpcbiAgICAgICAgaWYgKHByZXZDb2xvbikge1xuICAgICAgICAgIGlmIChmaWxsICE9PSAtMSkge1xuICAgICAgICAgICAgLy8gTm90IFN0YW5kYXJkISAoc3RhbmRhcmQgZG9lc24ndCBhbGxvdyBtdWx0aXBsZSA6OilcbiAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gdHJlYXRcbiAgICAgICAgICAgIGlmIChvZmZzZXQgPCBlbmQpIGJ1ZmZbb2Zmc2V0XSA9IDBcbiAgICAgICAgICAgIGlmIChvZmZzZXQgPCBlbmQgLSAxKSBidWZmW29mZnNldCArIDFdID0gMFxuICAgICAgICAgICAgb2Zmc2V0ICs9IDJcbiAgICAgICAgICB9IGVsc2UgaWYgKG9mZnNldCA8IGVuZCkge1xuICAgICAgICAgICAgLy8gOjogaW4gdGhlIG1pZGRsZVxuICAgICAgICAgICAgZmlsbCA9IG9mZnNldFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyA6IGVuZHMgdGhlIHByZXZpb3VzIG51bWJlclxuICAgICAgICAgIGlmICh1c2VEZWMgPT09IHRydWUpIHtcbiAgICAgICAgICAgIC8vIE5vbi1zdGFuZGFyZCEgKGlwdjQgc2hvdWxkIGJlIGF0IGVuZCBvbmx5KVxuICAgICAgICAgICAgLy8gQSBpcHY0IGFkZHJlc3Mgc2hvdWxkIG5vdCBiZSBmb3VuZCBhbnl3aGVyZSBlbHNlIGJ1dCBhdFxuICAgICAgICAgICAgLy8gdGhlIGVuZC4gVGhpcyBjb2RlYyBhbHNvIHN1cHBvcnQgcHV0dGluZyBjaGFyYWN0ZXJzXG4gICAgICAgICAgICAvLyBhZnRlciB0aGUgaXB2NCBhZGRyZXNzLi5cbiAgICAgICAgICAgIGlmIChvZmZzZXQgPCBlbmQpIGJ1ZmZbb2Zmc2V0XSA9IGRlY05cbiAgICAgICAgICAgIG9mZnNldCsrXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChvZmZzZXQgPCBlbmQpIGJ1ZmZbb2Zmc2V0XSA9IGhleE4gPj4gOFxuICAgICAgICAgICAgaWYgKG9mZnNldCA8IGVuZCAtIDEpIGJ1ZmZbb2Zmc2V0ICsgMV0gPSBoZXhOICYgMHhmZlxuICAgICAgICAgICAgb2Zmc2V0ICs9IDJcbiAgICAgICAgICB9XG4gICAgICAgICAgaGV4TiA9IDBcbiAgICAgICAgICBkZWNOID0gMFxuICAgICAgICB9XG4gICAgICAgIHByZXZDb2xvbiA9IHRydWVcbiAgICAgICAgdXNlRGVjID0gZmFsc2VcbiAgICAgIH0gZWxzZSBpZiAoYyA9PT0gNDYpIHsgLy8gLiBpbmRpY2F0ZXMgSVBWNCBub3RhdGlvblxuICAgICAgICBpZiAob2Zmc2V0IDwgZW5kKSBidWZmW29mZnNldF0gPSBkZWNOXG4gICAgICAgIG9mZnNldCsrXG4gICAgICAgIGRlY04gPSAwXG4gICAgICAgIGhleE4gPSAwXG4gICAgICAgIHByZXZDb2xvbiA9IGZhbHNlXG4gICAgICAgIHVzZURlYyA9IHRydWVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByZXZDb2xvbiA9IGZhbHNlXG4gICAgICAgIGlmIChjID49IDk3KSB7XG4gICAgICAgICAgYyAtPSA4NyAvLyBhLWYgLi4uIDk3fjEwMiAtODcgPT4gMTB+MTVcbiAgICAgICAgfSBlbHNlIGlmIChjID49IDY1KSB7XG4gICAgICAgICAgYyAtPSA1NSAvLyBBLUYgLi4uIDY1fjcwIC01NSA9PiAxMH4xNVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGMgLT0gNDggLy8gMC05IC4uLiBzdGFydGluZyBmcm9tIGNoYXJDb2RlIDQ4XG4gICAgICAgICAgZGVjTiA9IGRlY04gKiAxMCArIGNcbiAgICAgICAgfVxuICAgICAgICAvLyBXZSBkb24ndCBrbm93IHlldCBpZiBpdHMgYSBkZWMgb3IgaGV4IG51bWJlclxuICAgICAgICBoZXhOID0gKGhleE4gPDwgNCkgKyBjXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChwcmV2Q29sb24gPT09IGZhbHNlKSB7XG4gICAgICAvLyBDb21taXRpbmcgbGFzdCBudW1iZXJcbiAgICAgIGlmICh1c2VEZWMgPT09IHRydWUpIHtcbiAgICAgICAgaWYgKG9mZnNldCA8IGVuZCkgYnVmZltvZmZzZXRdID0gZGVjTlxuICAgICAgICBvZmZzZXQrK1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKG9mZnNldCA8IGVuZCkgYnVmZltvZmZzZXRdID0gaGV4TiA+PiA4XG4gICAgICAgIGlmIChvZmZzZXQgPCBlbmQgLSAxKSBidWZmW29mZnNldCArIDFdID0gaGV4TiAmIDB4ZmZcbiAgICAgICAgb2Zmc2V0ICs9IDJcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZpbGwgPT09IDApIHtcbiAgICAgIC8vIE5vdCBTdGFuZGFyZCEgKHN0YW5kYXJkIGRvZXNuJ3QgYWxsb3cgbXVsdGlwbGUgOjopXG4gICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgYSA6IHdhcyBmb3VuZCBhdCB0aGUgc3RhcnQgQU5EIGVuZCB3aGljaCBtZWFucyB0aGVcbiAgICAgIC8vIGVuZCBuZWVkcyB0byBiZSB0cmVhdGVkIGFzIDAgZW50cnkuLi5cbiAgICAgIGlmIChvZmZzZXQgPCBlbmQpIGJ1ZmZbb2Zmc2V0XSA9IDBcbiAgICAgIGlmIChvZmZzZXQgPCBlbmQgLSAxKSBidWZmW29mZnNldCArIDFdID0gMFxuICAgICAgb2Zmc2V0ICs9IDJcbiAgICB9IGVsc2UgaWYgKGZpbGwgIT09IC0xKSB7XG4gICAgICAvLyBOb24tc3RhbmRhcmQhIChzdGFuZGFyZCBkb2Vucyd0IGFsbG93IG11bHRpcGxlIDo6KVxuICAgICAgLy8gSGVyZSB3ZSBmaW5kIHRoYXQgdGhlcmUgaGFzIGJlZW4gYSA6OiBzb21ld2hlcmUgaW4gdGhlIG1pZGRsZVxuICAgICAgLy8gYW5kIHRoZSBlbmQuIFRvIHRyZWF0IHRoZSBlbmQgd2l0aCBwcmlvcml0eSB3ZSBuZWVkIHRvIG1vdmUgYWxsXG4gICAgICAvLyB3cml0dGVuIGRhdGEgdHdvIGJ5dGVzIHRvIHRoZSByaWdodC5cbiAgICAgIG9mZnNldCArPSAyXG4gICAgICBmb3IgKGxldCBpID0gTWF0aC5taW4ob2Zmc2V0IC0gMSwgZW5kIC0gMSk7IGkgPj0gZmlsbCArIDI7IGktLSkge1xuICAgICAgICBidWZmW2ldID0gYnVmZltpIC0gMl1cbiAgICAgIH1cbiAgICAgIGJ1ZmZbZmlsbF0gPSAwXG4gICAgICBidWZmW2ZpbGwgKyAxXSA9IDBcbiAgICAgIGZpbGwgPSBvZmZzZXRcbiAgICB9XG4gICAgaWYgKGZpbGwgIT09IG9mZnNldCAmJiBmaWxsICE9PSAtMSkge1xuICAgICAgLy8gTW92ZSB0aGUgd3JpdHRlbiBudW1iZXJzIHRvIHRoZSBlbmQgd2hpbGUgZmlsbGluZyB0aGUgZXZlcnl0aGluZ1xuICAgICAgLy8gXCJmaWxsXCIgdG8gdGhlIGJ5dGVzIHdpdGggemVyb3MuXG4gICAgICBpZiAob2Zmc2V0ID4gZW5kIC0gMikge1xuICAgICAgICAvLyBOb24gU3RhbmRhcmQgc3VwcG9ydCwgd2hlbiB0aGUgY3Vyc29yIGV4Y2VlZHMgYm91bmRzLlxuICAgICAgICBvZmZzZXQgPSBlbmQgLSAyXG4gICAgICB9XG4gICAgICB3aGlsZSAoZW5kID4gZmlsbCkge1xuICAgICAgICBidWZmWy0tZW5kXSA9IG9mZnNldCA8IGVuZCAmJiBvZmZzZXQgPiBmaWxsID8gYnVmZlstLW9mZnNldF0gOiAwXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZpbGwgdGhlIHJlc3Qgd2l0aCB6ZXJvc1xuICAgICAgd2hpbGUgKG9mZnNldCA8IGVuZCkge1xuICAgICAgICBidWZmW29mZnNldCsrXSA9IDBcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGJ1ZmZcbiAgfSxcbiAgZGVjb2RlIChidWZmLCBvZmZzZXQpIHtcbiAgICBvZmZzZXQgPSB+fm9mZnNldFxuICAgIGxldCByZXN1bHQgPSAnJ1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdjZTaXplOyBpICs9IDIpIHtcbiAgICAgIGlmIChpICE9PSAwKSB7XG4gICAgICAgIHJlc3VsdCArPSAnOidcbiAgICAgIH1cbiAgICAgIHJlc3VsdCArPSAoYnVmZltvZmZzZXQgKyBpXSA8PCA4IHwgYnVmZltvZmZzZXQgKyBpICsgMV0pLnRvU3RyaW5nKDE2KVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0XG4gICAgICAucmVwbGFjZSgvKF58OikwKDowKSo6MCg6fCQpLywgJyQxOjokMycpXG4gICAgICAucmVwbGFjZSgvOnszLDR9LywgJzo6JylcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgbmFtZSA9ICdpcCdcbmV4cG9ydCBmdW5jdGlvbiBzaXplT2YgKGlwKSB7XG4gIGlmICh2NC5pc0Zvcm1hdChpcCkpIHJldHVybiB2NC5zaXplXG4gIGlmICh2Ni5pc0Zvcm1hdChpcCkpIHJldHVybiB2Ni5zaXplXG4gIHRocm93IEVycm9yKGBJbnZhbGlkIGlwIGFkZHJlc3M6ICR7aXB9YClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZhbWlseU9mIChzdHJpbmcpIHtcbiAgcmV0dXJuIHNpemVPZihzdHJpbmcpID09PSB2NC5zaXplID8gMSA6IDJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZSAoaXAsIGJ1ZmYsIG9mZnNldCkge1xuICBvZmZzZXQgPSB+fm9mZnNldFxuICBjb25zdCBzaXplID0gc2l6ZU9mKGlwKVxuICBpZiAodHlwZW9mIGJ1ZmYgPT09ICdmdW5jdGlvbicpIHtcbiAgICBidWZmID0gYnVmZihvZmZzZXQgKyBzaXplKVxuICB9XG4gIGlmIChzaXplID09PSB2NC5zaXplKSB7XG4gICAgcmV0dXJuIHY0LmVuY29kZShpcCwgYnVmZiwgb2Zmc2V0KVxuICB9XG4gIHJldHVybiB2Ni5lbmNvZGUoaXAsIGJ1ZmYsIG9mZnNldClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZSAoYnVmZiwgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgb2Zmc2V0ID0gfn5vZmZzZXRcbiAgbGVuZ3RoID0gbGVuZ3RoIHx8IChidWZmLmxlbmd0aCAtIG9mZnNldClcbiAgaWYgKGxlbmd0aCA9PT0gdjQuc2l6ZSkge1xuICAgIHJldHVybiB2NC5kZWNvZGUoYnVmZiwgb2Zmc2V0LCBsZW5ndGgpXG4gIH1cbiAgaWYgKGxlbmd0aCA9PT0gdjYuc2l6ZSkge1xuICAgIHJldHVybiB2Ni5kZWNvZGUoYnVmZiwgb2Zmc2V0LCBsZW5ndGgpXG4gIH1cbiAgdGhyb3cgRXJyb3IoYEludmFsaWQgYnVmZmVyIHNpemUgbmVlZHMgdG8gYmUgJHt2NC5zaXplfSBmb3IgdjQgb3IgJHt2Ni5zaXplfSBmb3IgdjYuYClcbn1cbiJdLCJuYW1lcyI6WyJ2NFJlZ2V4IiwidjRTaXplIiwidjZSZWdleCIsInY2U2l6ZSIsInY0IiwibmFtZSIsInNpemUiLCJpc0Zvcm1hdCIsImlwIiwidGVzdCIsImVuY29kZSIsImJ1ZmYiLCJvZmZzZXQiLCJVaW50OEFycmF5IiwibWF4IiwibGVuZ3RoIiwibiIsImkiLCJjIiwiY2hhckNvZGVBdCIsImRlY29kZSIsInY2IiwiZW5kIiwiZmlsbCIsImhleE4iLCJkZWNOIiwicHJldkNvbG9uIiwidXNlRGVjIiwiTWF0aCIsIm1pbiIsInJlc3VsdCIsInRvU3RyaW5nIiwicmVwbGFjZSIsInNpemVPZiIsIkVycm9yIiwiZmFtaWx5T2YiLCJzdHJpbmciXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@leichtgewicht/ip-codec/index.mjs\n");
|
|
|
|
/***/ })
|
|
|
|
};
|
|
; |